استعلام INSERT
مهمة هذا الاستعلام هي إنشاء سجل جديد في الجدول، وله البنية العامة:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
إذ تجب مراعاة التوافقية ما بين اسم العمود والقيمة التي ستوضع فيه على التوالي وبالترتيب، وأن تكون متوافقةً مع نوع بيانات الحقل، أي أن التوافق يجب أن يكون بالترتيب والعدد والنوع. ولإسناد قيم إلى كافة الحقول في السجل يُمكن الاستغناء عن أسماء الأعمدة ليصبح الاستعلام بالشكل:
INSERT INTO table_name VALUES (value1, value2, value3, ...);
إذ تجب مراعاة ترتيب القيم وعددها ونوعها ليتوافق مع الأعمدة في الجدول. أما إن كان الاستعلام بالشكل:
INSERT INTO table DEFAULT VALUES;
فتنفيذه يؤدي إلى إنشاء سجل جديدٍ في الجدول يحتوي على القيم الافتراضية بحسب نوع البيانات المحدد لكل عمود على حدة.
وكما أن محرك MySQL يدعم الصيغة الآتية لاستعلام INSERT
:
INSERT INTO tbl_name
SET assignment_list
إذ إن assignment_list
هي عدد من عمليات إسناد القيم للحقول المناسبة لها.
مثال
إن كان الجدول students
التالي موجودًا في قاعدة البيانات:
GPA | Age | Name | StudentID |
---|---|---|---|
3.68 | 25 | Mona | 1024 |
3.57 | 24 | Radi | 1081 |
2.50 | 25 | Leen | 1012 |
4.00 | 26 | Sarah | 1085 |
1.96 | 22 | Amin | 1066 |
2.87 | 23 | Yusuf | 1056 |
لإضافة سجل طالب جديد رقمه التسلسلي 1075 واسمه Abed وعمره 21 سنة ومعدله 1.90 في هذا الجدول، يصبح الاستعلام بالشكل الآتي:
INSERT INTO students (StudentID, Name, Age, GPA)
VALUES (1075, Abed, 21, 1.90);
ويصبح الجدول بعد تنفيذ هذا الاستعلام:
GPA | Age | Name | StudentID |
---|---|---|---|
3.68 | 25 | Mona | 1024 |
3.57 | 24 | Radi | 1081 |
2.50 | 25 | Leen | 1012 |
4.00 | 26 | Sarah | 1085 |
1.96 | 22 | Amin | 1066 |
2.87 | 23 | Yusuf | 1056 |
1.90 | 21 | Abed | 1075 |
إضافة سجل لا يحتوي على كافة بيانات الأعمدة
تمكن إضافة سجل لا يحتوي على كافة بيانات الأعمدة وحينئذٍ ستُملأ الأعمدة المتبقية بالقيم الافتراضية لنوع البيانات المحددة في هذه الأعمدة.
إن تنفيذ الاستعلام الآتي على الجدول الأساسي students
:
INSERT INTO students (StudentID, Name, Age)
VALUES (NEWID(), Abed, 21);
سيؤدي لإضافة طالب اسمه Abed وعمره 21 وبمعدل 0.0 لأنها القيمة الافتراضية لعمود GPA أما رقمه التسلسلي فسيصبح 1086 لأن الدالة NEWID() مسؤولة عن إعطاء الرقم التسلسلي التالي لآخر رقم تسلسلي مستخدم في الجدول، ويصبح الجدول كما يلي:
GPA | Age | Name | StudentID |
---|---|---|---|
3.68 | 25 | Mona | 1024 |
3.57 | 24 | Radi | 1081 |
2.50 | 25 | Leen | 1012 |
4.00 | 26 | Sarah | 1085 |
1.96 | 22 | Amin | 1066 |
2.87 | 23 | Yusuf | 1056 |
0.0 | 21 | Abed | 1086 |
إضافة عدد من السجلات باستعلام واحد
من الممكن أن تُضاف عدة سجلات بآن واحد ضمن نفس الاستعلام INSERT
وذلك بفصل السجلات عن بعضها بفاصلة كما في الاستعلام الآتي:
INSERT INTO students (StudentID, Name, Age, GPA)
VALUES (1075, Abed, 21, 1.90), (1076, Taimaa, 23, 2.75), (1077, Mohammad, 22, 1.85);
إذ تُضاف ثلاثة سجلات للجدول ليصبح كالآتي:
GPA | Age | Name | StudentID |
---|---|---|---|
3.68 | 25 | Mona | 1024 |
3.57 | 24 | Radi | 1081 |
2.50 | 25 | Leen | 1012 |
4.00 | 26 | Sarah | 1085 |
1.96 | 22 | Amin | 1066 |
2.87 | 23 | Yusuf | 1056 |
1.90 | 21 | Abed | 1075 |
2.75 | 23 | Taimaa | 1076 |
1.85 | 22 | Mohammad | 1077 |
إضافة سجلات إلى الجدول من جدول آخر
تمكن إضافة سجلات للجدول من جدول آخر بالاعتماد على استعلام SELECT
.
ليكن الجدول الآتي newStudents
موجودًا في قاعدة البيانات التي تحوي الجدول students
:
GPA | Age | Name | StudentID |
1.86 | 21 | Maher | 2027 |
3.57 | 23 | Joud | 2051 |
2.40 | 22 | Kawthar | 2082 |
3.68 | 25 | Asmaa | 2075 |
لدى تنفيذ الاستعلام الآتي:
INSERT INTO students (StudentID, Name, Age, GPA)
SELECT StudentID, Name, Age, GPA
FROM newStudents
WHERE GPA > 2.50;
ستضاف السجلات من الجدول newStudents
والتي معدل الطالب فيها أكبر من 2.50 إلى الجدول students
، ليصبح الجدول students
بالشكل الآتي:
GPA | Age | Name | StudentID |
---|---|---|---|
3.68 | 25 | Mona | 1024 |
3.57 | 24 | Radi | 1081 |
2.50 | 25 | Leen | 1012 |
4.00 | 26 | Sarah | 1085 |
1.96 | 22 | Amin | 1066 |
2.87 | 23 | Yusuf | 1056 |
3.57 | 23 | Joud | 2051 |
3.68 | 25 | Asmaa | 2075 |
التوافقية
SQLServer | SQLite | Oracle | PostgreSQL | MySQL |
---|---|---|---|---|
نعم | نعم | نعم | نعم | نعم |