الجداول هي واحدة من المكونات الأساسية لكل نظام قواعد بيانات علاقية وSQL Server ليس استثناءً. تخزن الجداول البيانات التي يستخدمها محرك قاعدة البيانات العلاقية للاستعلامات والتقارير والعمليات الأخرى. في هذه المقالة، سأريك كيفية تعديل البيانات من جدول SQL Server باستخدام T-SQL INSERT، T-SQL UPDATE، T-SQL DELETE و TRUNCATE.
في مقالتي السابقة، Essential SQL Server: إنشاء قواعد بيانات وجداول، أظهرت كيف يمكنك إنشاء قواعد بيانات وجداول SQL Server الأساسية. في هذه المقالة، سنلقي نظرة على كيفية ملء تلك الجداول عن طريق إضافة الصفوف وتحديثها وحذفها.
I created the following table in my previous article. The syntax from this simple example DDL command shows that the table has three columns and each of them uses a different data type:
CREATE TABLE dbo.myLogins ( id INT NOT NULL PRIMARY KEY, name VARCHAR (20), login_date DATETIME );
في هذه المقالة، سنلقي نظرة على إضافة البيانات إلى جدول باستخدام عبارة INSERT، تعديل البيانات في جدول باستخدام عبارة UPDATE، وحذف البيانات باستخدام عبارة DELETE. يمكن حذف البيانات في جدول بطرق مختلفة، لذلك سنغطي أيضًا الفرق بين استخدام عبارة DELETE وعبارة TRUNCATE.
إضافة صفوف باستخدام T-SQL INSERT
يمكنك إضافة بيانات إلى جدول SQL Server بعدة طرق:
- يمكنك استخدام مصمم الاستعلام التفاعلي لـ إدارة SQL Server (SSMS) لإضافة صفوف إلى جدول
- يمكنك استخدام باور شيل
- يمكنك استخدام معالج استيراد وتصدير خادم SQL أو Integration Services لاستيراد البيانات إلى جدول
- يمكنك استخدام أداة سطر الأوامر أداة bcp.
ومع ذلك ، فإن الطريقة الأكثر شيوعًا لإضافة البيانات إلى جدول خادم SQL هي باستخدام عبارة INSERT في SQL. تضيف عبارة INSERT في T-SQL صفًا أو أكثر إلى جدول خادم SQL.
يوضح المثال التالي كيفية إضافة صف إلى الجدول المثال الذي رأيته سابقًا:
INSERT INTO myLogins (id, name, login_date) VALUES (2, 'John Smith', '3-12-2023')
هنا، تعرف العبارة INSERT INTO الجدول الذي سيحتوي على الصفوف المدخلة. بعد ذلك، داخل القوسين، يمكنك رؤية قائمة الأعمدة التي ستستخدم. تستخدم هذه القائمة جميع الأعمدة في الجدول، ولكنك لست مضطرًا للقيام بذلك.
وأخيرًا، توفر عبارة VALUES القيم الفعلية التي ستُدخل في الجدول. كاختصار، يمكنك حذف قائمة الأعمدة في عبارة INSERT. على سبيل المثال، تقوم العبارة INSERT التالية بتنفيذ نفس الوظيفة تمامًا كما في المثال السابق:
INSERT INTO myLogins VALUES (2, 'John Smith', '3-12-2023')

