View previous topic :: View next topic |
Author |
Message |
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Sun Feb 20, 2005 6:51 pm Post subject: دستور INSERT TABLE ساخت جدول |
|
|
اين دستور جزو دستورات DML است
اگر فرض كنيم كه جدول خود را با دستور CREATE TABLE درست كرده ايم . با استفاده از دستور INSERT ميتوانيم ان جدول را با داده ها پر كنيم .
نكته حائز اهميت و سوال برانگيز اين بخش انستكه دستورات SQL خاصيت CASE SENSITIVE را ندارند . اما هنگامي كه با استفاده از دستوراتي اينگونه داده اي را واردجدول ميكنيد . ان داده ها بنا به انچه شما وارد كرده ايد به جدول ميروند و خاصيت CASE SENSITIVE را دارند .
قالب اصلي دستور iNSERT چيزي شبيه به قالب زير است :
| INSERT INTO TABLE_NAME
VALUES (‘vALUE1’’VAlue2’ , [NULL]); |
طبق انچه در ظاهر قالب فوق ميبينيد . فيلدهاي جدول در يك ركورد با استفاده از دستور فوق پر ميشوند . طبق قانوني كه ميدانيم اگر از داده هاي كاراكتري و تاريخ استفاده ميكنيم بايد اين مقادير بين علامت نقل قول (كوتيشن) قرار بگيرند . اما اگر مقدار پوچ يا عددي وارد ميكنيد نبايد انرا بين علامت كوتيشن قرار دهيد .
براي وارد كردن مقدار پوچ كافيست از كلمه كليدي NULL بدون كوتيشن يا از دو كوتيشن بدون هيچ فاصله و يا كاراكتري استفاده كنيد ‘’ بصورتي كه ميبينيد ‘’ .
ترتيب قرارگيري فيلدهايي كه قرار است پر شوند نيز مهم است . يعني مقاديري كه با دستور iNSERT وارد جدول ميشوند بترتيب ورود در ركورد جدول بر اساس آرايشي كه در ساختار جدول فيلدها قرار گرفته اند قرار ميگيرند .
اما قالب كلي تر ديگري داريم كه در آن ذكر نام فيلدها نيز مي آيد كه قالب ان بشكل زير است :
| INSERT INTO table
(column-1, column-2, ... column-n)
VALUES
(value-1, value-2, ... value-n); |
نكته اي كه در قالب فوق بايد تذكر داده شود انستكه : نيازي نيست نام تمامي فيلدها وارد دستور شود بلكه تنها اندسته از فيلدهايي كه قرار است پر شود كافيست ( البته يادتان باشد كه ستونهايي كه نبايد مقدار پوچ داشته باشند را در دستور فوق از قلم نياندازيد ) در ضمن ترتيب ستونها در اين دستور مهم نيست . يعني مانند قالب اولي كه آورده شد و ترتيب ستونها مهم بود . در اين دستور ترتيب ستونها مهم نيست .
مثال زير را ببينيد :
| INSERT INTO supplier
(supplier_id, supplier_name)
VALUES
(24553, 'IBM'); |
در مثال فوق در جدولي به نام supplier در فيلدهاي supplier_id و supplier_name بترتيب مقدار عددي 24553 و مقدار كاراكتري IBM را قرار داديم .
در استفاده از دستور INSERT INTO شايد بخواهيد داده هايي را ازجدول ديگري وارد جدول فعلي خود بكنيد . كه در اين صورت در قالب دستور فوق از يك SUBQUERY استفاده ميكنيم . در اين زير پرس وجو با استفاده از دستور SELECT ميتوان از جدول ديگري اطلاعات را وارد كرد .
| INSERT INTO TABLENAME(‘COLUMN1’ , ‘COLUMN2’ , ‘COLUMNN’)
SELECT [*|FIELDNAMES] FROM ANOTHER_tbl [WHERE CONDITION][AND ANY OTHER FRAMES OF SELECT PROMPT] | اگر نميدانيد دستور SELECT چيست ميتوانيد به بخش مربوطه مراجعه كنيد .
مثال زير را ببينيد :
| INSERT INTO supplier
(supplier_id, supplier_name)
SELECT account_no, name
FROM customers
WHERE city = 'Newark'; | در جدول supplier در فيلدهاي supplier_id و supplier_name بترتيب فيلدهاي account_no و name را از جدول customers ا وارد ميكنيم كه نام شهر انها Newark است . در استفاده از زيرپرس و جو ها يادتان باشد كه نوع فيلدها نيز بايد با هم يكسان باشند .
در موارد بسياري پيش مي ايد كه فرد فراموش ميكند كه آيا با استفاده از دستور insert مقادير مورد نظرش را وارد كرده است يا خير ؟!
كه در اين موارد بايد از دستور شرطي exist كه بعدا مفصلا راجع به ان نيز بحث ميكنيم استفاده كنيد . مثال زير را ببينيد :
| INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE not exists (select * from clients
where clients.client_id = suppliers.supplier_id); | يا اگر خواستيد تنها يك مقدار را ببينيد كه وارد شده است يا نه به صورت زير دستور فوق را تغيير دهيد :
| INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where clients.client_id = 10345); |
|
|
Back to top |
|
|
emsii دوست آشناي سايت
Joined: 16 Dec 2005 Posts: 90 Location: tehran
|
Posted: Wed Apr 05, 2006 8:04 am Post subject: |
|
|
چه جوري ميشه از وجود يك جدول با دستور ات Sql مطلع شد |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Wed Apr 05, 2006 1:58 pm Post subject: |
|
|
اگه تو ويژوال بيسيك باشي ميشه بكمك error handler مطلع شد . |
|
Back to top |
|
|
emsii دوست آشناي سايت
Joined: 16 Dec 2005 Posts: 90 Location: tehran
|
Posted: Fri Apr 07, 2006 1:10 pm Post subject: |
|
|
چه جوري مثال بزن
ببين مثلا جدول tbl23 هست يا نه |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Sun Apr 09, 2006 7:51 am Post subject: |
|
|
با دستور sql جدول رو open ميكني . قبلش error handler رو ميزاري و كد ارور رو ميفهمي چيه . بعد با اون كد اررور ميتوني جدول جديد رو با create tableبسازي . |
|
Back to top |
|
|
|