دستور INSERT
درس حاضر به بررسی کامل و تخصصی دستور INSERT
در SQL Server اختصاص دارد و با ارائه توضیحاتی دقیق درباره ساختار این دستور، نحوه افزودن رکوردها به جداول پایگاه داده را تشریح میکند. در این آموزش، کاربران یاد میگیرند که چگونه مقادیر مشخصی را به ستونهای خاص یک جدول اضافه کنند، رکوردهای متعدد را بهصورت همزمان وارد نمایند و از قابلیتهای پیشرفته نظیر INSERT INTO ... SELECT
برای انتقال دادهها بین جداول بهره ببرند. علاوه بر این، مفاهیم مرتبط با مقادیر پیشفرض (DEFAULT) و مدیریت خطاها در صورت عدم تطابق با محدودیتهای جدول نیز بررسی میشود. این درس با هدف ارتقای توانمندیهای عملی متخصصان طراحی شده است و پایهای قدرتمند برای مدیریت دادهها و کوئرینویسی مؤثر در SQL Server فراهم میکند.
در این بخش من میخواهم با استفاده از Sql رکورد جدیدی رو در یک جدول که از قبل اون رو وارد پایگاه دادهمان کردیم و آنرا موجود داریم، ایجاد کنم و در این آموزش اینکار رو با استفاده از دستور اجرایی insert انجام میدهم. insert یک رکورد جدیدی رو در جدول موجود ایجاد میکند.
برای مثال من دوست دارم که با جدول HumanResources.Department کار کنم.
این کمی ساده تر از جداول قبلی است که ما با آنها کار کردیم.
من یک query جدید رو ایجاد میکنم و دستور SELECT * FROM HumanResources.Department رو انجام میدهم.
همان طور که قبلاً گفتیم * بعد از select به معنی انتخاب همه ستونهای جدول است. بنابراین فقط ما میتوانیم داده ها رو نگاه کنیم و ببینیم که به چه چیز میرسیم.
هنگامی که ما اون رو اجرا میکنیم، جدولی با 4 فیلد DepartmentID، Name، GroupName و ModifiedDatمیبینیم.
بنابراین همه ستونها خیلی سر راست هستند.
حالا یک query جدیدی رو باز میکنم و در اون یک دستور insert رو ایجاد میکنم. کلمه کلیدی insert into رو با یک space بین آن ایجاد میکنم insert into.
بعد از اون نام جدولی که در اون عمل insert رو میخواهم انجام بدهم رو وارد میکنم که در اینجا نام جدول HumanResources.Department هست.
بعد از اون باید لیستی از همه فیلدهایی که میخواهم وارد کنم رو، بنویسم.
من میتوانم نما درختی HumanResources.Department رو با کلیک روی علامت + کنارش گسترش بدهم.
مجدداً اگر من ساختار درختی columns رو با کلیک بر روی + گسترش بدهم، نرم افزار لیست همه سلولها رو به من میدهد. بنابراین هر یک از این ستون ها رو برای اعمال دستور insert to امتحان میکنیم.
بنابراین من همه اونها رو تایپ میکنم و اونها رو با استفاده از کاما جدا میکنم یا اگر هم نخواستیم تایپشان کنیم، میتوانیم اونها رو از Object Explorer بکشیم.
فقط مطمئن باشید که همه اونها با استفاده از کاما از هم جدا میشوند و بعد از اون پرانتز رو میبندیم.
در خط بعدی باید کلمه کلیدی value رو وارد کنیم، در واقع مقدارهایی رو میخواهم برای ستون هایی که وارد کردم، اختصاص بدهم، به عبارت دیگر منظور از value همان مقداری است که به ستونها در سلولهای سطری اختصاص داده میشود.
برای DepartmentID مقدار99 میگذارم و بعد از اون یک کاما میگذارم.
برای فیلد name، ‘Database Administrators’ که در تک کوتیشن هست و بعد از اون کاما. برای GroupName، ‘IT’ که دوباره در تک کوتیشن قرار دارد.
یک کاما و حالا هم یک تاریخی رو برای ModifiedDate نیاز دارم که دوباره در تک کوتیشن قرار دارد.
اجرایش میکنم و میدانم که یک اروری میدهد. ارور for the identity column ‘Department'””Cannot insert a value.
این بخاطر این است که DepartmentID یک ستون identity هست که به صورت اتوماتیک تولید میشود و دستگاه یک مقدار خاصی برای تعریفش رو از من نمیخواهد و خودش مقدار خودش رو تولید میکند.
بنابراین من دستور insert ام رو اصلاح میکنم. DepartmentID و مقداری که برای اون وارد کردم رو از لیستم خارج میکنم و دوباره امتحان میکنم.
اکنون در سمت چپ برای 3 ستونی که در دستورمان سفارشی کردیم 3 مقدار جدید ایجاد شد.
دوباره که دستور رو اجرا کنم، پیام “1 Row(s) affected” رو میبینم و این خوب است چون معنا این پیام این است که سطری که میخواستیم، اضاف شد. در واقع به من جدول رو نشان نمیدهد.
به منظور انجام این کار من میتوانم به پنجره query دیگر بروم که قبلاً این رو به صورت باز شده دارم جایی که دستور SELECT* from HumanResources.Department رو انجام دادیم.
روی دکمه Execute کلیک میکنم و در پایین Database Administrators با GroupName و ModifiedDate که ما مشخص کردیم، اضافه و مقدار 18 به صورت اتوماتیک برای اون عرضه شده. در دستگاه شما ممکن است که به صورت اتوماتیک با یک مقدار متفاوت اضافه بشود. این شمارهها باید همیشه به صورت منحصر به فرد باشند، بنابراین DepartmentID دیگری که مقدار اون در پایگاه داده من، 18 باشد، وجود ندارد.
بر میگردم به دستور insert نگاه میکنیم، دوباره میگویم این یک نمونه از دستور INSERT INTO هست. در برخی دستورات sql واژه into اختیاری هست. بنابراین شما میتوانید فقط واژه insert رو به تنهایی بنویسید و اون رو به صورت مشابه به نتیجه برسانید.
اما من دستور رو با insert into گفتم که نام جدول و بعد از اون در پرانتز همه ستون ها رو که میخواستم اضافه کنم، لیست کردم و کلمه کلیدی value و دوباره در پرانتزها همه مقادیر که میخواستیم در ستون های مربوطi قرار بگیرند رو در همان جهت قرار گیری ستون ها گذاشتم.
بنابراین مقادیر من باید در جهت مشابه ستونهایی باشد، که در سمت راست و بالا، لیست کردم و این یک بیانیه اساسی برای دستور insert در اس کیو ال هست و شما با یک مثال از دستور اساسی insert آشنا شدید.