سلام خدمت شما دوستان گرامی! در این قسمت از سری آموزش جامع زبان SQL در رابطه با دستور INSERT INTO و مقادیر NULL صحبت خواهیم کرد که می توان گفت از نکات مهم و اساسی در یادگیری زبان SQL به حساب می آیند.
همانطور که از نام دستور INSERT INTO (به معنی «به ... وارد کن») پیداست، از آن برای وارد کردن داده های جدید در جدول استفاده می شود. در واقع این دستور به دو روش نوشته می شود:
در روش اول هم نام ستون مشخص می شود و هم مقداری که می خواهیم آن را وارد جدول کنیم. به ساختار کلی زیر توجه کنید:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
روش دوم زمانی است که شما می خواهید مقداری را در تمام ستون ها وارد کنید که در این حالت عملا یک ردیف را وارد کرده اید.
اگر چنین قصدی دارید نیازی نیست که ستون ها را مشخص کنید چرا که مقادیر به ترتیب (از چپ به راست) در ستون ها قرار خواهند گرفت. تنها نکته ای که باید به آن توجه کنید این است که ترتیب مقادیری که به INSERT INTO می دهید با ترتیب ستون ها یکی باشد. به ساختار زیر توجه کنید:
INSERT INTO table_name VALUES (value1, value2, value3, ...);
حالا قبل از اینکه به سراغ مثال ها برویم باید نگاهی به پایگاه داده ی 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 را پاک کرده و دستور زیر را تایپ کنید:
SELECT * FROM CUSTOMERS
سپس دکمه ی Run SQL را بزنید و به آخر جدول بروید. می بینید یک ردیف به ردیف های ما اضافه شده و ردیف آخر همان ردیفی است که به تازگی اضافه شده است.
نکته: اگر دقت کنید به ستون CustomerID هیچ مقداری نداده ایم. چرا؟ به این دلیل که این ستون از نوع auto-increment (به معنی «افزایش خودکار») است. این نوع ستون ها خود به خود برای هر مشتری اضافه می شود و ما برایش مقداری تعیین نمی کنیم. در مورد auto-increment ها بعدا صحبت خواهیم کرد.
در مثال قبل به تمام ستون ها مقدار جدیدی دادیم و به عبارت دیگر یک ردیف کامل را به آن اضافه کردیم اما می توانیم تنها به بعضی از ستون ها مقدار بدهیم. در مثال زیر داده هایی را به ستون های CustomerName و City و Country اضافه می کنیم اما بقیه را خالی می گذاریم. ستون CustomerID نیز خود به خود بروزرسانی می شود (به نکته ی بالا رجوع کنید):
INSERT INTO Customers (CustomerName, City, Country) VALUES ('Cardinal', 'Stavanger', 'Norway');
برای اجرای این کد در پایگاه داده ی Northwind روی این لینک کلیک کنید.
اگر چنین کاری را انجام دهیم، جدول Customers به شکل زیر در می آید:
ستون هایی که از ما مقداری دریافت نکردند به صورت 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 آشنا شدیم. امیدوارم از این قسمت لذت برده باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.