SQL - ما هي ، ما هي اللغة ، بالإضافة إلى الوظائف الأساسية للمبتدئين. أرشيف الفئات: كتب SQL

18.08.2019

من المؤلف:أطلقوا عليك إبريق الشاي؟ حسنًا ، هذا قابل للإصلاح! كل السماور كان في يوم من الأيام إبريق شاي! أم كان كل محترف في يوم من الأيام ساموفار؟ لا ، هناك خطأ ما مرة أخرى! بشكل عام ، MySQL للمبتدئين.

لماذا تحتاج الدمى إلى MySQL

إذا كنت بصدد ربط حياتك بالإنترنت بجدية ، فستواجه نظام إدارة قواعد البيانات (DBMS) هذا فورًا عند الخطوات الأولى في "الويب". يمكن تسمية MySQL بأمان بنظام إدارة قاعدة بيانات "الإنترنت بالكامل". لا يمكن لمورد واحد أكثر أو أقل جدية الاستغناء عنه ، فهو موجود في لوحة الإدارة لكل استضافة. والأهم من ذلك كله ، تم تصميم محركات CMS الشهيرة وحتى المحركات "ذاتية الصنع" بمشاركتها.

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

لكن MySQL صعب جدًا على الدمى فقط إذا بدأت في تعلمها بشكل خاطئ. لن نرتكب مثل هذا الخطأ ، وسنبدأ التعرف على هذه التكنولوجيا من البداية.

مفاهيم أساسية

أولاً ، لنستعرض المفاهيم الأساسية التي سنذكرها في هذا المنشور:

قاعدة البيانات (DB) هي الوحدة المكونة الرئيسية لنظام إدارة قواعد البيانات. تتضمن قاعدة البيانات جداول تتكون من أعمدة وسجلات (صفوف). تحتوي الخلايا التي تشكلت عند التقاطع على بيانات منظمة من نوع معين.

DBMS (نظام إدارة قواعد البيانات) - مجموعة من جميع وحدات البرامج لإدارة قواعد البيانات.

SQL هي لغة استعلام منظمة يتواصل بها المطور مع جوهر (خادم) نظام إدارة قواعد البيانات. مثل أي لغة برمجة ، فإن SQL لها بناء الجملة الخاص بها ومجموعة من الأوامر والمشغلين وأنواع البيانات المدعومة.

أعتقد أن المعرفة النظرية كافية لكي نبدأ. سوف "نرسم" الفجوات المفقودة نظريًا بالممارسة. الآن يبقى اختيار أداة البرنامج المناسبة.

اختيار الأداة الصحيحة

"حفر" جميل في النطاق الكامل لأصداف MySQL للمبتدئين ، أدركت أن هذه ببساطة غير موجودة. تتطلب جميع منتجات برامج إدارة DBMS خادم قاعدة بيانات مثبت بالفعل. بشكل عام ، قررت مرة أخرى عدم اختراع "سكوتر" ، واخترت حزمة Denwer المحلية. يمكنك تنزيله على الموقع الرسمي.

يتضمن بالفعل جميع مكونات نظام إدارة قواعد البيانات ، مما يسمح للمبتدئين ببدء التعارف العملي مع MySQL فور تثبيت بسيط ومفهوم. بالإضافة إلى ذلك ، يتضمن Denwer العديد من الأدوات الضرورية للمطور المبتدئ: خادم محلي ، PHP.

الخطوات الأولى

لن أصف عملية تثبيت مجموعة "gentleman's" ، لأن كل شيء يحدث تلقائيًا هناك. بعد بدء التثبيت ، لديك الوقت فقط للضغط على المفاتيح اللازمة. فقط ما تحتاجه في متغير MySQL للدمى.

عند انتهاء عملية التثبيت ، ابدأ تشغيل الخادم المحلي وانتظر بضع ثوانٍ. بعد ذلك ، اكتب localhost في شريط العنوان في متصفحك.

في الصفحة "مرحى ، لقد نجحت!" اتبع أحد الروابط الموجودة في الصورة. بعد ذلك ، سيتم نقلك إلى phpMyAdmin - قذيفة لإدارة قواعد البيانات.

بالنقر فوق الرابط http://downloads.mysql.com/docs/world.sql.zip ، ستقوم بتنزيل مثال لقاعدة بيانات اختبار من موقع MySQL الرسمي. مرة أخرى ، انتقل إلى phpMyAdmin ، في القائمة الرئيسية بالأعلى ، انتقل إلى علامة التبويب "استيراد". في نافذة "الاستيراد إلى الحالي" ، في القسم الأول ("ملف للاستيراد") ، عيّن القيمة إلى "نظرة عامة على جهاز الكمبيوتر الخاص بك".

في نافذة المستكشف ، حدد الأرشيف باستخدام نموذج قاعدة البيانات الذي تم تنزيله. لا تنس النقر فوق موافق في الجزء السفلي من النافذة الرئيسية.

أنصحك بعدم تغيير قيم المعلمات المحددة حتى الآن. قد يؤدي هذا إلى عرض غير صحيح لبيانات المصدر المستوردة. إذا أعطى نظام phpMyAdmin خطأً يفيد بأنه لا يمكنه التعرف على خوارزمية ضغط قاعدة البيانات ، فقم بفك ضغطها وكرر عملية الاستيراد بالكامل من البداية.

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

دعونا نلقي نظرة على هيكلها من الداخل بحيث يمكنك أن تتخيل بشكل أكثر وضوحًا ما عليك التعامل معه.

انقر على اسم قاعدة بيانات MySQL للمبتدئين. تحته ، سيتم عرض قائمة بالجداول التي يتكون منها. انقر فوق واحد منهم. ثم انتقل إلى عنصر القائمة العلوي "الهيكل". تعرض منطقة العمل الرئيسية هيكل الجدول: جميع أسماء الأعمدة وأنواع البيانات وجميع السمات.

تتفاعل معظم تطبيقات الويب الحديثة مع قواعد البيانات ، وعادة ما تستخدم لغة تسمى SQL. لحسن الحظ بالنسبة لنا ، هذه اللغة سهلة التعلم للغاية. في هذه المقالة سوف ننظر في البساطة SQL الطلبات وتعلم كيفية استخدامها للتفاعل معهاقاعدة بيانات MySQL.

ماذا تحتاج؟

SQL (لغة الاستعلام الهيكلية) لغة مصممة خصيصًا للتفاعل مع أنظمة إدارة قواعد البيانات مثل MySQL و Oracle و Sqlite وغيرهم ... لأداء SQL الطلبات في هذه المقالة أنصحك بتثبيت MySQL إلى الكمبيوتر المحلي. كما أوصي باستخدام phpMyAdmin كواجهة بصرية.

كل هذا متاح في دنفر المفضلة للجميع. أعتقد أن الجميع يجب أن يعرف ما هو وأين يمكن الحصول عليه :). يستطيعآخر استخدام WAMP أو MAMP.

دنفر لديها مبنى MySQL وحدة التحكم. سوف نستخدمه.

إنشاء قاعدة بيانات:إنشاء قاعدة البيانات

هذا هو طلبنا الأول. سننشئ قاعدة بياناتنا الأولى لمزيد من العمل.

للبدء ، افتح MySQL وحدة التحكم وتسجيل الدخول. ل WAMP كلمة المرور الافتراضية فارغة. ذلك لا يعد شيئا :). ل MAMP - "الجذر". دنفر بحاجة إلى توضيح.

بعد تسجيل الدخول ، أدخل السطر التالي وانقريدخل:

إنشاء قاعدة بيانات my_first_db ؛

لاحظ أنه يتم إضافة فاصلة منقوطة (؛) في نهاية الاستعلام ، تمامًا كما هو الحال في اللغات الأخرى.

أوامر أيضا في SQL حساسية الموضوع. نكتبها بأحرف كبيرة.

خيارات بشكل عام: مجموعة الأحرفو التجميع

إذا كنت تريد التثبيتيمكن لمجموعة الأحرف (مجموعة الأحرف) والترتيب (المقارنة) اكتب الأمر التالي:

إنشاء قاعدة بيانات my_first_db DEFAULT CHARACTER SET utf8 جمع utf8_general_ci؛

ابحث عن قائمة مجموعات الأحرف المدعومة في MySQL.

عرض قواعد البيانات:يسرد جميع قواعد البيانات

يستخدم هذا الأمر لعرض جميع قواعد البيانات المتاحة.

إسقاط قاعدة البيانات:حذف قاعدة البيانات

يمكنك إسقاط ديسيبل موجود مع هذا الاستعلام.

كن حذرًا مع هذا الأمر لأنه يعمل دون سابق إنذار. إذا كانت هناك بيانات في قاعدة البيانات الخاصة بك ، فسيتم حذفها جميعًا.

يستخدم:اختيار قاعدة البيانات

من الناحية الفنية ، هذا ليس استعلامًا ، ولكنه عامل ، ولا يتطلب فاصلة منقوطة في النهاية.

يخبر MySQL حدد قاعدة بيانات للعمل بشكل افتراضي للجلسة الحالية. نحن الآن جاهزون لإنشاء الجداول والقيام بأشياء أخرى باستخدام قاعدة البيانات.

ما هو الجدول في قاعدة البيانات؟

يمكنك تمثيل جدول في قاعدة البيانات على شكلملف اكسل.

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

اصنع جدول: قم بإنشاء جدول

ج باستخدام هذا الاستعلام ، يمكننا إنشاء جداول في قاعدة البيانات. للأسف الوثائق MySQL ليس واضحًا جدًا بالنسبة للمبتدئين في هذا الموضوع. يمكن أن يكون هيكل هذا النوع من الطلبات معقدًا للغاية ، لكننا سنبدأ بهيكل سهل.

سيقوم الاستعلام التالي بإنشاء جدول به عمودين.

إنشاء مستخدمي الجدول (اسم المستخدم VARCHAR (20) ، create_date DATE) ؛

لاحظ أنه يمكننا كتابة استفساراتنا في أسطر متعددة وبعلامات تبويب للمسافة البادئة.

السطر الأول بسيط. نقوم ببساطة بإنشاء جدول يسمى "المستخدمين". بعد ذلك ، بين قوسين ، مفصولة بفواصل ، قائمة بجميع الأعمدة. بعد كل اسم عمود ، لدينا أنواع المعلومات مثل VARCHAR أو DATE.

VARCHAR (20) تعني أن العمود من نوع سلسلة ويمكن أن يصل طوله إلى 20 حرفًا كحد أقصى. DATE هو أيضًا نوع معلومات يُستخدم لتخزين التواريخ بهذا التنسيق: "YYYY - MM-DD".

المفتاح الأساسي ( المفتاح الأساسيح)

قبل تنفيذ الاستعلام التالي ، نحتاج أيضًا إلى تضمين عمود لـ "user_id" ، والذي سيكون مفتاحنا الأساسي. يمكنك التفكير في PRIMARY KEY كمعلومات تُستخدم لتحديد كل صف في الجدول.

إنشاء مستخدمي الجدول (user_id INT AUTO_INCREMENT PRIMARY KEY ، اسم المستخدم VARCHAR (20) ، create_date DATE) ؛

INT يجعل نوع عدد صحيح 32 بت (مثل الأرقام).زيادة تلقائية يولد تلقائيا قيمة جديدةبطاقة تعريف في كل مرة نضيف فيها صفوفًا جديدة من المعلومات. هذا ليس مطلوبًا ، ولكنه يجعل العملية برمتها أسهل.

ليس من الضروري أن يكون هذا العمود قيمة عددية ، ولكنه الأكثر استخدامًا. يعد الحصول على مفتاح أساسي اختياريًا أيضًا ، ولكن يوصى به لبنية قاعدة البيانات وأدائها.

لنقم بتشغيل استعلام:

جداول العرض:عرض كل الطاولات

يتيح لك هذا الاستعلام الحصول على قائمة بالجداول الموجودة في قاعدة البيانات.

