دستور INSERT INTO
همانطور که از نام دستور INSERT INTO (به معنی «به … وارد کن») پیداست، از آن برای وارد کردن داده های جدید در جدول استفاده می شود. در واقع این دستور به دو روش نوشته می شود:
در روش اول هم نام ستون مشخص می شود و هم مقداری که می خواهیم آن را وارد جدول کنیم. به ساختار کلی زیر توجه کنید:
|
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
|
روش دوم زمانی است که شما می خواهید مقداری را در تمام ستون ها وارد کنید که در این حالت عملا یک ردیف را وارد کرده اید.
اگر چنین قصدی دارید نیازی نیست که ستون ها را مشخص کنید چرا که مقادیر به ترتیب (از چپ به راست) در ستون ها قرار خواهند گرفت. تنها نکته ای که باید به آن توجه کنید این است که ترتیب مقادیری که به INSERT INTO می دهید با ترتیب ستون ها یکی باشد. به ساختار زیر توجه کنید:
|
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
|
حالا قبل از اینکه به سراغ مثال ها برویم باید نگاهی به پایگاه داده ی Northwind بیندازیم:
قسمتی از جدول Customers در پایگاه داده ی Northwind
همانطور که قبلا گفته ایم، اساس کار ما در طول این دوره با این پایگاه داده است و امروز این قسمت را انتخاب کرده ایم. خب برویم به سراغ مثال ها …
به کد SQL زیر توجه کنید:
|
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
|
این کد ابتدا به سراغ جدول Customers می رود، سپس ستون های مختلفی را انتخاب می کند تا داده ها را داخل آن ها قرار دهد و بعد از آن داده ها را به VALUES می دهد. دقت کنید با اینکه این ساختار مطابق روش اولی است که به شما معرفی کردیم اما هنوز هم بر اساس ترتیب پیش می رود. یعنی چه از روش اول و چه از روش دوم استفاده کنید، همخوانی ترتیب در داده ها و ستون های جدول شما مهم است.
شما می توانید این دستور را در پایگاه داده ی آماده ی Northwind تست کنید: روی این لینک کلیک کنید.
پس از اینکه به لینک بالا رفتید و دستور SQL را اجرا کردید، به شما پیامی نشان داده می شود و می گوید که یک ردیف تحت تاثیر قرار گرفت. برای مشاهده ی ردیفی که اضافه شده است، در همان صفحه ای که هستید، کد های SQL را پاک کرده و دستور زیر را تایپ کنید:
سپس دکمه ی Run SQL را بزنید و به آخر جدول بروید. می بینید یک ردیف به ردیف های ما اضافه شده و ردیف آخر همان ردیفی است که به تازگی اضافه شده است.
نکته: اگر دقت کنید به ستون CustomerID هیچ مقداری نداده ایم. چرا؟ به این دلیل که این ستون از نوع auto-increment (به معنی «افزایش خودکار») است. این نوع ستون ها خود به خود برای هر مشتری اضافه می شود و ما برایش مقداری تعیین نمی کنیم. در مورد auto-increment ها بعدا صحبت خواهیم کرد.
در مثال قبل به تمام ستون ها مقدار جدیدی دادیم و به عبارت دیگر یک ردیف کامل را به آن اضافه کردیم اما می توانیم تنها به بعضی از ستون ها مقدار بدهیم. در مثال زیر داده هایی را به ستون های CustomerName و City و Country اضافه می کنیم اما بقیه را خالی می گذاریم. ستون CustomerID نیز خود به خود بروزرسانی می شود (به نکته ی بالا رجوع کنید):
|
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');
|
برای اجرای این کد در پایگاه داده ی Northwind روی این لینک کلیک کنید.
اگر چنین کاری را انجام دهیم، جدول Customers به شکل زیر در می آید:
جدول Customers پس از اجرای دستور بالا
ستون هایی که از ما مقداری دریافت نکردند به صورت null هستند! این چه معنی می دهد؟
مقادیر NULL
فیلدی که مقدارش null است یعنی هیچ مقداری ندارد. اگر فیلدی در جدول ما اختیاری (optional) باشد، می توان ردیف جدیدی در جدول اضافه کرد بدون اینکه به آن فیلد مقدار خاصی داده شود.
نکته: مقدار null با عدد صفر یا فیلدی که چند space (فضای خالی) دارد متفاوت است. وقتی 0 یا space داریم، در واقع مقداری وجود دارد اما null مخصوص فیلدی است که هنگام ساختِ یک ردیف یا رکورد هیچ مقداری دریافت نکند.
اگر می خواهید پایگاه داده ی خود را جست و جو کنید تا مقادیر null را پیدا کنید باید بدانید که این کار با اپراتور های = یا <> و امثالشان امکان پذیر نیست. برای این کار باید از اپراتور های IS NULL یا IS NOT NULL استفاده کنید.
ساختار کلی IS NULL
|
SELECT column_names
FROM table_name
WHERE column_name IS NULL;
|
ساختار کلی IS NOT NULL
|
SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
|
حالا بیایید مثال زیر را روی پایگاه داده ی خودمان انجام دهیم:
|
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;
|
برای اجرای این دستور روی پایگاه داده، به این لینک مراجعه کنید.
پس از اجرای این دستور میبینید ردیفی که قبلا ساخته ایم و دارای مقادیر null است بالا می آید (مشتری به نام Cardinal).
خلاصه ی مقاله
در این قسمت با دستور INSERT INTO و دو شکل رایج آن آشنا شدیم و در عمل مشاهده کردیم که ترتیب در مقادیری که به این دستور داده می شود، مهم هستند. همچنین با مفهوم مقادیر NULL و تفاوتشان با صفر یا space آشنا شدیم. امیدوارم از این قسمت لذت برده باشید.
منبع: سایت روکسو