fbpx
SQL

تعلم لغة الاستعلام البنائية ( SQL ) – الدرس الرابع ادخال الصفوف Inserting rows



بمجرد إنشاء جدول ، يمكنك ملؤه بالبيانات باستخدام الأمر INSERT.

فيما يلي بناء الجملة:

INSERT INTO table_name (column1, column2)
VALUES (value11, value12), (value21, value22), (value31, value32), ...

تحدد الفقرة الأولى بعد عبارة INSERT INTO الأعمدة التي ستكون جزءًا من عبارة الإدراج. سيحدد كل صف يتم إدراجه مجموعة الأعمدة المحددة بواسطة العبارة الأولى ، وبنفس الترتيب. أي عمود آخر لم يتم تحديده في البند الأول سيحصل على القيمة الافتراضية. إذا تم تعريف عمود NOT NULL في الجدول وفقدت عبارة INSERT INTO العمود ، سيفشل تشغيل الأمر INSERT.

في INSERT ، إذا لم يتم تحديد قيمة INTEGER PRIMARY KEY بشكل صريح ، فسيتم تعبئته تلقائيًا بعدد صحيح غير مستخدم ، وعادة ما يكون الرقم التالي المستخدم حاليًا في العمود. هذا صحيح بغض النظر عما إذا كانت الكلمة الرئيسية AUTOINCREMENT مستخدمة أم لا.

إذا تم حذف جملة الأعمدة التي تحدد قائمة الأعمدة ، فسيتم افتراض أن جميع الأعمدة سيتم توفيرها في عبارة INSERT:

INSERT INTO table_name VALUES (value1, value2, value3, value4...);

إذا كانت إحدى القيم مفقودة ، فسوف تفشل عبارة INSERT ببساطة ، ما لم يتمكن الاستعلام من معرفة الحقول التي يمكن تعيينها إلى قيمتها الافتراضية. بشكل عام ، لا يُنصح باستخدام طريقة الإدراج هذه أبدًا لأن بنية قاعدة البيانات تغير معنى الاستعلام ، والذي يمكن أن يكون خطيرًا للغاية.

لاحظ أنه من الأكثر فاعلية بكثير إدراج قيم مجمعة باستخدام استعلام واحد ، وليس العديد من عبارات INSERT الجديدة لكل صف بسبب الاتصال بقاعدة البيانات. إذا كنت بحاجة إلى أخذ الأداء في الاعتبار ، فضع هذا في الاعتبار.

فيما يلي بعض الأمثلة عن استعلام INSERT قيد التنفيذ:

CREATE TABLE customers (first_name NOT NULL, last_name NOT NULL, age);
INSERT INTO customers (first_name, last_name, age) VALUES ("Ahmad", "Hicham", 23);
SELECT * FROM customers;

سنحصل على النتيجة التالية عند التشغيل

Ahmad|Amel|33

الآن دعونا نرى ما يحدث إذا حذفنا قائمة الأعمدة:

CREATE TABLE customers (first_name NOT NULL, last_name NOT NULL, age);
INSERT INTO customers VALUES ("Ahmad", "Hicham", 23);
SELECT * FROM customers;

سنحصل على النتيجة التالية عند التشغيل

Ahmad|Hicham|23

دعنا نزيل العمر – سيؤدي ذلك إلى فشل الاستعلام:

CREATE TABLE customers (first_name NOT NULL, last_name NOT NULL, age);

INSERT INTO customers (first_name, last_name, age)
VALUES ("Ahmad", "Amel", 33);

SELECT * FROM customers;

سنحصل على النتيجة التالية عند التشغيل

Ahmad|Amel|33

دعنا نضيف المزيد من الناس:

CREATE TABLE customers (first_name NOT NULL, last_name NOT NULL, age);

INSERT INTO customers (first_name, last_name, age)
VALUES ("Ahmad", "Hicham", 23), ("Yacine", "Walid", 26);

SELECT * FROM customers

سنحصل على النتيجة التالية عند التشغيل

Ahmad|Hicham|23
Yacine|Walid|26

الاستبدال والتجاهل

يدعم SQLite ثلاثة أنواع إضافية من بناء الجملة لإدراج البيانات: INSERT OR REPLACE و REPLACE INTO و INSERT OR IGNORE.

تعني عبارة REPLACE أنه إذا كنت تقوم بإدراج صف موجود بالفعل (بمعنى ، مفتاح أساسي موجود بالفعل في الجدول) ، فلن تفشل عبارة INSERT وستقوم بالفعل بحذف الصف القديم وإدراج الصف الجديد بدلاً منه. ستفشل عملية REPLACE إذا لم يكن هذا الصف موجودًا في حين أن INSERT OR REPLACE ستعمل دائمًا وستقوم إما بإدراج صف جديد أو استبدال صف موجود.

INSERT OR IGNORE يشبه INSERT OR REPLACE ولكنه في الواقع سيتجاهل تمامًا أمر INSERT للصف المحدد الموجود بالفعل في قاعدة البيانات. يفيد ذلك عند إدراج مجموعة كبيرة من البيانات التي قد يكون بعضها (أو مفاتيحها الأساسية) موجودًا بالفعل

تمرين

أدخل “Ahmad Amel” في قاعدة البيانات. يبلغ جون من العمر 33 عامًا.

CREATE TABLE customers (first_name NOT NULL, last_name NOT NULL, age);

SELECT * FROM customers;

الحل

CREATE TABLE customers (first_name NOT NULL, last_name NOT NULL, age);

INSERT INTO customers (first_name, last_name, age)
VALUES ("Ahmad", "Amel", 33);

SELECT * FROM customers;

سنحصل على النتيجة التالية عند التشغيل

Ahmad|Amel|33

الدرس الخامس






Leave a Reply