يشرح:إظهار هيكل الجدول

يمكنك استخدام هذا الاستعلام لإظهار هيكل جدول موجود.

يتم عرض الأعمدة مع جميع الخصائص.

إسقاط الجدول:حذف الجدول

تمامًا مثل DROP DATABASES ، هذا الاستعلام يسقط الجدول ومحتوياته دون سابق إنذار.

تغيير الجدول: طاولة التغيير

يمكن أن يحتوي هذا الاستعلام أيضًا على بنية معقدة نظرًا لزيادة التغييرات التي يمكن إجراؤها على الجدول. لنلق نظرة على الأمثلة.

(إذا حذفت الجدول في الخطوة الأخيرة ، فقم بإنشائه مرة أخرى للاختبارات)

إضافة عمود

مستخدمو ALTER TABLE إضافة البريد الإلكتروني VARCHAR (100) بعد اسم المستخدم ؛

نظرًا لسهولة قراءة SQL ، أعتقد أنه لا فائدة من شرحه بالتفصيل. نقوم بإضافة عمود جديد "البريد الإلكتروني" بعد "اسم المستخدم".

إزالة عمود

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

قم باستعادة العمود الذي حذفته للتو لإجراء مزيد من التجارب.

إجراء تغيير على عمود

قد ترغب أحيانًا في إجراء تغييرات على خصائص عمود ، ولا تحتاج إلى إزالته بالكامل للقيام بذلك.

أعاد هذا الاستعلام تسمية عمود المستخدم إلى "اسم_المستخدم" وغير نوعه من VARCHAR (20) إلى VARCHAR (30). مثل هذا التغيير لا ينبغي أن يغير البيانات الواردة في الجدول.

إدراج: إضافة المعلومات إلى الجدول

دعنا نضيف بعض المعلومات إلى الجدول باستخدام الاستعلام التالي.

كما ترى ، تحتوي VALUES () على قائمة قيم مفصولة بفواصل. يتم تضمين جميع القيم في أعمدة مفردة. ويجب أن تكون القيم بترتيب الأعمدة التي تم تحديدها عند إنشاء الجدول.

لاحظ أن القيمة الأولى هي NULL لحقل PRIMARY KEY المسمى "user_id". نقوم بذلك من أجل إنشاء المعرف تلقائيًا ، نظرًا لأن العمود يحتوي على خاصية AUTO_INCREMENT. عند إضافة المعلومات لأول مرة ، سيكون المعرف 1. الصف التالي سيكون 2 ، وهكذا ...

الخيار البديل

يوجد خيار استعلام آخر لإضافة الصفوف.

هذه المرة نستخدم الكلمة الأساسية SET بدلاً من القيم ولا تحتوي على أقواس. هناك عدة فروق دقيقة:

يمكن تخطي العمود. على سبيل المثال ، لم نخصص قيمة لـ "user_id" ، والتي ستحصل على قيمة AUTO_INCREMENT افتراضيًا. إذا حذفت عمود VARCHAR ، فستتم إضافة سلسلة فارغة.

يجب الإشارة إلى كل عمود بالاسم. وبسبب هذا ، يمكن ذكرها بأي ترتيب بخلاف الإصدار السابق.

بديل 2

إليك خيار آخر.

مرة أخرى ، نظرًا لوجود مراجع لاسم العمود ، يمكنك تحديد القيم بأي ترتيب.

LAST_INSERT_ID ()

يمكنك استخدام هذا الاستعلام للحصول على المعرف الذي كان AUTO_INCREMENT للصف الأخير من الجلسة الحالية.

الآن()

حان الوقت الآن لتظهر لك كيف يمكنك استخدام وظيفة MySQL في الاستعلامات.

ترجع الدالة NOW () التاريخ الحالي. لذا يمكنك استخدامه لضبط تاريخ العمود تلقائيًا على العمود الحالي عند إدراج صف جديد.

لاحظ أننا تلقينا تحذيرًا واحدًا ، لكن تجاهله. والسبب في ذلك هو أن NOW () تعمل أيضًا على عرض معلومات مؤقتة.

يختار: قراءة البيانات من الجدول

إذا أضفنا معلومات إلى جدول ، فسيكون من المنطقي معرفة كيفية قراءتها من هناك. هذا هو المكان الذي سيساعدنا فيه استعلام SELECT.

يوجد أدناه أبسط استعلام SELECT ممكن لقراءة جدول.

في هذه الحالة ، تعني العلامة النجمية (*) أننا طلبنا جميع الحقول من الجدول. إذا كنت تريد أعمدة معينة فقط ، فسيبدو الاستعلام هكذا.

حالةأين

في أغلب الأحيان ، لا نهتم بجميع الأعمدة ، ولكن في بعضها فقط. على سبيل المثال ، لنفترض أننا نحتاج فقط إلى عنوان البريد الإلكتروني للمستخدم "nettuts".

WHERE يسمح لك بتعيين الشروط في الاستعلام وإجراء التحديدات التفصيلية.

لاحظ أن المساواة تستخدم علامة يساوي (=) بدلاً من اثنين كما في البرمجة.

يمكنك أيضًا استخدام المقارنات.

يمكن استخدام AND أو OR للجمع بين الشروط:

لاحظ أن القيم الرقمية يجب ألا تكون بين علامتي اقتباس.

في()

هذا مفيد لأخذ العينات على قيم متعددة.

يحب

يسمح لك بعمل طلبات "wildcard"

يتم استخدام علامة٪ على أنها "حرف بدل". هذا هو ، في مكانه يمكن أن يكون أي شيء.

حالةترتيب حسب

إذا كنت ترغب في الحصول على النتيجة في نموذج مرتب حسب بعض المعايير

الترتيب الافتراضي هو ASC (من الأصغر إلى الأكبر). للعكس ، يتم استخدام DESC.

الحد ... العرض ...

يمكنك تحديد عدد النتائج التي تتلقاها.

تأخذ LIMIT 2 أول نتيجتين فقط. تحصل حدود 1 OFFSET 2 على نتيجة واحدة بعد أول 2. LIMIT 2، 1 تعني نفس الشيء (لاحظ فقط أن الإزاحة تأتي أولاً ثم الحد).

تحديث: قم بإجراء تغييرات على المعلومات الواردة في الجدول

يستخدم هذا الاستعلام لتغيير المعلومات في جدول.

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

يمكنك أيضًا استخدام LIMIT لتحديد عدد الصفوف التي تحتاج إلى تعديل.

يمسح: إزالة المعلومات من الجدول

تمامًا مثل UPDATE ، يتم استخدام هذا الاستعلام مع WHERE:

لإزالة محتويات الجدول ، يمكنك القيام بذلك ببساطة:

حذف من المستخدمين ؛

لكن من الأفضل استخدامهااقتطاع

بالإضافة إلى الحذف ، يقوم هذا الاستعلام أيضًا بإعادة تعيين القيمزيادة تلقائية وعند إضافة الصفوف مرة أخرى ، سيبدأ العد التنازلي من الصفر.يمسح لا تفعل هذا ويستمر العد التنازلي.

تعطيل قيم السلاسل والكلمات الخاصة

قيم السلسلة

يجب تعطيل بعض الشخصيات (يهرب ) ، أو قد تكون هناك مشاكل.

لهذا ، يتم استخدام شرطة مائلة للخلف.(\).

كلمات خاصة

