121 lines
7.3 KiB
Markdown
121 lines
7.3 KiB
Markdown
---
|
||
title: SQL Update Query
|
||
localeTitle: استعلام تحديث SQL
|
||
---
|
||
## استعلام تحديث SQL
|
||
|
||
### ما الذي يمكن أن يفعله استعلام التحديث
|
||
|
||
يعطي استعلام تحديث للمبرمج DBA أو SQL باستخدام القدرة على تحديث العديد من السجلات بواسطة أمر واحد.
|
||
|
||
هام تلميح السلامة! دائما نسخة احتياطية من ما أنت على وشك تغييره قبل تغييره!
|
||
|
||
هذا الدليل سوف:
|
||
|
||
* إضافة حقل جديد إلى جدول الطالب
|
||
* اختبر المنطق لتحديث هذا الحقل من خلال عنوان البريد الإلكتروني المخصص للمدرسة
|
||
* تحديث الحقل الجديد.
|
||
|
||
هذا هو جدول الطلاب ونحن نبدأ هذه العملية
|
||
|
||
`SELECT * FROM student;
|
||
`
|
||
|
||
`+-----------+------------------------+-----------+------------------+---------------------+---------------------+
|
||
| studentID | FullName | sat_score | programOfStudy | rcd_Created | rcd_Updated |
|
||
+-----------+------------------------+-----------+------------------+---------------------+---------------------+
|
||
| 1 | Monique Davis | 400 | Literature | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
|
||
| 2 | Teri Gutierrez | 800 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
|
||
| 3 | Spencer Pautier | 1000 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
|
||
| 4 | Louis Ramsey | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
|
||
| 5 | Alvin Greene | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
|
||
| 6 | Sophie Freeman | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
|
||
| 7 | Edgar Frank "Ted" Codd | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
|
||
| 8 | Donald D. Chamberlin | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
|
||
| 9 | Raymond F. Boyce | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
|
||
+-----------+------------------------+-----------+------------------+---------------------+---------------------+
|
||
9 rows in set (0.00 sec)
|
||
`
|
||
|
||
### تغيير الجدول وإضافة حقل جديد
|
||
|
||
`` ALTER TABLE `fcc_sql_guides_database`.`student`
|
||
ADD COLUMN `schoolEmailAdr` VARCHAR(125) NULL AFTER `programOfStudy`;
|
||
``
|
||
|
||
يتم تنفيذ جدول الطالب بعد التعديل.
|
||
|
||
`mysql> SELECT FullName, sat_score, programOfStudy, schoolEmailAdr FROM student;
|
||
+------------------------+-----------+------------------+----------------+
|
||
| FullName | sat_score | programOfStudy | schoolEmailAdr |
|
||
+------------------------+-----------+------------------+----------------+
|
||
| Monique Davis | 400 | Literature | NULL |
|
||
| Teri Gutierrez | 800 | Programming | NULL |
|
||
| Spencer Pautier | 1000 | Programming | NULL |
|
||
| Louis Ramsey | 1200 | Programming | NULL |
|
||
| Alvin Greene | 1200 | Programming | NULL |
|
||
| Sophie Freeman | 1200 | Programming | NULL |
|
||
| Edgar Frank "Ted" Codd | 2400 | Computer Science | NULL |
|
||
| Donald D. Chamberlin | 2400 | Computer Science | NULL |
|
||
| Raymond F. Boyce | 2400 | Computer Science | NULL |
|
||
+------------------------+-----------+------------------+----------------+
|
||
9 rows in set (0.00 sec)
|
||
`
|
||
|
||
### اختبار المنطق (خطوة مهمة جدا!)
|
||
|
||
`SELECT FullName, instr(FullName," ") AS firstSpacePosition,
|
||
concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu") AS schoolEmail
|
||
FROM student;
|
||
`
|
||
|
||
`+------------------------+--------------------+------------------------+
|
||
| FullName | firstSpacePosition | schoolEmail |
|
||
+------------------------+--------------------+------------------------+
|
||
| Monique Davis | 8 | Monique@someSchool.edu |
|
||
| Teri Gutierrez | 5 | Teri@someSchool.edu |
|
||
| Spencer Pautier | 8 | Spencer@someSchool.edu |
|
||
| Louis Ramsey | 6 | Louis@someSchool.edu |
|
||
| Alvin Greene | 6 | Alvin@someSchool.edu |
|
||
| Sophie Freeman | 7 | Sophie@someSchool.edu |
|
||
| Edgar Frank "Ted" Codd | 6 | Edgar@someSchool.edu |
|
||
| Donald D. Chamberlin | 7 | Donald@someSchool.edu |
|
||
| Raymond F. Boyce | 8 | Raymond@someSchool.edu |
|
||
+------------------------+--------------------+------------------------+
|
||
9 rows in set (0.00 sec)
|
||
`
|
||
|
||
_ملاحظة حول concat (): في MySQL يتم استخدام هذا الأمر في سلاسل مدمجة ، وليس كذلك في إصدارات SQL الأخرى (راجع الدليل). في هذا الاستخدام يعمل مثل هذا: يتم دمج السلسلة الفرعية للحقل FullName مع عدم تضمين المساحة الأولى مع "@ someSchool.edu". في العالم الحقيقي سيكون هذا أكثر تعقيدًا وستحتاج إلى التأكد من أن عنوان البريد الإلكتروني فريد من نوعه._
|
||
|
||
### القيام بالتحديث
|
||
|
||
سنتظاهر بأن هذا ما نريده ونحدّث الجدول بهذه المعلومات:
|
||
|
||
`UPDATE student SET schoolEmailAdr = concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu")
|
||
WHERE schoolEmailAdr is NULL;
|
||
`
|
||
|
||
نجاح!
|
||
|
||
`mysql> SELECT FullName, sat_score, programOfStudy, schoolEmailAdr FROM student;
|
||
+------------------------+-----------+------------------+------------------------+
|
||
| FullName | sat_score | programOfStudy | schoolEmailAdr |
|
||
+------------------------+-----------+------------------+------------------------+
|
||
| Monique Davis | 400 | Literature | Monique@someSchool.edu |
|
||
| Teri Gutierrez | 800 | Programming | Teri@someSchool.edu |
|
||
| Spencer Pautier | 1000 | Programming | Spencer@someSchool.edu |
|
||
| Louis Ramsey | 1200 | Programming | Louis@someSchool.edu |
|
||
| Alvin Greene | 1200 | Programming | Alvin@someSchool.edu |
|
||
| Sophie Freeman | 1200 | Programming | Sophie@someSchool.edu |
|
||
| Edgar Frank "Ted" Codd | 2400 | Computer Science | Edgar@someSchool.edu |
|
||
| Donald D. Chamberlin | 2400 | Computer Science | Donald@someSchool.edu |
|
||
| Raymond F. Boyce | 2400 | Computer Science | Raymond@someSchool.edu |
|
||
+------------------------+-----------+------------------+------------------------+
|
||
9 rows in set (0.00 sec)
|
||
`
|
||
|
||
كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.
|
||
|
||
آمل أن يمنحك هذا على الأقل ما يكفي للبدء.
|
||
|
||
يرجى الاطلاع على دليل مدير قاعدة البيانات الخاص بك والمتعة محاولة خيارات مختلفة بنفسك. |