يمكنك إنشاء الجداول والقيود والفهارس والعلاقات وتعديلها في Access عن طريق كتابة استعلامات تعريف البيانات في طريقة عرض SQL. تشرح هذه المقالة استعلامات تعريف البيانات وكيفية استخدامها لإنشاء الجداول والقيود والفهارس والعلاقات. يمكن أن تساعدك هذه المقالة أيضا في تحديد وقت استخدام استعلام تعريف البيانات.
في هذه المقالة
نظرة عامة
على عكس استعلامات Access الأخرى، لا يسترد استعلام تعريف البيانات البيانات. بدلا من ذلك، يستخدم استعلام تعريف البيانات لغة تعريف البيانات لإنشاء كائنات قاعدة البيانات أو تعديلها أو حذفها.
ملاحظة: لغة تعريف البيانات (DDL) هي جزء من لغة الاستعلام المنظم (SQL).
يمكن أن تكون استعلامات تعريف البيانات مريحة للغاية. يمكنك حذف أجزاء من مخطط قاعدة البيانات وإعادة إنشائها بانتظام فقط عن طريق تشغيل بعض الاستعلامات. ضع في اعتبارك استخدام استعلام تعريف البيانات إذا كنت معتادا على عبارات SQL وكنت تخطط لحذف جداول أو قيود أو فهارس أو علاقات معينة وإعادة إنشائها.
تحذير: قد يكون استخدام استعلامات تعريف البيانات لتعديل كائنات قاعدة البيانات محفوفا بالمخاطر، لأن الإجراءات لا تكون مصحوبة بمربعات حوار التأكيد. إذا ارتكبت خطأ، يمكنك فقدان البيانات أو تغيير تصميم الجدول عن غير قصد. كن حذرا عند استخدام استعلام تعريف البيانات لتعديل العناصر في قاعدة البيانات الخاصة بك. إذا لم تكن مسؤولا عن الحفاظ على قاعدة البيانات التي تستخدمها، فيجب عليك استشارة مسؤول قاعدة البيانات قبل تشغيل استعلام تعريف البيانات.
هام: قم بعمل نسخة احتياطية من أي جداول مضمنة قبل تشغيل استعلام تعريف البيانات.
الكلمات الأساسية ل DDL
الكلمة الأساسية |
استخدم |
CREATE |
إنشاء فهرس أو جدول غير موجود بالفعل. |
ALTER |
تعديل جدول أو عمود موجود. |
DROP |
احذف جدولا أو عمودا أو قيدا موجودا. |
ADD |
إضافة عمود أو قيد إلى جدول. |
COLUMN |
استخدام مع ADD أو ALTER أو DROP |
CONSTRAINT |
استخدام مع ADD أو ALTER أو DROP |
INDEX |
استخدام مع CREATE |
TABLE |
استخدام مع ALTER أو CREATE أو DROP |
إنشاء جدول أو تعديله
لإنشاء جدول، يمكنك استخدام أمر CREATE TABLE. يحتوي الأمر CREATE TABLE على بناء الجملة التالي:
CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
العناصر المطلوبة الوحيدة لأمر CREATE TABLE هي الأمر CREATE TABLE نفسه واسم الجدول، ولكن عادة ما تريد تعريف بعض الحقول أو جوانب أخرى من الجدول. ضع في اعتبارك هذا المثال البسيط.
لنفترض أنك تريد إنشاء جدول لتخزين الاسم والسنة وسعر السيارات المستخدمة التي تفكر في شرائها. تريد السماح بما يصل إلى 30 حرفا للاسم، و4 أحرف للسنة. لاستخدام استعلام تعريف البيانات لإنشاء الجدول، قم بما يلي:
ملاحظة: قد تحتاج أولا إلى تمكين محتويات قاعدة البيانات لتشغيل استعلام تعريف البيانات:
-
على "شريط الرسائل"، انقر فوق تمكين المحتوى.
إنشاء جدول
-
على علامة التبويب إنشاء ، في المجموعة وحدات الماكرو & التعليمات البرمجية ، انقر فوق تصميم الاستعلام.
-
على علامة التبويب تصميم ، في المجموعة نوع الاستعلام ، انقر فوق تعريف البيانات.
شبكة التصميم مخفية، ويتم عرض علامة تبويب كائن عرض SQL.
-
اكتب عبارة SQL التالية:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.
تعديل جدول
لتعديل جدول، يمكنك استخدام أمر ALTER TABLE. يمكنك استخدام أمر ALTER TABLE لإضافة أعمدة أو قيود أو تعديلها أو إسقاطها (إزالة). يحتوي أمر ALTER TABLE على بناء الجملة التالي:
ALTER TABLE table_name predicate
حيث يمكن أن تكون دالة التقييم أي مما يلي:
ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
ADD CONSTRAINT multifield_constraint
ALTER COLUMN field type[(size)]
DROP COLUMN field
DROP CONSTRAINT constraint
افترض أنك تريد إضافة حقل نص مكون من 10 أحرف لتخزين معلومات حول حالة كل سيارة. يمكنك القيام بما يلي:
-
على علامة التبويب إنشاء ، في المجموعة وحدات الماكرو & التعليمات البرمجية ، انقر فوق تصميم الاستعلام.
-
على علامة التبويب تصميم ، في المجموعة نوع الاستعلام ، انقر فوق تعريف البيانات.
شبكة التصميم مخفية، ويتم عرض علامة تبويب كائن عرض SQL.
-
اكتب عبارة SQL التالية:
ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.
إنشاء فهرس
لإنشاء فهرس على جدول موجود، يمكنك استخدام الأمر CREATE INDEX. يحتوي الأمر CREATE INDEX على بناء الجملة التالي:
CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]
العناصر المطلوبة الوحيدة هي الأمر CREATE INDEX واسم الفهرس والوسيطة ON واسم الجدول الذي يحتوي على الحقول التي تريد فهرستها وقائمة الحقول المراد تضمينها في الفهرس.
-
تتسبب وسيطة DESC في إنشاء الفهرس بترتيب تنازلي، والذي يمكن أن يكون مفيدا إذا قمت بتشغيل الاستعلامات التي تبحث عن القيم العليا للحقل المفهرس بشكل متكرر، أو التي تقوم بفرز الحقل المفهرس بترتيب تنازلي. بشكل افتراضي، يتم إنشاء فهرس بترتيب تصاعدي.
-
تقوم الوسيطة WITH PRIMARY بإنشاء الحقل أو الحقول المفهرسة ك مفتاح أساسي للجدول.
-
تتسبب الوسيطة WITH DISALLOW NULL في أن يتطلب الفهرس إدخال قيمة للحقل المفهرس — أي أنه لا يسمح بالقيم الخالية.
لنفترض أن لديك جدولا باسم السيارات مع حقول تخزن اسم السيارات المستخدمة وسنتها وسعرها وحالتها التي تفكر في شرائها. افترض أيضا أن الجدول أصبح كبيرا وأنك تقوم بتضمين حقل السنة بشكل متكرر في الاستعلامات. يمكنك إنشاء فهرس في الحقل Year لمساعدة استعلاماتك على إرجاع النتائج بسرعة أكبر باستخدام الإجراء التالي:
-
على علامة التبويب إنشاء ، في المجموعة وحدات الماكرو & التعليمات البرمجية ، انقر فوق تصميم الاستعلام.
-
على علامة التبويب تصميم ، في المجموعة نوع الاستعلام ، انقر فوق تعريف البيانات.
شبكة التصميم مخفية، ويتم عرض علامة تبويب كائن عرض SQL.
-
اكتب عبارة SQL التالية:
CREATE INDEX YearIndex ON Cars (Year)
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.
إنشاء قيد أو علاقة
ينشئ القيد شرطا منطقيا يجب أن يلبيه حقل أو مجموعة من الحقول عند إدراج القيم. على سبيل المثال، يمنع قيد UNIQUE الحقل المقيد من قبول قيمة من شأنها تكرار قيمة موجودة للحقل.
العلاقة هي نوع من القيد يشير إلى قيم حقل أو مجموعة من الحقول في جدول آخر لتحديد ما إذا كان يمكن إدراج قيمة في الحقل المقيد أو مجموعة من الحقول. لا تستخدم كلمة أساسية خاصة للإشارة إلى أن القيد هو علاقة.
لإنشاء قيد، يمكنك استخدام عبارة CONSTRAINT في الأمر CREATE TABLE أو ALTER TABLE. هناك نوعان من عبارات CONSTRAINT: أحدهما لإنشاء قيد في حقل واحد، والآخر لإنشاء قيد على حقول متعددة.
قيود الحقل الواحد
تتبع عبارة CONSTRAINT أحادية الحقل على الفور تعريف الحقل الذي تقيده، ولها بناء الجملة التالي:
CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
لنفترض أن لديك جدولا باسم السيارات مع حقول تخزن اسم السيارات المستخدمة وسنتها وسعرها وحالتها التي تفكر في شرائها. افترض أيضا أنك كثيرا ما تنسى إدخال قيمة لحالة السيارة، وأنك تريد دائما تسجيل هذه المعلومات. يمكنك إنشاء قيد على الحقل Condition يمنعك من ترك الحقل فارغا، باستخدام الإجراء التالي:
-
على علامة التبويب إنشاء ، في المجموعة وحدات الماكرو & التعليمات البرمجية ، انقر فوق تصميم الاستعلام.
-
على علامة التبويب تصميم ، في المجموعة نوع الاستعلام ، انقر فوق تعريف البيانات.
شبكة التصميم مخفية، ويتم عرض علامة تبويب كائن عرض SQL.
-
اكتب عبارة SQL التالية:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.
الآن لنفترض أنه بعد فترة من الوقت، لاحظت أن هناك العديد من القيم المتشابهة في حقل Condition التي يجب أن تكون هي نفسها. على سبيل المثال، تحتوي بعض السيارات على قيمة Condition للفقراء والبعض الآخر لها قيمة سيئة.
ملاحظة: إذا كنت ترغب في اتباع الإجراءات المتبقية، أضف بعض البيانات المزيفة إلى جدول السيارات الذي قمت بإنشائه في الخطوات السابقة.
بعد تنظيف القيم بحيث تكون أكثر اتساقا، يمكنك إنشاء جدول، يسمى CarCondition، مع حقل واحد، يسمى Condition، يحتوي على جميع القيم التي تريد استخدامها لحالة السيارات:
-
على علامة التبويب إنشاء ، في المجموعة وحدات الماكرو & التعليمات البرمجية ، انقر فوق تصميم الاستعلام.
-
على علامة التبويب تصميم ، في المجموعة نوع الاستعلام ، انقر فوق تعريف البيانات.
شبكة التصميم مخفية، ويتم عرض علامة تبويب كائن عرض SQL.
-
اكتب عبارة SQL التالية:
CREATE TABLE CarCondition (Condition TEXT(10))
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.
-
إنشاء مفتاح أساسي للجدول باستخدام عبارة ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY
-
لإدراج القيم من حقل Condition في جدول Cars في جدول CarCondition الجديد، اكتب SQL التالي في علامة تبويب عنصر عرض SQL:
إدراج في CarCondition حدد حالة مميزة من السيارات؛
ملاحظة: عبارة SQL في هذه الخطوة هي استعلام الإلحاق. على عكس استعلام تعريف البيانات، ينتهي استعلام الإلحاق بفواصل منقوطة.
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.
إنشاء علاقة باستخدام قيد
لمطالبة أي قيمة جديدة مدرجة في الحقل Condition في جدول Cars بمطابقة قيمة حقل Condition في جدول CarCondition، يمكنك بعد ذلك إنشاء علاقة بين CarCondition و Cars في الحقل المسمى Condition، باستخدام الإجراء التالي:
-
على علامة التبويب إنشاء ، في المجموعة وحدات الماكرو & التعليمات البرمجية ، انقر فوق تصميم الاستعلام.
-
على علامة التبويب تصميم ، في المجموعة نوع الاستعلام ، انقر فوق تعريف البيانات.
شبكة التصميم مخفية، ويتم عرض علامة تبويب كائن عرض SQL.
-
اكتب عبارة SQL التالية:
ALTER TABLE Cars ALTER COLUMN CONDITION TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.
قيود متعددة الحقول
يمكن استخدام عبارة CONSTRAINT متعددة الحقول فقط خارج عبارة تعريف الحقل، ولها بناء الجملة التالي:
CONSTRAINT constraint_name
{PRIMARY KEY (pk_field1[, pk_field2[, ...]]) | UNIQUE (unique1[, unique2[, ...]]) | NOT NULL (notnull1[, notnull2[, ...]]) | FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]]) REFERENCES foreign_table [(fk_field1[, fk_field2[, ...]])] | [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
ضع في اعتبارك مثالا آخر يستخدم جدول Cars. لنفترض أنك تريد التأكد من عدم وجود سجلين في جدول السيارات يحتويان على نفس مجموعة القيم للاسم والسنة والشرط والسعر. يمكنك إنشاء قيد UNIQUE ينطبق على هذه الحقول، باستخدام الإجراء التالي:
-
على علامة التبويب إنشاء ، في المجموعة وحدات الماكرو & التعليمات البرمجية ، انقر فوق تصميم الاستعلام.
-
على علامة التبويب تصميم ، في المجموعة نوع الاستعلام ، انقر فوق تعريف البيانات.
شبكة التصميم مخفية، ويتم عرض علامة تبويب كائن عرض SQL.
-
اكتب عبارة SQL التالية:
ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (الاسم والسنة والشرط والسعر)
-
على علامة التبويب تصميم، في مجموعة النتائج، انقر فوق تشغيل.