لأنه في MySQL هناك العديد من الكلمات الخاصةحدد أو تحديث ) ، لتجنب الأخطاء عند استخدامها ، يجب استخدام علامات الاقتباس. لكن ليست الاقتباسات العادية ، ولكن هذه(`).

أي أنك ستحتاج إلى إضافة عمود باسم "يمسح "، ما عليك القيام به على النحو التالي:

خاتمة

شكرا لك على القراءة حتى النهاية. آمل أن تكون هذه المقالة مفيدة لك. لم ينتهي بعد! يتبع:).

مجموعة من الكتب ودورات الفيديو والموارد عبر الإنترنت لتعلم قواعد البيانات والنظرية العلائقية ولغة SQL.

كتب

آلان بيولي "Learning SQL" (2007)

هذا الكتاب هو اختيار ممتاز لأولئك الذين هم في بداية الطريق الشائك لتعلم SQL. لن يسمح لك فقط باكتساب القاعدة الضرورية من المعرفة الأولية ، بل سيخبرك أيضًا عن التفاصيل الدقيقة الأكثر شيوعًا والميزات القوية للغة المستخدمة من قبل المبرمجين ذوي الخبرة.
تمتلئ العديد من الكتب المدرسية في قواعد البيانات والنظرية العلائقية و SQL بخلفية نظرية مملة. يُعد هذا الكتاب استثناءً مرحبًا به نظرًا لأسلوبه الخفيف والحيوي. يقدم المؤلف للقارئ ببراعة معلومات حول عبارات SQL والكتل وأنواع الشروط والصلات والاستعلامات الفرعية وغير ذلك الكثير.
لتعزيز المعرفة المكتسبة في الممارسة ، ينشئ المؤلف قاعدة بيانات MySQL للتدريب ويقدم العديد من الأمثلة العملية للاستعلامات التي تغطي جميع المواد النظرية المقدمة.

كريس فيايلي "SQL" (2013)


يتعامل الكتاب مع إصدار اللغة ANSI SQL-92 (SQL2). يصف بالتفصيل كيفية استخدام لغة الاستعلام لحل فئات المشاكل المقابلة في اختيار البيانات وتعديلها والعمل مع كائنات بنية قاعدة البيانات. يتم شرح جميع الأمثلة بالتفصيل.
يتم إيلاء اهتمام خاص في هذا الإصدار للاختلافات في لهجات SQL في تنفيذ نظم إدارة قواعد البيانات الأكثر شيوعًا: MySQL و Oracle و MS SQL Server و PostgreSQL.
الكتاب مخصص لأي شخص يرغب في تعلم لغة SQL بشكل مستقل أو تحسين معرفته بهذا الموضوع.

أنتوني مولينارو SQL. مجموعة الوصفات "(2009)


هذا الإصدار مخصص لأولئك الذين لديهم بالفعل بعض المعرفة بـ SQL ويريدون تحسين مهاراتهم في هذا المجال. سيكون مفيدًا أيضًا لخبراء قواعد البيانات ، حيث يقدم المؤلف أمثلة لحل المشكلات في قواعد بيانات مختلفة: DB2 و Oracle و PostgreSQL و MySQL و SQL Server.
سيساعدك الكتاب على تعلم كيفية استخدام SQL لحل مجموعة واسعة من المهام: من العمليات داخل قاعدة البيانات إلى استخراج البيانات ونقلها عبر الشبكة إلى التطبيقات.
سوف تتعلم كيفية استخدام وظائف النوافذ والمشغلين الخاصين ، بالإضافة إلى الأساليب المتقدمة للعمل مع مستودعات البيانات: إنشاء الرسوم البيانية ، وتلخيص البيانات في كتل ، وإجراء تجميع النطاق المتحرك ، والمجاميع الجارية والمجموعات الفرعية. ستكون قادرًا على توسيع السلاسل إلى أعمدة والعكس صحيح ، وتبسيط العمليات الحسابية داخل سلسلة وتوسيع مجموعة النتائج مرتين ، واجتياز سلسلة ، مما يسمح لك باستخدام SQL لتحليل سلسلة إلى أحرف أو كلمات أو عناصر سلسلة محددة. ستسمح لك التقنيات التي اقترحها المؤلف بتحسين كود تطبيقاتك وفتح فرص جديدة لك في لغة SQL.

Alex Kriegel et al. “SQL. الكتاب المقدس للمستخدم ، الطبعة الثانية (2010)


الكتاب فريد من نوعه حيث يقارن كل فصل تطبيقات استعلامات معينة بلهجات نظم إدارة قواعد البيانات الثلاثة الرائدة. هذا يجعله دليلًا شاملاً وعمليًا للغة SQL للمطورين من المبتدئين إلى المعلمين ، وهو نوع من دليل سطح المكتب.
يغطي المنشور موضوعات من الأساسيات إلى المعاملات والأقفال والوظائف وأدوات حماية قواعد البيانات.
في النهاية ، يتم تقديم العديد من الموضوعات الإضافية: تكامل SQL إلى XML ، وذكاء الأعمال OLAP ، والمزيد.

إريك ريدموند ، قواعد بيانات جيم ر ويلسون سبع في سبعة أسابيع. مقدمة في قواعد البيانات الحديثة وإيديولوجيا NoSQL "(2015)

يغطي الكتاب معظم قواعد البيانات مفتوحة المصدر اليوم: Redis و Neo4J و CouchDB و MongoDB و HBase و PostgreSQL و Riak. لكل قاعدة بيانات ، يتم تقديم أمثلة على العمل مع بيانات حقيقية ، مع توضيح الأفكار الرئيسية ونقاط القوة.
يلقي هذا الكتاب الضوء على نقاط القوة والضعف في كل قاعدة من قواعد البيانات السبع ويعلمك كيفية اختيار أفضل قاعدة تلبي احتياجاتك.

صوت واحد

مرحبا بك في مدونتي الالكترونية. اليوم سوف نتحدث عن استعلامات SQL للمبتدئين. قد يكون لدى بعض مشرفي المواقع سؤال. لماذا تعلم SQL؟ لا تستطيع الحصول عليها؟

اتضح أن هذا لن يكون كافيًا لإنشاء مشروع إنترنت احترافي. يستخدم Sql للعمل مع قاعدة البيانات وإنشاء تطبيقات لـ WordPress. دعنا نلقي نظرة على كيفية استخدام الاستعلامات بمزيد من التفصيل.

ما هذا

SQL هي لغة استعلام منظمة. تم إنشاؤه لتحديد نوع البيانات وإتاحة الوصول إليها ومعالجة المعلومات في فترات زمنية قصيرة. يصف المكونات أو بعض النتائج التي تريد رؤيتها في مشروع الإنترنت.

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

ماذا يمكن فعله

تسمح لغة SQL بما يلي:

  • إنشاء الجداول
  • تغيير استقبال وتخزين البيانات المختلفة ؛
  • تجميع المعلومات في كتل ؛
  • حماية البيانات
  • إنشاء طلبات في الوصول.

مهم! بعد التعامل مع SQL ، يمكنك كتابة تطبيقات WordPress بأي تعقيد.

ما الهيكل

تتكون قاعدة البيانات من جداول يمكن تمثيلها كملف Excel.

لديها اسم وأعمدة وصف مع بعض المعلومات. يمكنك إنشاء مثل هذه الجداول باستخدام استعلامات SQL.

ما تحتاج إلى معرفته


النقاط الأساسية عند تعلم Sql

كما هو مذكور أعلاه ، يتم استخدام الاستعلامات لمعالجة وإدخال معلومات جديدة في قاعدة بيانات تتكون من جداول. كل سطر هو إدخال منفصل. لذلك دعونا ننشئ قاعدة بيانات. للقيام بذلك ، اكتب الأمر:

إنشاء قاعدة بيانات "bazaname"

بين علامات الاقتباس نكتب اسم قاعدة البيانات باللغة اللاتينية. حاول التفكير في اسم ذي معنى لها. لا تقم بإنشاء قاعدة بيانات مثل "111" و "www" وما شابه ذلك.

بعد إنشاء قاعدة البيانات ، قم بتثبيت:

تعيين الأسماء "utf-8"

يعد ذلك ضروريًا حتى يتم عرض المحتوى على الموقع بشكل صحيح.

الآن نقوم بإنشاء جدول:

إنشاء جدول "بازانامي". 'طاولة' (

معرف INT (8) NOT NULL AUTO_INCREMENT PRIMARY KEY ،

سجل فاركار (10) ،

اجتياز VARCHAR (10) ،

التاريخ DATE

في السطر الثاني ، كتبنا ثلاث سمات. دعونا نرى ماذا يقصدون:

  • تعني السمة NOT NULL أن الخلية لن تكون فارغة (الحقل مطلوب) ؛
  • قيمة AUTO_INCREMENT هي الإكمال التلقائي ؛
  • المفتاح الأساسي هو المفتاح الأساسي.

كيفية إضافة المعلومات

لتعبئة حقول الجدول الذي تم إنشاؤه بالقيم ، يتم استخدام عبارة INSERT. نكتب الأسطر التالية من التعليمات البرمجية:

إدراج في "الجدول"

(تسجيل الدخول ، تمرير ، التاريخ) القيم

('Vasa'، '87654321'، '2017-06-21 18:38:44') ؛

بين قوسين نشير إلى اسم الأعمدة ، وفي التالي - القيم.

مهم! اتبع تسلسل أسماء الأعمدة والقيم.

كيفية تحديث المعلومات

لهذا ، يتم استخدام الأمر UPDATE. دعونا نرى كيفية تغيير كلمة المرور لمستخدم معين. نكتب الأسطر التالية من التعليمات البرمجية:

UPDATE 'table' SET pass = '12345678' حيث المعرف = '1'

الآن قم بتغيير كلمة المرور إلى "12345678". تحدث التغييرات في السطر الذي يحتوي على "معرف" = 1. إذا لم تكتب الأمر WHERE ، فستتغير كل الأسطر ، وليس سطرًا محددًا.

أوصي بشراء الكتاب SQL للدمى ". بمساعدتها ، ستتمكن من العمل بشكل احترافي مع قاعدة البيانات خطوة بخطوة. جميع المعلومات مبنية على أساس المبدأ من البسيط إلى المعقد ، وسوف يتم استقبالها بشكل جيد.

كيفية حذف إدخال

إذا كتبت شيئًا خاطئًا ، فقم بتصحيحه باستخدام الأمر DELETE. يعمل بنفس طريقة UPDATE. نكتب الكود التالي:

احذف من "الجدول" حيث المعرف = "1"

أخذ عينات المعلومات

يتم استخدام الأمر SELECT لاسترداد القيم من قاعدة البيانات. نكتب الكود التالي:

حدد * من 'الجدول' حيث المعرف = '1'

في هذا المثال ، نختار جميع الحقول المتاحة في الجدول. يحدث هذا إذا كتبت علامة النجمة "*" في الأمر. إذا كنت بحاجة إلى اختيار قيمة نموذجية ، فاكتب مثل هذا:

حدد السجل ، مرر من الجدول حيث المعرف = '1'

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


حذف الجدول

يحدث مع طلب DROP. للقيام بذلك ، اكتب الأسطر التالية:

إسقاط الجدول الجدول.

إخراج سجل من جدول حسب شرط معين

ضع في اعتبارك هذا الرمز:

حدد معرف ، كونتري ، مدينة من الجدول حيث الناس> 150000000

سيعرض سجلات البلدان التي يزيد عدد سكانها عن مائة وخمسين مليون نسمة.

جمعية

يمكن ربط عدة جداول معًا باستخدام الانضمام. شاهد كيف يعمل في هذا الفيديو:

PHP و MySQL

مرة أخرى ، أود التأكيد على أن الطلبات عند إنشاء مشروع الإنترنت أمر شائع. لاستخدامها في مستندات php ، اتبع خوارزمية الإجراءات التالية:

  • اتصل بقاعدة البيانات باستخدام الأمر mysql_connect () ؛
  • باستخدام mysql_select_db () حدد قاعدة البيانات المطلوبة ؛
  • معالجة الاستعلام باستخدام mysql_fetch_array () ؛
  • نغلق الاتصال بالأمر mysql_close ().

مهم! العمل مع قاعدة بيانات ليس بالأمر الصعب. الشيء الرئيسي هو كتابة الطلب بشكل صحيح.

سوف يفكر مشرفو المواقع المبتدئين. وماذا تقرأ في هذا الموضوع؟ أود أن أوصي بكتاب مارتن جرابر " SQL لمجرد البشر ". إنه مكتوب بطريقة يفهمها المبتدئين كل شيء. استخدمه ككتاب مرجعي.

لكن هذه نظرية. كيف تعمل في الواقع العملي؟ في الواقع ، يجب ألا يتم إنشاء مشروع إنترنت فحسب ، بل يجب أيضًا إحضاره إلى قمة Google و Yandex. ستساعدك دورة الفيديو في هذا " إنشاء الموقع والترويج له ».


تعليمات الفيديو

لا يزال لديك أسئلة؟ شاهد المزيد من مقاطع الفيديو عبر الإنترنت.

خاتمة

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

  • درس تعليمي

ما هو هذا البرنامج التعليمي حول؟

هذا البرنامج التعليمي يشبه "طابع ذاكرتي" بلغة SQL (DDL ، DML) ، أي هذه هي المعلومات التي تراكمت في سياق أنشطتي المهنية ويتم تخزينها باستمرار في رأسي. هذا هو الحد الأدنى الكافي بالنسبة لي ، والذي يتم استخدامه غالبًا عند العمل مع قواعد البيانات. إذا دعت الحاجة إلى استخدام بنيات SQL أكثر اكتمالاً ، فعادةً ما ألجأ إلى مكتبة MSDN الموجودة على الإنترنت للحصول على المساعدة. في رأيي ، الاحتفاظ بكل شيء في رأسك صعب للغاية ، ولا توجد حاجة خاصة لذلك. لكن معرفة التركيبات الأساسية مفيد للغاية ، لأن. إنها قابلة للتطبيق بنفس الشكل تقريبًا في العديد من قواعد البيانات العلائقية مثل Oracle و MySQL و Firebird. الاختلافات بشكل رئيسي في أنواع البيانات ، والتي قد تختلف في التفاصيل. لا يوجد الكثير من تركيبات لغة SQL الأساسية ، ومع الممارسة المستمرة يتم تذكرها بسرعة. على سبيل المثال ، لإنشاء كائنات (جداول ، قيود ، فهارس ، إلخ.) يكفي أن يكون لديك محرر نصوص البيئة (IDE) في متناول اليد للعمل مع قاعدة بيانات ، وليست هناك حاجة لتعلم مجموعة أدوات بصرية تم شحذها من أجل العمل مع نوع معين من قواعد البيانات (MS SQL ، Oracle ، MySQL ، Firebird ،…). هذا مناسب أيضًا لأن النص بأكمله أمام عينيك ، ولست بحاجة إلى المرور عبر العديد من علامات التبويب من أجل إنشاء ، على سبيل المثال ، فهرس أو حد. عند العمل باستمرار مع قاعدة البيانات ، فإن إنشاء كائن وتعديله وإعادة إنشائه بشكل خاص باستخدام البرامج النصية يكون أسرع بعدة مرات مما لو كان يتم في الوضع المرئي. أيضًا في وضع النص (على التوالي ، مع العناية الواجبة) ، من الأسهل تعيين قواعد تسمية الكائنات والتحكم فيها (رأيي الشخصي). بالإضافة إلى ذلك ، تعتبر البرامج النصية ملائمة للاستخدام عند الحاجة إلى نقل التغييرات التي تم إجراؤها في قاعدة بيانات واحدة (على سبيل المثال ، اختبار واحد) في نفس النموذج إلى قاعدة بيانات أخرى (إنتاجية).

لغة SQL مقسمة إلى عدة أجزاء ، وهنا سأفكر في أهم جزأين منها:
  • DML - لغة معالجة البيانات (لغة معالجة البيانات) ، والتي تحتوي على التركيبات التالية:
    • حدد - اختيار البيانات
    • INSERT - إدخال بيانات جديدة
    • تحديث - تحديث البيانات
    • حذف - حذف البيانات
    • MERGE - دمج البيانات
لأن أنا ممارس ، وبالتالي سيكون هناك القليل من النظرية في هذا الكتاب المدرسي ، وسيتم شرح جميع الإنشاءات بأمثلة عملية. بالإضافة إلى ذلك ، أعتقد أنه لا يمكن إتقان لغة البرمجة ، وخاصة SQL ، إلا في الممارسة العملية ، من خلال لمسها بنفسك وفهم ما يحدث عند تنفيذ هذا البناء أو ذاك.

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

عند كتابة هذا البرنامج التعليمي ، استخدمت قاعدة بيانات MS SQL Server إصدار 2014 ، واستخدمت MS SQL Server Management Studio (SSMS) لتشغيل البرامج النصية.

باختصار عن MS SQL Server Management Studio (SSMS)

يعد SQL Server Management Studio (SSMS) أداة مساعدة لـ Microsoft SQL Server لتكوين مكونات قاعدة البيانات وإدارتها وإدارتها. تحتوي هذه الأداة المساعدة على محرر نصوص (سنستخدمه بشكل أساسي) وبرنامج رسومي يعمل مع الكائنات وإعدادات الخادم. الأداة الرئيسية لـ SQL Server Management Studio هي مستكشف الكائنات ، والتي تتيح للمستخدم عرض واسترداد وإدارة كائنات الخادم. هذا النص مستعار جزئيًا من ويكيبيديا.

لإنشاء محرر نصوص جديد ، استخدم زر استعلام جديد:

لتغيير قاعدة البيانات الحالية ، يمكنك استخدام القائمة المنسدلة:

لتنفيذ أمر معين (أو مجموعة أوامر) ، حدده واضغط على الزر "تنفيذ" أو اضغط على مفتاح "F5". إذا كان هناك أمر واحد فقط في المحرر في الوقت الحالي ، أو إذا كنت بحاجة إلى تنفيذ جميع الأوامر ، فلن تحتاج إلى تحديد أي شيء.

بعد تنفيذ البرامج النصية ، خاصة تلك التي تنشئ كائنات (جداول ، أعمدة ، فهارس) ، لمشاهدة التغييرات ، استخدم "تحديث" من قائمة السياق ، مع تمييز المجموعة المناسبة (على سبيل المثال ، الجداول) ، أو الجدول نفسه ، أو مجموعة الأعمدة فيه .

في الواقع ، هذا كل ما نحتاج إلى معرفته لإكمال الأمثلة الواردة هنا. من السهل تعلم بقية الأداة المساعدة SSMS بنفسك.

قليلا من النظرية

قاعدة البيانات العلائقية (RDB ، أو أكثر في سياق قاعدة البيانات فقط) هي مجموعة من الجداول المترابطة. بشكل تقريبي ، قاعدة البيانات هي ملف يتم فيه تخزين البيانات في شكل منظم.

DBMS - نظام إدارة قواعد البيانات هذه ، أي هذه مجموعة من الأدوات للعمل مع نوع معين من قواعد البيانات (MS SQL ، Oracle ، MySQL ، Firebird ، ...).

ملحوظة
لأن في الحياة ، في الخطاب العامي ، نقول في الغالب: "Oracle DB" ، أو حتى "Oracle" فقط ، والتي تعني في الواقع "Oracle DBMS" ، ثم في سياق هذا البرنامج التعليمي ، سيتم استخدام مصطلح DB أحيانًا. من السياق ، أعتقد أنه سيكون من الواضح ما هو على المحك بالضبط.

الجدول عبارة عن مجموعة من الأعمدة. يمكن أيضًا تسمية الأعمدة بالحقول أو الأعمدة ، وسيتم استخدام كل هذه الكلمات كمرادفات للتعبير عن نفس الشيء.

الجدول هو الكائن الرئيسي لـ RDB ، يتم تخزين جميع بيانات RDB سطرًا سطرًا في أعمدة الجدول. السطور والسجلات هي أيضا مرادفات.

لكل جدول ، بالإضافة إلى أعمدته ، يتم إعطاء الأسماء ، والتي يشار إليها لاحقًا.
يمكن أن يصل طول اسم الكائن (اسم الجدول ، واسم العمود ، واسم الفهرس ، وما إلى ذلك) في MS SQL إلى 128 حرفًا كحد أقصى.

كمرجع- في قاعدة بيانات ORACLE ، يمكن أن يبلغ طول أسماء الكائنات 30 حرفًا كحد أقصى. لذلك ، بالنسبة لقاعدة بيانات معينة ، تحتاج إلى تطوير القواعد الخاصة بك لتسمية الكائنات من أجل تلبية الحد الأقصى لعدد الأحرف.

SQL هي لغة تسمح لك بالاستعلام عن قاعدة البيانات من خلال DBMS. في نظام DBMS معين ، قد يكون للغة SQL تطبيق محدد (لهجتها الخاصة).

DDL و DML مجموعة فرعية من لغة SQL:

  • تُستخدم لغة DDL لإنشاء بنية قاعدة البيانات وتعديلها ، أي لإنشاء / تعديل / حذف الجداول والعلاقات.
  • تسمح لك لغة DML بمعالجة بيانات الجدول ، أي مع خطوطها. يسمح لك بتحديد البيانات من الجداول وإضافة بيانات جديدة إلى الجداول وتحديث البيانات الموجودة وحذفها.

في لغة SQL ، يمكنك استخدام نوعين من التعليقات (سطر واحد ومتعدد الأسطر):

تعليق سطر واحد
و

/ * تعليق متعدد الأسطر * /

في الواقع ، كل شيء لنظرية هذا سيكون كافياً.

DDL - لغة تعريف البيانات (لغة وصف البيانات)

على سبيل المثال ، ضع في اعتبارك جدولًا يحتوي على بيانات حول الموظفين ، بالشكل المألوف لشخص ليس مبرمجًا:

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

يمكن تمييز كل عمود من هذه الأعمدة بنوع البيانات التي يحتوي عليها:

  • عدد الموظفين - عدد صحيح
  • الاسم الكامل - سلسلة
  • تاريخ الميلاد - التاريخ
  • البريد الإلكتروني - سلسلة
  • الموضع - الخيط
  • قسم - سلسلة
نوع العمود هو خاصية تشير إلى نوع البيانات التي يمكن لهذا العمود تخزينها.

بادئ ذي بدء ، يكفي أن نتذكر فقط أنواع البيانات الأساسية التالية المستخدمة في MS SQL:

معنى الترميز في MS SQL وصف
سلسلة طول متغير فارشار (ن)
و
نفارشار (N)
باستخدام الرقم N ، يمكننا تحديد أقصى طول ممكن للسلسلة للعمود المقابل. على سبيل المثال ، إذا أردنا أن نقول إن قيمة عمود "الاسم" يمكن أن تحتوي على 30 حرفًا كحد أقصى ، فسنحتاج إلى تعيين نوعه على nvarchar (30).
الفرق بين varchar و nvarchar هو أن varchar يسمح لك بتخزين السلاسل بتنسيق ASCII ، حيث يشغل حرف واحد بايت واحد ، بينما يقوم nvarchar بتخزين السلاسل بتنسيق Unicode ، حيث يشغل كل حرف 2 بايت.
يجب استخدام نوع varchar فقط إذا كنت متأكدًا بنسبة 100٪ من أن الحقل لن يحتاج إلى تخزين أحرف Unicode. على سبيل المثال ، يمكن استخدام varchar لتخزين عناوين البريد الإلكتروني بسبب عادة ما تحتوي على أحرف ASCII فقط.
سلسلة ذات طول ثابت شار (ن)
و
نشار (ن)
يختلف هذا النوع عن السلسلة ذات الطول المتغير في أنه إذا كان طول السلسلة أقل من حرف N ، فإنه دائمًا ما يكون مبطنًا على اليمين حتى طول مسافات N ويتم تخزينه في قاعدة البيانات بهذا الشكل ، أي في قاعدة البيانات ، يحتل حرف N بالضبط (حيث يحتل حرف واحد بايتًا واحدًا لـ char و 2 بايت لـ nchar). في ممارستي ، نادرًا ما يتم استخدام هذا النوع ، وإذا تم استخدامه ، فسيتم استخدامه بشكل أساسي في تنسيق char (1) ، أي عندما يتم تحديد الحقل بحرف واحد.
عدد صحيح int يسمح لنا هذا النوع باستخدام الأعداد الصحيحة فقط ، الموجبة والسالبة ، في العمود. كمرجع (الآن لم يعد مناسبًا لنا) - نطاق الأرقام الذي يسمح به النوع int من -2 147483 648 إلى 2147483 647. هذا هو عادةً النوع الرئيسي المستخدم لتعيين المعرفات.
رقم حقيقي أو حقيقي يطفو بعبارات بسيطة ، هذه هي الأرقام التي قد تكون فيها الفاصلة العشرية (الفاصلة) موجودة.
تاريخ تاريخ إذا احتاج العمود إلى تخزين التاريخ فقط ، والذي يتكون من ثلاثة مكونات: الرقم والشهر والسنة. على سبيل المثال ، 02/15/2014 (15 فبراير 2014). يمكن استخدام هذا النوع في العمود "تاريخ القبول" و "تاريخ الميلاد" وما إلى ذلك ، أي في الحالات التي يكون فيها من المهم بالنسبة لنا تحديد التاريخ فقط ، أو عندما لا يكون عنصر الوقت مهمًا بالنسبة لنا ويمكن تجاهله ، أو إذا لم يكن معروفًا.
وقت وقت يمكن استخدام هذا النوع إذا احتاج العمود إلى تخزين بيانات الوقت فقط ، أي الساعات والدقائق والثواني والميلي ثانية. على سبيل المثال ، 17: 38: 31.3231603
على سبيل المثال ، "وقت مغادرة الرحلة" اليومي.
التاريخ و الوقت التاريخ والوقت يسمح لك هذا النوع بتخزين التاريخ والوقت في نفس الوقت. على سبيل المثال ، 02/15/2014 5:38: 31.323 مساءً
على سبيل المثال ، قد يكون هذا هو تاريخ ووقت الحدث.
علَم قليل هذا النوع مفيد لتخزين قيم نعم / لا ، حيث سيتم تخزين نعم كـ 1 وسيتم تخزين لا كـ 0.

أيضًا ، قد لا يتم تحديد قيمة الحقل ، في حالة عدم حظره ، ولهذا الغرض يتم استخدام الكلمة الأساسية NULL.

لتشغيل الأمثلة ، دعنا ننشئ قاعدة بيانات اختبار تسمى Test.

يمكن إنشاء قاعدة بيانات بسيطة (بدون تحديد معلمات إضافية) عن طريق تشغيل الأمر التالي:

إنشاء اختبار قاعدة البيانات
يمكنك حذف قاعدة البيانات باستخدام الأمر (يجب أن تكون حذرًا جدًا مع هذا الأمر):

اختبار DROP DATABASE
للتبديل إلى قاعدة البيانات الخاصة بنا ، يمكنك تشغيل الأمر:

اختبار الولايات المتحدة
بدلاً من ذلك ، حدد اختبار قاعدة البيانات من القائمة المنسدلة في منطقة قائمة SSMS. في العمل ، غالبًا ما أستخدم هذه الطريقة للتبديل بين قواعد البيانات.

الآن في قاعدة البيانات الخاصة بنا يمكننا إنشاء جدول باستخدام الأوصاف كما هي ، باستخدام المسافات والأحرف السيريلية:

CREATE TABLE [Employees] ([Personnel Number] int، [Name] nvarchar (30)، [تاريخ الميلاد] تاريخ، nvarchar (30)، [Position] nvarchar (30)، [Department] nvarchar (30))
في هذه الحالة ، سيتعين علينا وضع الأسماء بين قوسين معقوفين [...].

ولكن في قاعدة البيانات ، لمزيد من الراحة ، من الأفضل تحديد جميع أسماء الكائنات باللغة اللاتينية وعدم استخدام مسافات في الأسماء. في MS SQL ، عادةً في هذه الحالة ، تبدأ كل كلمة بحرف كبير ، على سبيل المثال ، لحقل "رقم الأفراد" ، يمكننا تعيين اسم PersonnelNumber. يمكنك أيضًا استخدام الأرقام في الاسم ، على سبيل المثال ، رقم الهاتف 1.

في المذكرة
في بعض نظم إدارة قواعد البيانات ، قد يكون التنسيق التالي للأسماء "PHONE_NUMBER" أكثر تفضيلاً ، على سبيل المثال ، غالبًا ما يستخدم هذا التنسيق في قاعدة بيانات ORACLE. بطبيعة الحال ، عند تعيين اسم الحقل ، من المستحسن ألا يتطابق مع الكلمات الرئيسية المستخدمة في نظام إدارة قواعد البيانات.

لهذا السبب ، يمكنك تجاهل بنية الأقواس المربعة وحذف جدول [الموظفون]:

إسقاط الجدول [الموظفون]
على سبيل المثال ، يمكن تسمية جدول بالموظفين "موظفين" ويمكن إعطاء حقوله الأسماء التالية:

  • الهوية - رقم الموظف (معرف الموظف)
  • الاسم - الاسم الكامل
  • تاريخ الميلاد - تاريخ الميلاد
  • بريد إلكتروني
  • موضع
  • الدائرة - الدائرة
في كثير من الأحيان ، يتم استخدام كلمة ID لتسمية حقل المعرف.

الآن لنقم بإنشاء طاولتنا:

إنشاء موظفين جدول (معرف int ، اسم nvarchar (30) ، تاريخ ميلاد ، البريد الإلكتروني nvarchar (30) ، Position nvarchar (30) ، Department nvarchar (30))
يمكنك استخدام خيار NOT NULL لتحديد الأعمدة المطلوبة.

بالنسبة لجدول موجود بالفعل ، يمكن إعادة تعريف الحقول باستخدام الأوامر التالية:

تحديث حقل المعرف ALTER TABLE الموظفون ALTER COLUMN ID int NOT NULL - تحديث حقل الاسم ALTER TABLE الموظفون ALTER COLUMN Name nvarchar (30) NOT NULL

في المذكرة
يظل المفهوم العام للغة SQL لمعظم نظم إدارة قواعد البيانات كما هو (على الأقل ، يمكنني الحكم على ذلك من خلال نظام إدارة قواعد البيانات (DBMS) الذي أتيحت لي فرصة العمل به). يكمن الاختلاف بين DDL في أنظمة DBMS المختلفة بشكل أساسي في أنواع البيانات (ليس فقط أسماءها ، ولكن قد تختلف أيضًا تفاصيل تنفيذها هنا) ، وقد تختلف أيضًا تفاصيل تطبيق لغة SQL بشكل طفيف (أي جوهر الأوامر هي نفسها ، ولكن قد تكون هناك اختلافات طفيفة في اللهجة ، للأسف ، لكن لا يوجد معيار واحد). بمعرفة أساسيات SQL ، يمكنك التبديل بسهولة من نظام DBMS إلى آخر. في هذه الحالة ، ستحتاج فقط إلى فهم تفاصيل تنفيذ الأوامر في نظام إدارة قواعد البيانات الجديد ، أي في معظم الحالات ، يكفي إجراء مقارنة.

إنشاء الجدول CREATE TABLE Employees (ID int ، - في نوع ORACLE int هو المكافئ (المجمع) للرقم (38) الاسم nvarchar2 (30) ، - nvarchar2 في ORACLE يعادل nvarchar في تاريخ ميلاد MS SQL ، البريد الإلكتروني nvarchar2 ( 30) ، الوظيفة nvarchar2 (30) ، قسم nvarchar2 (30)) ؛ - تحديث حقول المعرف والاسم (هنا يتم استخدام تعديل (...) بدلاً من ALTER COLUMN ALTER TABLE) تعديل الموظفين (ID int NOT NULL ، Name nvarchar2 (30) NOT NULL) ؛ - إضافة PK (في هذه الحالة ، يبدو البناء في MS SQL ، سيظهر أدناه) ALTER TABLE الموظفون أضف CONSTRAINT PK_Employees PRIMARY KEY (ID) ؛
بالنسبة إلى ORACLE ، توجد اختلافات من حيث تنفيذ نوع varchar2 ، ويعتمد ترميزه على إعدادات قاعدة البيانات ويمكن حفظ النص ، على سبيل المثال ، في ترميز UTF-8. بالإضافة إلى ذلك ، يمكن تعيين طول الحقل في ORACLE بالبايت وبالأحرف ، لذلك ، يتم استخدام خيارات إضافية BYTE و CHAR ، والتي يتم تحديدها بعد طول الحقل ، على سبيل المثال:

NAME varchar2 (30 BYTE) - ستكون السعة الميدانية 30 بايت. NAME varchar2 (30 CHAR) - سعة الحقل ستكون 30 حرفًا
الخيار الذي سيتم استخدامه افتراضيًا BYTE أو CHAR ، في حالة المواصفات البسيطة لنوع varchar2 (30) في ORACLE ، يعتمد على إعدادات قاعدة البيانات ، ويمكن أيضًا تعيينه في بعض الأحيان في إعدادات IDE. بشكل عام ، في بعض الأحيان يمكن أن تشعر بالارتباك بسهولة ، لذلك في حالة ORACLE ، إذا تم استخدام نوع varchar2 (وهذا مبرر أحيانًا هنا ، على سبيل المثال ، عند استخدام ترميز UTF-8) ، فأنا أفضل كتابة CHAR بشكل صريح (لأن عادة ما يكون أكثر ملاءمة لقراءة طول السلسلة بالأحرف).

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

إدراج الموظفين (المعرف ، المنصب ، القسم) القيم (1000، N "Director"، N "Administration")، (1001، N "Programmer"، N "IT")، (1002، N "Accountant"، N "Accounting" )، (1003، N "مبرمج أول"، N "IT")
في هذه الحالة ، سيظهر الأمر INSERT أيضًا خطأ ، لأن عند الإدراج ، لم نحدد قيمة حقل الاسم المطلوب.
في حالة وجود هذه البيانات بالفعل في الجدول الأصلي ، سينجح الأمر "ALTER TABLE Employees ALTER COLUMN ID int NOT NULL" ، وسيصدر الأمر "ALTER TABLE Employees ALTER COLUMN Name int NOT NULL" خطأ رسالة ، أن هناك قيمًا فارغة (غير محددة) في حقل الاسم.

دعنا نضيف قيمًا لحقل الاسم ونملأ البيانات مرة أخرى:


أيضًا ، يمكن استخدام الخيار NOT NULL مباشرةً عند إنشاء جدول جديد ، أي في سياق الأمر CREATE TABLE.

أولاً ، احذف الجدول بالأمر:

إسقاط موظفي الجدول
لنقم الآن بإنشاء جدول به أعمدة المعرف والاسم الإلزامية:

إنشاء موظفين جدول (ID int NOT NULL ، اسم nvarchar (30) NOT NULL ، تاريخ ميلاد ، البريد الإلكتروني nvarchar (30) ، Position nvarchar (30) ، Department nvarchar (30))
يمكنك أيضًا كتابة NULL بعد اسم العمود ، مما يعني أنه سيتم السماح بقيم NULL (غير محددة) فيه ، لكن هذا ليس ضروريًا ، لأن هذه الخاصية ضمنية بشكل افتراضي.

على العكس من ذلك ، إذا كنت تريد أن تجعل عمودًا موجودًا اختياريًا ، فاستخدم بناء جملة الأمر التالي:

ALTER TABLE الموظفون ALTER COLUMN Name nvarchar (30) NULL
أو ببساطة:

تبديل الموظفين الجدول اسم العمود nvarchar (30)
باستخدام هذا الأمر ، يمكننا أيضًا تغيير نوع الحقل إلى نوع آخر متوافق ، أو تغيير طوله. على سبيل المثال ، دعنا نوسع حقل الاسم إلى 50 حرفًا:

تبديل الموظفين الجدول اسم العمود nvarchar (50)

المفتاح الأساسي

عند إنشاء جدول ، من المستحسن أن يحتوي على عمود فريد أو مجموعة من الأعمدة الفريدة لكل من صفوفه - يمكن تعريف السجل بشكل فريد بهذه القيمة الفريدة. تسمى هذه القيمة المفتاح الأساسي للجدول. بالنسبة لجدول الموظفين لدينا ، يمكن أن تكون هذه القيمة الفريدة هي عمود المعرف (الذي يحتوي على "رقم موظف الموظف" - حتى إذا كانت هذه القيمة في حالتنا فريدة لكل موظف ولا يمكن تكرارها).

يمكنك إنشاء مفتاح أساسي لجدول موجود باستخدام الأمر:

ALTER TABLE الموظفون إضافة CONSTRAINT PK_Employees المفتاح الأساسي (ID)
حيث "PK_Employees" اسم القيد المسؤول عن المفتاح الأساسي. عادةً ما يتم تسمية المفتاح الأساسي بالبادئة "PK_" متبوعة باسم الجدول.

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

ALTER TABLE جدول_اسم أضف CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT PRIMARY KEY (field1، field2،…)
تجدر الإشارة إلى أنه في MS SQL ، يجب أن تحتوي جميع الحقول المضمنة في المفتاح الأساسي على خاصية NOT NULL.

أيضًا ، يمكن تحديد المفتاح الأساسي مباشرةً عند إنشاء جدول ، أي في سياق الأمر CREATE TABLE. لنحذف الجدول:

إسقاط موظفي الجدول
ثم قم بإنشائه باستخدام الصيغة التالية:

إنشاء موظفين جدول (ID int NOT NULL ، اسم nvarchar (30) NOT NULL ، تاريخ ميلاد ، البريد الإلكتروني nvarchar (30) ، Position nvarchar (30) ، Department nvarchar (30) ، CONSTRAINT PK_Employees PRIMARY KEY (ID) - وصف PK بعد جميع الحقول كقيد)
بعد الإنشاء ، املأ بيانات الجدول:

إدراج الموظفين (المعرف ، المنصب ، القسم ، الاسم) القيم (1000 ، N "مدير" ، N "الإدارة" ، N "Ivanov II.) ، (1001 ، N" مبرمج "، N" IT "، N" Petrov P.P. " )، (1002، N "Accountant"، N "Accounting"، N "Sidorov S.S.")، (1003، N "Senior Programmer"، N "IT"، N "Andreev A. A.")
إذا كان المفتاح الأساسي في الجدول يتكون من قيم عمود واحد فقط ، فيمكن استخدام الصيغة التالية:

إنشاء موظفين جدول (ID int NOT NULL CONSTRAINT PK_Employees PRIMARY KEY، - حدد الاسم nvarchar (30) NOT NULL، تاريخ الميلاد، البريد الإلكتروني nvarchar (30)، Position nvarchar (30)، Department nvarchar (30))
في الواقع ، يمكن حذف اسم القيد ، وفي هذه الحالة سيتم إعطاؤه اسم نظام (مثل "PK__Employee__3214EC278DA42077"):

إنشاء موظفين جدول (ID int NOT NULL ، اسم nvarchar (30) NOT NULL ، تاريخ ميلاد ، البريد الإلكتروني nvarchar (30) ، Position nvarchar (30) ، Department nvarchar (30) ، PRIMARY KEY (ID))
أو:

إنشاء موظفين جدول (ID int NOT NULL PRIMARY KEY، Name nvarchar (30) NOT NULL، Birthday date، Email nvarchar (30)، Position nvarchar (30)، Department nvarchar (30))
لكني أوصي بأن تقوم دائمًا بتعيين اسم القيد للجداول الدائمة بشكل صريح ، لأن من خلال اسم واضح ومفهوم ، سيكون من الأسهل معالجته لاحقًا ، على سبيل المثال ، يمكنك حذفه:

ALTER TABLE الموظفون إسقاط CONSTRAINT PK_Employees
لكن مثل هذا التركيب المختصر ، دون تحديد أسماء القيود ، يكون مناسبًا للاستخدام عند إنشاء جداول قاعدة بيانات مؤقتة (يبدأ اسم الجدول المؤقت بـ # أو ##) ، والتي سيتم حذفها بعد الاستخدام.

دعونا نلخص

لقد قمنا حتى الآن بتغطية الأوامر التالية:
  • اصنع جدول table_name (تعداد الحقول وأنواعها ، والقيود) - تُستخدم لإنشاء جدول جديد في قاعدة البيانات الحالية ؛
  • إسقاط الجدول table_name - يستخدم لحذف جدول من قاعدة البيانات الحالية ؛
  • تغيير الجدولاسم الطاولة تغيير العموداسم_العمود ... - يُستخدم لتحديث نوع العمود أو لتغيير إعداداته (على سبيل المثال ، لضبط خاصية NULL أو NOT NULL) ؛
  • تغيير الجدولاسم الطاولة إضافة قيدقيد_اسم المفتاح الأساسي(الحقل 1 ، الحقل 2 ، ...) - إضافة مفتاح أساسي إلى جدول موجود ؛
  • تغيير الجدولاسم الطاولة قيود السقوطاسم القيد - إزالة القيد من الجدول.

قليلا عن الطاولات المؤقتة

لقطة من MSDN.هناك نوعان من الجداول المؤقتة في MS SQL Server: المحلية (#) والعالمية (##). تكون الجداول المؤقتة المحلية مرئية فقط لمنشئيها حتى يتم إنهاء جلسة الاتصال بمثيل SQL Server بمجرد إنشائها لأول مرة. يتم حذف الجداول المؤقتة المحلية تلقائيًا بعد قطع اتصال المستخدم بمثيل SQL Server. تكون الجداول المؤقتة العامة مرئية لكافة المستخدمين أثناء أي جلسات اتصال بعد إنشاء هذه الجداول ويتم حذفها عند قطع اتصال كافة المستخدمين الذين يشيرون إلى هذه الجداول من مثيل SQL Server.

يتم إنشاء الجداول المؤقتة في قاعدة بيانات نظام tempdb ، أي عند إنشائها ، لا نسد قاعدة البيانات الرئيسية ، وإلا فإن الجداول المؤقتة متطابقة تمامًا مع الجداول العادية ، ويمكن أيضًا حذفها باستخدام أمر DROP TABLE. يتم استخدام الجداول المحلية (#) بشكل أكثر شيوعًا.

لإنشاء جدول مؤقت ، يمكنك استخدام الأمر CREATE TABLE:

إنشاء جدول #Temp (معرف int ، اسم nvarchar (30))
نظرًا لأن الجدول المؤقت في MS SQL يشبه الجدول العادي ، يمكنك أيضًا حذفه وفقًا لأمر DROP TABLE:

إسقاط الجدول #Temp

يمكنك أيضًا إنشاء جدول مؤقت (بالإضافة إلى جدول عادي) وتعبئته على الفور بالبيانات التي يتم إرجاعها بواسطة الاستعلام باستخدام SELECT ... INTO syntax:

حدد المعرف ، الاسم في #Temp من الموظفين

في المذكرة
في نظم إدارة قواعد البيانات المختلفة ، قد يختلف تنفيذ الجداول المؤقتة. على سبيل المثال ، في ORACLE و Firebird DBMS ، يجب تحديد بنية الجداول المؤقتة مسبقًا بواسطة الأمر CREATE GLOBAL TEMPORARY TABLE ، مشيرًا إلى تفاصيل تخزين البيانات فيه ، ثم يراها المستخدم من بين الجداول الرئيسية ويعمل معها كما هو الحال مع الجدول العادي.

تطبيع قاعدة البيانات - تقسيمها إلى جداول فرعية (أدلة) وتحديد العلاقات

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

العيب الثاني هو مقدار تخزين هذه المعلومات وتكرارها ، أي: لكل موظف ، يشار إلى الاسم الكامل للقسم ، مما يتطلب مكانًا في قاعدة البيانات لتخزين كل حرف من اسم القسم.

العيب الثالث هو صعوبة تحديث هذه الحقول إذا تغير اسم الوظيفة ، على سبيل المثال ، إذا كنت بحاجة إلى إعادة تسمية الموضع "مبرمج" إلى "مبرمج مبتدئ". في هذه الحالة ، سيتعين علينا إجراء تغييرات على كل سطر من الجدول ، حيث يكون الموضع مساويًا لـ "مبرمج".

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

لنقم بإنشاء جدولين مرجعيين "المناصب" و "الأقسام" ، الأول يسمى المناصب ، والثاني ، على التوالي ، الأقسام:

إنشاء مواقع الجدول (ID int IDENTITY (1،1) NOT NULL CONSTRAINT PK_Positions PRIMARY KEY، Name nvarchar (30) NOT NULL) إنشاء أقسام الجدول (ID int IDENTITY (1،1) NOT NULL CONSTRAINT PK_Departments PRIMARY KEY، Name nvarchar (30) ) غير فارغة)
لاحظ أننا استخدمنا هنا خيار IDENTITY الجديد ، مما يعني أن البيانات الموجودة في عمود المعرف سيتم ترقيمها تلقائيًا ، بدءًا من 1 ، بخطوة 1 ، أي عند إضافة سجلات جديدة ، سيتم تعيين القيم 1 ، 2 ، 3 ، وهكذا بالتسلسل. تسمى هذه الحقول عادةً بالزيادة التلقائية. يمكن تعريف حقل واحد فقط بخاصية IDENTITY في جدول ، وعادةً ، ولكن ليس بالضرورة ، يكون هذا الحقل هو المفتاح الأساسي لهذا الجدول.

في المذكرة
في نظم إدارة قواعد البيانات المختلفة ، يمكن تنفيذ الحقول باستخدام عداد بشكل مختلف. في MySQL ، على سبيل المثال ، يتم تعريف هذا الحقل باستخدام خيار AUTO_INCREMENT. في ORACLE و Firebird ، كان من الممكن سابقًا محاكاة هذه الوظيفة باستخدام SEQUENCEs. ولكن على حد علمي ، أضافت ORACLE الآن خيار إنشاء هوية.

دعنا نملأ هذه الجداول تلقائيًا ، بناءً على البيانات الحالية المسجلة في حقلي الوظيفة والقسم في جدول الموظفين:

املأ حقل الاسم في جدول المناصب بقيم فريدة من حقل الموضع في جدول الموظفين أدخل المناصب (الاسم) حدد الوظيفة المميزة من الموظفين حيث الموضع ليس فارغًا - تجاهل السجلات بدون تحديد منصب
سنفعل الشيء نفسه بالنسبة لجدول الأقسام:

أدخل الأقسام (الاسم) حدد قسمًا مميزًا من الموظفين حيث القسم ليس فارغًا
إذا فتحنا الآن جداول المراكز والأقسام ، فسنرى مجموعة مرقمة من القيم في حقل المعرف:

حدد * من المناصب

حدد * من الإدارات

ستلعب هذه الجداول الآن دور الدلائل لتحديد المواقف والأقسام. سوف نشير الآن إلى معرفات الوظائف والقسم. بادئ ذي بدء ، لنقم بإنشاء حقول جديدة في جدول الموظفين لتخزين بيانات المعرف:

أضف حقلًا لمعرف الوظيفة ALTER TABLE الموظفون أضف PositionID int - أضف حقلًا لمعرف القسم ALTER TABLE الموظفون ADD DepartmentID int
يجب أن يكون نوع الحقول المرجعية هو نفسه الموجود في الدلائل ، وفي هذه الحالة يكون صحيحًا.

يمكنك أيضًا إضافة عدة حقول إلى الجدول مرة واحدة باستخدام أمر واحد ، مع سرد الحقول مفصولة بفواصل:

ALTER TABLE الموظفون إضافة PositionID int، DepartmentID int
لنكتب الآن روابط (قيود مرجعية - المفتاح الخارجي) لهذه الحقول ، حتى لا تتاح للمستخدم فرصة الكتابة في هذه الحقول ، القيم التي ليست من بين قيم المعرف في الدلائل.

ALTER TABLE الموظفون إضافة CONSTRAINT FK_Employees_PositionID FOREIGN KEY (PositionID) المراجع المناصب (ID)
وسنفعل الشيء نفسه بالنسبة للحقل الثاني:

ALTER TABLE الموظفون إضافة CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY (DepartmentID) المراجع الأقسام (ID)
سيتمكن المستخدم الآن من إدخال قيم المعرف فقط من الكتاب المرجعي المقابل في هذه الحقول. وفقًا لذلك ، من أجل استخدام قسم أو منصب جديد ، سيتعين عليه أولاً إضافة إدخال جديد إلى الدليل المقابل. لأن يتم الآن تخزين المناصب والأقسام في أدلة في نسخة واحدة ، ثم لتغيير الاسم ، يكفي تغييره فقط في الدليل.

عادة ما يكون اسم القيد المرجعي مركبًا ، ويتكون من البادئة "FK_" ، متبوعًا باسم الجدول ، وبعد الشرطة السفلية ، يأتي اسم الحقل الذي يشير إلى معرف جدول البحث.

المعرّف (ID) عادة ما يكون قيمة داخلية تُستخدم فقط للعلاقات والقيمة المخزنة هناك غير مبالية تمامًا في معظم الحالات ، لذلك ليست هناك حاجة لمحاولة التخلص من الثغرات في تسلسل الأرقام التي تنشأ في مسار العمل مع الجدول ، على سبيل المثال ، بعد حذف السجلات من الكتيب.

ALTER TABLE جدول إضافة CONSTRAINT CONSTRAINT CONSTRAINT_name FOREIGN KEY (field1، field2،…) المراجع جدول البحث (field1، field2،…)
في هذه الحالة ، في جدول "table_reference" ، يتم تمثيل المفتاح الأساسي بمجموعة من عدة حقول (الحقل 1 ، الحقل 2 ، ...).

في الواقع ، لنقم الآن بتحديث حقلي PositionID و DepartmentID بقيم المعرف من الدلائل. لنستخدم الأمر UPDATE DML لهذا الغرض:

UPDATE e SET PositionID = (اختر المعرف من المناصب حيث الاسم = الوظيفة الإلكترونية) ، معرف القسم = (حدد المعرف من الأقسام حيث الاسم = القسم الإلكتروني) من الموظفين e
دعونا نرى ما يحدث عن طريق تشغيل الاستعلام:

حدد * من الموظفين

هذا كل شيء ، يتم ملء حقلي PositionID و DepartmentID بالمناصب والأقسام المقابلة مع معرفات الحاجة في حقلي الوظيفة والقسم في جدول الموظفين الآن ، يمكنك حذف هذه الحقول:

ALTER TABLE موظفو إسقاط العمود المنصب ، الإدارة
يبدو الجدول الآن كما يلي:

حدد * من الموظفين

بطاقة تعريف اسم عيد ميلاد بريد إلكتروني PositionID معرف_القسم
1000 إيفانوف الأول. باطل باطل 2 1
1001 بيتروف ب. باطل باطل 3 3
1002 سيدوروف إس. باطل باطل 1 2
1003 أندريف أ. باطل باطل 4 3

أولئك. تخلصنا في النهاية من تخزين المعلومات الزائدة عن الحاجة. الآن ، من خلال أرقام الوظيفة والقسم ، يمكننا تحديد أسمائهم بشكل فريد باستخدام القيم الموجودة في جداول البحث:

حدد e.ID ، e.Name ، p الاسم PositionName ، d.Name DepartmentName من الموظفين e إدارات الانضمام اليسرى d ON d.ID = e.DepartmentID LEFT JOIN Positions p ON p.ID = e.PositionID

في Object Inspector ، يمكننا رؤية جميع الكائنات التي تم إنشاؤها لجدول معين. من هنا يمكنك أيضًا إجراء العديد من المعالجات باستخدام هذه الكائنات - على سبيل المثال ، إعادة تسمية الكائنات أو حذفها.

من الجدير بالذكر أيضًا أن الجدول يمكن أن يشير إلى نفسه ، أي يمكنك إنشاء ارتباط متكرر. على سبيل المثال ، دعنا نضيف حقل ManagerID آخر إلى جدولنا مع الموظفين ، والذي سيشير إلى الموظف الذي يتبعه هذا الموظف. لنقم بإنشاء حقل:

ALTER TABLE الموظفين إضافة ManagerID int
يُسمح بقيمة NULL في هذا الحقل ، وسيكون الحقل فارغًا ، على سبيل المثال ، إذا لم يكن هناك رؤساء فوق الموظف.

لنقم الآن بإنشاء مفتاح خارجي في جدول الموظفين:

ALTER TABLE الموظفون إضافة CONSTRAINT FK_Employees_ManagerID FOREIGN KEY (ManagerID) المراجع الموظفين (ID)
دعنا الآن ننشئ رسمًا تخطيطيًا ونرى كيف تبدو العلاقات بين جداولنا عليه:

نتيجة لذلك ، يجب أن نرى الصورة التالية (جدول الموظفين مرتبط بجداول المناصب والإيداع ، ويشير أيضًا إلى نفسه):

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

على سبيل المثال ، دعنا نعيد إنشاء الجدول باستخدام خيار ON DELETE CASCADE لـ FK_Employees_DepartmentID:

DROP TABLE الموظفون إنشاء جدول موظفين (ID int NOT NULL ، Name nvarchar (30) ، تاريخ الميلاد ، البريد الإلكتروني nvarchar (30) ، PositionID int ، DepartmentID int ، ManagerID int ، CONSTRAINT PK_Employees PRIMARY KEY (ID) ، CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY (DepartmentID) ) المراجع (ID) ON DELETE CASCADE، CONSTRAINT FK_Employees_PositionID FOREIGN KEY (PositionID) المراجع المناصب (ID)، CONSTRAINT FK_Employees_ManagerID FOREIGN KEY (ManagerID) المراجع الموظفون (معرف الميلاد) المراجع ) VALUES (1000، N "Ivanov I.I."، "19550219"، 2،1، NULL)، (1001، N "Petrov P.P."، "19831203"، 3،3،1003)، (1002، N "Sidorov SS" ، "19760607"، 1،2،1000)، (1003، N "Andreev A.A."، "19820417"، 4،3،1000)
لنحذف القسم الذي يحمل المعرّف 3 من جدول الأقسام:

حذف الأقسام حيث المعرف = 3
لنلقِ نظرة على البيانات الموجودة في جدول الموظفين:

حدد * من الموظفين

بطاقة تعريف اسم عيد ميلاد بريد إلكتروني PositionID معرف_القسم معرف_المدير
1000 إيفانوف الأول. 1955-02-19 باطل 2 1 باطل
1002 سيدوروف إس. 1976-06-07 باطل 1 2 1000

كما ترى ، تم أيضًا حذف بيانات القسم 3 من جدول الموظفين.

يتصرف خيار ON UPDATE CASCADE بشكل مشابه ، ولكنه يسري عند تحديث قيمة المعرف في الدليل. على سبيل المثال ، إذا قمنا بتغيير معرف الوظيفة في دليل الوظائف ، فسيتم في هذه الحالة تحديث معرف القسم في جدول الموظفين إلى قيمة المعرف الجديدة التي قمنا بتعيينها في الدليل. لكن في هذه الحالة ، ببساطة لن يكون من الممكن إثبات ذلك ، لأن. يحتوي عمود المعرف في جدول الأقسام على خيار IDENTITY ، والذي سيمنعنا من تنفيذ الاستعلام التالي (تغيير معرف القسم 3 إلى 30):

تحديث معرف مجموعة الإدارات = 30 حيث المعرف = 3
الشيء الرئيسي هو فهم جوهر هذين الخيارين عند حذف الحالة وعند التحديث. أستخدم هذه الخيارات في مناسبات نادرة جدًا ، ونوصيك بالتفكير مليًا قبل تحديدها في قيد مرجعي. إذا قمت بحذف سجل عن طريق الخطأ من الجدول المرجعي ، فقد يؤدي ذلك إلى مشاكل كبيرة وإنشاء تفاعل متسلسل.

لنقم باستعادة القسم 3:

منح الإذن لإضافة / تغيير قيم IDENTITY تعيين IDENTITY_INSERT الأقسام على INSERT الأقسام (المعرف والاسم) VALUES (3، N "IT") - رفض إضافة / تغيير قيم IDENTITY تعيين IDENTITY_INSERT الأقسام OFF
امسح جدول الموظفين تمامًا باستخدام أمر TRUNCATE TABLE:

اقتطاع موظفي الجدول
ومرة أخرى ، أعد تحميل البيانات إليها باستخدام أمر INSERT السابق:

INSERT Employees (ID، Name، Birthday، PositionID، DepartmentID، ManagerID) VALUES (1000، N "Ivanov II"، "19550219"، 2،1، NULL)، (1001، N "Petrov P.P."، "19831203"، 3 ، 31003)، (1002، N "Sidorov S.S."، "19760607"، 1،2،1000)، (1003، N "Andreev A.A."، "19820417"، 4،3،1000)

دعونا نلخص

في الوقت الحالي ، تمت إضافة عدد قليل من أوامر DDL إلى معرفتنا:
  • إضافة خاصية IDENTITY إلى الحقل - يسمح لك بتعبئة هذا الحقل تلقائيًا (حقل العداد) للجدول ؛
  • تغيير الجدولاسم الطاولة يضيف list_of_fields_with_characteristics - يسمح لك بإضافة حقول جديدة إلى الجدول ؛
  • تغيير الجدولاسم الطاولة إسقاط العمود list_of_fields - يسمح لك بإزالة الحقول من الجدول ؛
  • تغيير الجدولاسم الطاولة إضافة قيدقيد_اسم مفتاح غريب(مجالات) مراجع lookup_table (الحقول) - يسمح لك بتعريف علاقة بين جدول وجدول بحث.

قيود أخرى - فريدة ، افتراضية ، تحقق

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

تحديث الموظفين تعيين البريد الإلكتروني = " [بريد إلكتروني محمي]"حيث المعرف = 1000 موظف تحديث تعيين البريد الإلكتروني =" [بريد إلكتروني محمي]"حيث المعرف = 1001 تحديث الموظفين تعيين البريد الإلكتروني =" [بريد إلكتروني محمي]"حيث المعرف = 1002 تحديث الموظفين تعيين البريد الإلكتروني =" [بريد إلكتروني محمي]"حيث المعرف = 1003
والآن يمكنك فرض قيود فريدة على هذا المجال:

ALTER TABLE الموظفون إضافة CONSTRAINT UQ_Employees_Email فريد (بريد إلكتروني)
الآن لن يتمكن المستخدم من إدخال نفس البريد الإلكتروني لعدة موظفين.

عادةً ما يتم تسمية قيد التفرد على النحو التالي - أولاً تأتي البادئة "UQ_" ، ثم اسم الجدول ، وبعد الشرطة السفلية هو اسم الحقل الذي يتم تطبيق هذا القيد عليه.

وفقًا لذلك ، إذا كان يجب أن تكون مجموعة الحقول فريدة في سياق صفوف الجدول ، فإننا ندرجها مفصولة بفواصل:

ALTER TABLE جدول_اسم أضف CONSTRAINT CONSTRAINT CONSTRAINT_name UNIQUE (field1، field2،…)
بإضافة قيد افتراضي إلى حقل ، يمكننا تعيين قيمة افتراضية سيتم استبدالها إذا لم يكن الحقل مدرجًا في قائمة حقل أوامر INSERT عند إدراج سجل جديد. يمكن تعيين هذا القيد مباشرة عند إنشاء جدول.

دعنا نضيف حقلاً جديدًا "تاريخ التوظيف" إلى جدول الموظفين ونطلق عليه اسم HireDate ونقول إن القيمة الافتراضية لهذا الحقل ستكون التاريخ الحالي:

ALTER TABLE الموظفون إضافة تاريخ HireDate NOT NULL افتراضي SYSDATETIME ()
أو إذا كان عمود HireDate موجودًا بالفعل ، فيمكن استخدام الصيغة التالية:

تغيير موظفي الجدول إضافة وقت قياسي افتراضي () لتاريخ التوظيف
هنا لم أحدد اسم القيد لأن في حالة DEFAULT ، كنت أعتقد أن هذا ليس بالغ الأهمية. ولكن إذا قمت بذلك بطريقة جيدة ، فأعتقد أنك لست بحاجة إلى أن تكون كسولًا ويجب عليك تعيين اسم عادي. هذا يفعل كما يلي:

ALTER TABLE الموظفون أضف CONSTRAINT DF_Employees_HireDate DEFAULT SYSDATETIME () FOR HireDate
نظرًا لأن هذا العمود لم يكن موجودًا من قبل ، عند إضافته إلى كل سجل ، سيتم إدراج قيمة التاريخ الحالي في حقل HireDate.

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

أدخل الموظفين (المعرف والاسم والبريد الإلكتروني) القيم (1004، N "Sergeev SS"، " [بريد إلكتروني محمي]")
دعونا نرى ما حدث:

حدد * من الموظفين

بطاقة تعريف اسم عيد ميلاد بريد إلكتروني PositionID معرف_القسم معرف_المدير موعد التوظيف
1000 إيفانوف الأول. 1955-02-19 [بريد إلكتروني محمي] 2 1 باطل 2015-04-08
1001 بيتروف ب. 1983-12-03 [بريد إلكتروني محمي] 3 4 1003 2015-04-08
1002 سيدوروف إس. 1976-06-07 [بريد إلكتروني محمي] 1 2 1000 2015-04-08
1003 أندريف أ. 1982-04-17 [بريد إلكتروني محمي] 4 3 1000 2015-04-08
1004 سيرجيف إس. باطل [بريد إلكتروني محمي] باطل باطل باطل 2015-04-08

يتم استخدام قيد الفحص CHECK عندما يكون من الضروري التحقق من القيم المدرجة في الحقل. على سبيل المثال ، دعنا نفرض هذا القيد على حقل رقم الموظفين ، وهو معرف الموظف (ID). باستخدام هذا القيد ، لنفترض أن أرقام الموظفين يجب أن يكون لها قيمة من 1000 إلى 1999:

ALTER TABLE الموظفون إضافة CONSTRAINT CK_Employees_ID CHECK (رقم التعريف بين 1000 و 1999)
عادة ما يتم تسمية القيد بنفس الاسم ، أولاً بالبادئة "CK_" ، ثم اسم الجدول واسم الحقل الذي يتم تطبيق القيد عليه.

دعنا نحاول إدخال إدخال غير صالح للتحقق من أن التقييد يعمل (يجب أن نحصل على الخطأ المقابل):

أدخل قيم الموظفين (المعرف ، البريد الإلكتروني) (2000 ، " [بريد إلكتروني محمي]")
لنقم الآن بتغيير القيمة التي سيتم إدراجها إلى 1500 والتأكد من إدراج السجل:

أدخل قيم الموظفين (المعرف ، البريد الإلكتروني) (1500 ، " [بريد إلكتروني محمي]")
يمكنك أيضًا إنشاء قيود UNIQUE و CHECK دون تحديد اسم:

تبديل الموظفين إضافة فريدة (البريد الإلكتروني) تغيير الجدول الموظفين إضافة تحقق (المعرف بين 1000 و 1999)
لكن هذه ليست ممارسة جيدة ومن الأفضل تحديد اسم القيد بشكل صريح ، لأنه لمعرفة ما سيكون أكثر صعوبة لاحقًا ، ستحتاج إلى فتح الكائن ومعرفة ما هو مسؤول عنه.

بالاسم الجيد ، يمكن تعلم الكثير من المعلومات حول القيد مباشرة من اسمه.

وبناءً عليه ، يمكن إنشاء كل هذه القيود فورًا عند إنشاء جدول ، إذا لم يكن موجودًا بالفعل. لنحذف الجدول:

إسقاط موظفي الجدول
وأعد إنشائه بكل القيود التي تم إنشاؤها باستخدام أمر CREATE TABLE واحد:

إنشاء موظفين جدول (ID int NOT NULL ، اسم nvarchar (30) ، تاريخ ميلاد ، البريد الإلكتروني nvarchar (30) ، PositionID int ، DepartmentID int ، تاريخ HireDate NOT NULL DEFAULT SYSDATETIME () ، - للإفتراضي سأقوم بإلقاء CONSTRAINT PK_Employees الأساسي استثناء KEY (ID) ، CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY (DepartmentID) REFERENCES الأقسام (ID) ، CONSTRAINT FK_Employees_PositionID FOREIGN KEY (PositionID) المراجع المناصب (ID) ، CONSTRAINT UQ_Employees_Email_Email)

أدخل الموظفين (المعرف ، الاسم ، تاريخ الميلاد ، البريد الإلكتروني ، معرف الوظيفة ، معرف القسم) القيم (1000، N "Ivanov I.I."، "19550219"، " [بريد إلكتروني محمي]"، 2،1)، (1001، N" Petrov P.P. "،" 19831203 "،" [بريد إلكتروني محمي]"، 3،3)، (1002، N" Sidorov S.S. "،" 19760607 "،" [بريد إلكتروني محمي]"، 1، 2)، (1003، N" Andreev A.A. "،" 19820417 "،" [بريد إلكتروني محمي]",4,3)

القليل عن الفهارس التي تم إنشاؤها عند إنشاء قيود PRIMARY KEY و UNIQUE

كما ترى في لقطة الشاشة أعلاه ، عند إنشاء قيود PRIMARY KEY و UNIQUE ، تم إنشاء فهارس بنفس الأسماء (PK_Employees و UQ_Employees_Email) تلقائيًا. بشكل افتراضي ، يتم إنشاء فهرس المفتاح الأساسي كـ CLUSTERED ، ولكل الفهارس الأخرى كـ NONCLUSTERED. تجدر الإشارة إلى أن مفهوم الفهرس العنقودي غير متاح في جميع نظم إدارة قواعد البيانات. يمكن أن يحتوي الجدول على فهرس CLUSTERED واحد فقط. CLUSTERED - يعني أنه سيتم فرز سجلات الجدول حسب هذا الفهرس ، ويمكن القول أيضًا أن هذا الفهرس لديه وصول مباشر إلى جميع بيانات الجدول. لذلك نقول المؤشر الرئيسي للجدول. لجعلها أكثر خشونة ، فهي عبارة عن فهرس مشدود على الطاولة. يعد الفهرس العنقودي أداة قوية جدًا يمكنها المساعدة في تحسين الاستعلام ، فقط ضع ذلك في الاعتبار. إذا أردنا أن نقول إن الفهرس العنقودي لا يستخدم في المفتاح الأساسي ، ولكن لفهرس آخر ، فعند إنشاء المفتاح الأساسي ، يجب علينا تحديد الخيار NONCLUSTERED:

ALTER TABLE جدول_اسم أضف CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT
على سبيل المثال ، لنجعل فهرس القيد PK_Employees غير مجمّع ، وفهرس القيد UQ_Employees_Email مجمّع. بادئ ذي بدء ، دعنا نزيل هذه القيود:

ALTER TABLE الموظفون DROP CONSTRAINT PK_Employees ALTER TABLE الموظفون DROP CONSTRAINT UQ_Employees_Email
والآن لنقم بإنشائها باستخدام الخيارين CLUSTERED و NONCLUSTERED:

ALTER TABLE الموظفون إضافة CONSTRAINT PK_Employees المفتاح الأساسي غير المصنفين (ID) ALTER TABLE الموظفين إضافة CONSTRAINT UQ_Employees_Email UNIQUE CLUSTERED (البريد الإلكتروني)
الآن ، عندما نختار من جدول الموظفين ، يمكننا أن نرى أن السجلات مرتبة حسب الفهرس العنقودي UQ_Employees_Email:

حدد * من الموظفين

بطاقة تعريف اسم عيد ميلاد بريد إلكتروني PositionID معرف_القسم موعد التوظيف
1003 أندريف أ. 1982-04-17 [بريد إلكتروني محمي] 4 3 2015-04-08
1000 إيفانوف الأول. 1955-02-19 [بريد إلكتروني محمي] 2 1 2015-04-08
1001 بيتروف ب. 1983-12-03 [بريد إلكتروني محمي] 3 3 2015-04-08
1002 سيدوروف إس. 1976-06-07 [بريد إلكتروني محمي] 1 2 2015-04-08

قبل ذلك ، عندما كان الفهرس العنقودي هو فهرس PK_Employees ، كان يتم فرز السجلات افتراضيًا حسب حقل المعرف.

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

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

يعد الفهرس العنقودي مفيدًا للتطبيق على الحقول التي يتم تحديدها في أغلب الأحيان.

تقوم الجداول أحيانًا بإنشاء مفتاح بواسطة حقل بديل ، وفي هذه الحالة يكون من المفيد الاحتفاظ بخيار الفهرس CLUSTERED لفهرس أكثر ملاءمة وتحديد الخيار NONCLUSTERED عند إنشاء مفتاح أساسي بديل.

دعونا نلخص

في هذه المرحلة ، تعرفنا على جميع أنواع القيود ، في أبسط أشكالها ، والتي تم إنشاؤها بواسطة أمر مثل "ALTER TABLE table_name ADD CONSTRAINT CONSTRAINT ..."
  • المفتاح الأساسي- المفتاح الأساسي؛
  • مفتاح غريب- إقامة روابط ومراقبة سلامة البيانات المرجعية ؛
  • فريد- يسمح لك بإنشاء التفرد ؛
  • يفحص- يسمح لك بتنفيذ صحة البيانات المدخلة ؛
  • تقصير- يسمح لك بتعيين القيمة الافتراضية ؛
  • تجدر الإشارة أيضًا إلى أنه يمكن إزالة جميع القيود باستخدام الأمر " تغيير الجدولاسم الطاولة قيود السقوطاسم_القيود ".
كما تطرقنا جزئيًا إلى موضوع المؤشرات وقمنا بتحليل مفهوم الكتلة ( متجمد) وغير مجمعة ( غير متشابك) فِهرِس.

إنشاء فهارس قائمة بذاتها

يشير الاكتفاء الذاتي هنا إلى الفهارس التي لم يتم إنشاؤها لقيد PRIMARY KEY أو UNIQUE.

يمكن إنشاء الفهارس في حقل أو حقول باستخدام الأمر التالي:

إنشاء فهرس IDX_Employees_Name على الموظفين (الاسم)
يمكنك أيضًا تحديد الخيارات CLUSTERED و NONCLUSTERED و UNIQUE هنا ، ويمكنك أيضًا تحديد اتجاه الفرز لكل حقل فردي ASC (افتراضي) أو DESC:

إنشاء فهرس فريد غير مسجّل UQ_Employees_EmailDesc على الموظفين (البريد الإلكتروني DESC)
عند إنشاء فهرس غير مجمع ، يمكن حذف الخيار NONCLUSTERED ، مثل يتم تضمينه بشكل افتراضي ، ويظهر هنا ببساطة للإشارة إلى موضع الخيار CLUSTERED أو NONCLUSTERED في الأمر.

يمكنك إزالة الفهرس بالأمر التالي:

DROP INDEX IDX_Employees_Name على الموظفين
يمكن إنشاء فهارس بسيطة ، تمامًا مثل القيود ، في سياق الأمر CREATE TABLE.

على سبيل المثال ، لنحذف الجدول مرة أخرى:

إسقاط موظفي الجدول
وأعد إنشائه مع جميع القيود والفهارس التي تم إنشاؤها باستخدام أمر CREATE TABLE واحد:

CREATE TABLE Employees (ID int NOT NULL، Name nvarchar (30)، Birthday date، Email nvarchar (30)، PositionID int، DepartmentID int، HireDate date NOT NULL CONSTRAINT DF_Employees_HireDate DEFAULT SYSDATETIME ()، ManagerID int، CONSTRAINT PK_Employees ) Constraint fk_employees_department Foreign Key (departmentid) إدارات المراجع (ID)، Constraint fk_employees_positionid key Loyees_managerid Foreign Key (Managerid) المراجع الموظفون (ID) ، Constraint Uq_emPloyees_email Unique (Email) ، Constraint CK_emPloyees_id CHECE 1000 اسم))
أخيرًا ، أدخل في جدول موظفينا:

أدخل الموظفين (المعرّف ، الاسم ، تاريخ الميلاد ، البريد الإلكتروني ، PositionID ، معرف القسم ، معرف المدير) VALUES (1000، N "Ivanov II"، "19550219"، " [بريد إلكتروني محمي]"، 2،1، NULL)، (1001، N" Petrov P.P. "،" 19831203 "،" [بريد إلكتروني محمي]"، 3،3،1003)، (1002، N" Sidorov S.S. "،" 19760607 "،" [بريد إلكتروني محمي]"، 1،2،1000)، (1003، N" Andreev A.A. "،" 19820417 "،" [بريد إلكتروني محمي]",4,3,1000)
بالإضافة إلى ذلك ، تجدر الإشارة إلى أنه يمكن تضمين القيم في فهرس غير عنقودي عن طريق تحديدها في INCLUDE. أولئك. في هذه الحالة ، سيشبه فهرس INCLUDE إلى حد ما فهرس متفاوت ، والآن فقط لم يتم إرفاق الفهرس بالجدول ، ولكن يتم إرفاق القيم الضرورية بالفهرس. وفقًا لذلك ، يمكن لمثل هذه الفهارس تحسين أداء استعلامات التحديد (SELECT) بشكل كبير ، إذا كانت جميع الحقول المدرجة في الفهرس ، فمن الممكن ألا تكون هناك حاجة للوصول إلى الجدول على الإطلاق. لكن هذا بطبيعة الحال يزيد من حجم المؤشر لأن يتم تكرار قيم الحقول المدرجة في الفهرس.

لقطة من MSDN.صيغة الأمر العام لتكوين الفهارس

أنشئ [فريدًا] [مغلق | NONCLUSTERED] INDEX index_name قيد التشغيل (العمود [ASC | DESC] [، ... n]) [تضمين (اسم_العمود [، ... n])]

دعونا نلخص

يمكن أن تزيد الفهارس من سرعة استرداد البيانات (SELECT) ، لكن الفهارس تقلل من سرعة تحديث بيانات الجدول ، لأن بعد كل تعديل ، سيحتاج النظام إلى إعادة إنشاء كافة الفهارس لجدول معين.

من المستحسن في كل حالة إيجاد الحل الأمثل ، الوسط الذهبي ، بحيث يكون أداء أخذ العينات وتعديل البيانات في المستوى المناسب. يمكن أن تعتمد استراتيجية إنشاء الفهارس وعددها على العديد من العوامل ، مثل عدد المرات التي تتغير فيها البيانات الموجودة في الجدول.

الخلاصة بشأن DDL

كما ترى ، فإن لغة DDL ليست معقدة كما قد تبدو للوهلة الأولى. هنا تمكنت من عرض جميع تصميماته الرئيسية تقريبًا ، باستخدام ثلاث طاولات فقط.

الشيء الرئيسي هو فهم الجوهر ، والباقي هو مسألة ممارسة.

نتمنى لك التوفيق في إتقان هذه اللغة الرائعة التي تسمى SQL.