إذا لم يتم تعريف العمود باستعمال كلمات NOT NULL، يمكنك أيضًا تحديد NULL بوضوح في قائمة القيم لأحد الأعمال الإدراجية. بشكل مختلف، عندما لا ترغب في تحديد قيمة لعمود ما، يمكنك تخلي عن شروط العمود وقيمته في القائمة، مما سيسبب تضمين قيمة NULL فيه.
إدراج أعمد من نتائج قوائم
بالإضافة إلى استخدام الأعمال الإدراجية الاستانداردية للT-SQL مع شرط القيم ، يمكنك أيضًا إضافة أعمد إلى جدول نتيجة قوائم الSQL. القوائمة قد تكون بسيطة أو معقدة ويمكن إدراج نتائجها في الجدول الهدف.
على سبيل المثال، لتنسخ أعمد من جدول myLogins2 إلى جدول myLogins يمكنك استخدام قوائمة مثل التالية تمامًا:
INSERT INTO myLogins (id, name, login_date) SELECT id, name, login_date FROM myLogins2 where id > 50.
هذا المثال يستخدم نتائج محاولة في جدول myLogins2 لإدراج أعمد في جدول myLogins. يتم تحميل البيانات في الثلاث أعمود في الجدول. المحاولة تستخدم قوائمة SELECT لتحديد الثلاث أعمود من جدول آخر يدعى myLogins2.
ومع ذلك ، في هذا المثال ، ستتم إرجاع وإضافة الصفوف فقط التي تحتوي على قيمة معرف أكبر من 50 إلى جدول الدخول الخاص بي. في هذا المثال البسيط ، تكون أسماء الأعمدة هي نفسها ، ولكن ذلك ليس شرطًا. لكي يعمل هذا ، تحتاج إلى صف أو أكثر في جدول myLogins2 تحتوي على قيمة معرف أكبر من 50 والتي ليست موجودة في جدول myLogins.
تحديث الصفوف باستخدام T-SQL UPDATE
مثل إضافة الصفوف إلى جدول ، هناك عدة طرق يمكنك من خلالها تعديل الصفوف في جدول. يتيح لك Query Designer في SSMS تحديث الصفوف بشكل تفاعلي ، ولكن يمكنك أيضًا استخدام PowerShell أو Integration Services.
ومع ذلك ، فإن الطريقة الأكثر شيوعًا لتعديل الصفوف الحالية في جدول قاعدة بيانات هي استخدام تعليمة SQL UPDATE. تعليمة T-SQL UPDATE تعدل القيم في صفوف واحدة أو أكثر في جدول SQL Server.
عادةً، ترغب في استخدام تعليمة UPDATE جنباً إلى جنب مع شرط WHERE لتحديد الصفوف التي سيتم تحديثها. إذا لم تستخدم تعليمة WHERE، فسيتم تحديث جميع الصفوف في الجدول. يوضح القائمة التالية مثالًا بسيطًا عن استخدام تعليمة T-SQL UPDATE لتعديل القيم في صف واحد من جدول myLogins.
UPDATE myLogins SET name = ‘John Smith’ WHERE id = 1
كما ذكرت، إذا كنت ستغيب عن استخدام شرط WHERE، فإن عمود الاسم في كل صف سيتم تعيينه إلى القيمة الجديدة. وبالمثل، إذا كان شرط WHERE يتضمن صفوفًا متعددة كما قد يحدث إذا استخدمت عمليات < أو >، فإنه سيتم تحديث صفوف مطابقة متعددة.
تحديث صفوف الجدول لنتائج الاستعلام
تمامًا مثلما يحدث مع تعليمة INSERT، يمكنك أيضًا تحديث الصفوف في جدول واحد باستخدام القيم من جدول آخر. في القائمة التالية، يمكنك أن ترى كيفية استخدام تحديث SQL من جدول آخر.
UPDATE myLogins SET myLogins.name = myLogins2.name FROM myLogins2 WHERE myLogins.id = myLogins2.id
هنا، يمكنك رؤية أن تعليمة UPDATE ستعمل على جدول myLogins، وأن عمود الاسم سيتم تحديثه باستخدام القيم من جدول myLogins2 حيث تتطابق القيمة في أعمدة id للجدولين.

وكما قد تخمنوا، هناك الكثير من الخيارات لاستخدام الأعمال التحريرية. يمكنك تحديث أجيال متعددة بواسطة تعلمك، يمكنك أن يكون الأعمال أكثر تعقيدًا باستخدام التجميعات، ويمكنك استخدام عبارة الأعلى، وعبارة ترتيب بحسب، والعبارات الجماعية التعلمية (CTEs)، وما إلى ذلك لبناء تعلمك التحريري.
حذف الأعمال بواسطة T-SQL DELETE و TRUNCATE
وكما قد تتوقعوا، يمكنك حذف أعمال من جدول باستخدام محرك الأسئلة SSMS التعاملي، أو PowerShell، أو خدمات التكامل. ومع ذلك، يعتبر أسلوب أكثر شيوعًا هو استخدام الأعمال التحريرية SQL DELETE.
ال statement T-SQL DELETE يمكنه أن يحذف سطر واحد أو أكثر من السجلات من جدول معالجة SQL Server. وهو بالذات أن تستخدم أعناء بالأحذية الخاصة بلغة السيقل البرمجية بعناية كبيرة لأنه يمكنه أن يحذف البيانات بشكل دائمي من جداولك. إذا أدى لك خطأ قد تحتاج إلى إعادة ترجمة البيانات من تصوير، سجل التحولات، أو 备份.
المثال التالي يظهر كيفية حذف سطر واحد من جدول myLogins:
DELETE FROM myLogins WHERE id = 1
هنا يمكنك رؤية أن سطر واحد في جدول myLogins سيتم حذفه حيث يساوي قيمة عامة التسلسل id 1. يمكنك أيضًا حذف عدد من السجلات عن طريق تغيير الشرط في الإشارة التالية، والتي يحذف جميع السجلات حيث يزيد قيمة id عن 50.
DELETE FROM myLogins WHERE id > 50

مثلما في وضعية التحديث، إذا تخطيت الشرط، سيتم حذف جميع السجلات في الجدول. على سبيل المثال، المثال التالي يحذف جميع السجلات في جدول myLogins:
DELETE FROM myLogins
حذف سجلات من ناتج عملية البحث
مثلما تفعل INSERT وأعناء التحديث، يمكن لإعادة DELETE أيضًا التصرف من ناتج عملية البحث. المثال التالي يظهر كيفية تحذيف السجلات بناءاً على عملية البحث:
DELETE FROM myLogins WHERE login_date < '12-31-2022'
في هذه الحالة، سيتم حذف جميع السجلات في جدول myLogins التي تمتلك تاريخ أقل من 12/31/22 في عمود login_date.
I’ve been using simple examples throughout this article, but like the INSERT and UPDATE statements, your queries can be much more complex. You could use JOINs and multiple tables in the DELETE statement’s subquery, use clauses like TOP and ORDER BY, and more.
DELETE مقابل TRUNCATE
يمكن لأمر T-SQL DELETE إزالة صف واحد أو أكثر من الجدول. ومع ذلك، فإنه ليس الطريقة الوحيدة لحذف الصفوف من الجدول. يمكنك حذف كل الصفوف في جدول خادم SQL باستخدام البيان T-SQL TRUNCATE TABLE.
يعد البيان DELETE إجراءً مسجلاً بشكل كامل. من ناحية أخرى، يعد بيان TRUNCATE TABLE إجراءً مُسجَّلًا بشكل دني. وهذا يعني أن أمر القص سيؤدي إلى تحسين الأداء قليلاً وسيتم إضافة مدخلات أقل إلى سجل المعاملات. يمكنك رؤية مثال على استخدام القص في القائمة التالية.
TRUNCATE TABLE myLogins
سيتم حذف كافة البيانات في جدول myLogins.
ملخص
في هذا البرنامج التعليمي، رأيت كيفية إضافة، تعديل وحذف الصفوف في جدول خادم SQL باستخدام بيانات T-SQL INSERT، UPDATE، و DELETE. في كل حالة، شرحت كيفية العمل مع قيم الصف الفردية وكيفية العمل مع عدة صفوف نتيجة لاستعلام فرعي. بالإضافة إلى ذلك، رأيت كيف تختلف بيانات DELETE و TRUNCATE، على الرغم من أنهما يمكن أساسًا حذف الصفوف من جدول.
المقال ذو الصلة:
Source:
https://petri.com/sql-insert-update-delete-truncate/