المنزل ، التصميم ، التجديد ، الديكور.  الفناء والحديقة.  بأيديكم

المنزل ، التصميم ، التجديد ، الديكور. الفناء والحديقة. بأيديكم

» ما هي قاعدة البيانات و sbd؟ طرق لغة استعلام SQL لاستخدام لغة SQL.

ما هي قاعدة البيانات و sbd؟ طرق لغة استعلام SQL لاستخدام لغة SQL.

سيأخذ الدرس في الاعتبار لغة استعلام sql: تعمل أساسيات بناء جملة لغة sql phpMyAdminوخدمة لفحص استعلامات SQL عبر الإنترنت

قاعدة البيانات- تخزين البيانات المركزي الذي يوفر التخزين والوصول والمعالجة الأولية واسترجاع المعلومات.

قواعد البيانات مقسمة إلى:

  • الهرمية
  • شبكة الاتصال
  • العلائقية
  • وجوه المنحى

SQL (لغة الاستعلام الهيكلية)- هي لغة استعلام منظمة (مترجمة من الإنجليزية). تركز اللغة على العمل مع قواعد البيانات العلائقية (الجدولية). اللغة بسيطة وتتكون في الواقع من أوامر (مفسرة) يمكنك من خلالها العمل بكميات كبيرة من البيانات (قواعد البيانات) وحذف وإضافة وتغيير المعلومات فيها وإجراء بحث مناسب.

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

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

عادة ، للتدريب ، يتم استخدامه Microsoft Access DBMS، لكننا سنستخدم نظامًا أكثر شيوعًا في مجال الويب -. للراحة ، سيستخدم واجهة ويب أو خدمة عبر الإنترنت لإنشاء استعلامات sql ، ومبدأ العمل الموضح أدناه.

الأهمية:عند العمل مع قواعد البيانات العلائقية أو الجدولية ، سيتم استدعاء صفوف الجدول السجلاتوالأعمدة هوامش.

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

مكونات لغة SQL

تتكون لغة SQL من المكونات التالية:

  1. لغة معالجة البيانات (DML) ؛
  2. لغة تعريف البيانات (DDL)
  3. لغة التحكم في البيانات (DCL)

1.
تتكون لغة معالجة البيانات من 4 أوامر رئيسية:

  • جلب البيانات من قاعدة البيانات -
  • إدراج البيانات في جدول قاعدة البيانات -
  • تحديث (تغيير) البيانات في جداول قاعدة البيانات -
  • حذف البيانات من قاعدة البيانات -

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

سننظر فقط في عدد قليل من أوامر اللغة الأساسية... هم انهم:

  • إنشاء قاعدة بيانات - إنشاء قاعدة بيانات
  • إنشاء جدول - إنشاء الجدول
  • تغيير الجدول (الهيكل) - تبديل الجدول
  • إسقاط طاولة - DROP TABLE

تُستخدم لغة إدارة البيانات لإدارة حقوق الوصولللبيانات وتنفيذ الإجراءات في بيئة متعددة المستخدمين.

كيفية عمل استعلام SQL في phpmyadmin

  1. قم بتشغيل اختصار بدء denwer.
  2. في شريط عنوان المتصفح ، اكتب http: // localhost / tools / phpmyadmin.
  3. في الجزء الأيسر من النافذة ، حدد قاعدة البيانات التي تهمك أو قم بإنشائها (إذا لم تكن قد تم إنشاؤها بالفعل). يتم الآن تغطية إنشاء قاعدة بيانات في phpmyadmin.
  4. إذا كنت تعرف الجدول الذي سيعمل معه الاستعلام ، فحدد هذا الجدول في الجزء الأيسر من النافذة.
  5. حدد علامة تبويب SQL وابدأ في كتابة استعلامك.

إنشاء قاعدة بيانات في phpmyadmin

تحتاج أولاً إلى إكمال أول نقطتين من.
ثم:

  • في واجهة الويب المفتوحة ، حدد علامة التبويب قاعدة البيانات;
  • في الميدان إنشاء قاعدة بياناتأدخل اسم القاعدة ؛
  • انقر فوق الزر إنشاء;
  • يمكنك الآن الانتقال إلى قاعدة البيانات التي تم إنشاؤها لمواصلة العمل في phpMyAdmin.

العمل في خدمة sql fiddle

يمكن التحقق عبر الإنترنت من استعلامات SQL باستخدام الخدمة.
أسهل طريقة لتنظيم العمل تتكون من الخطوات التالية:


مثال آخر:


الآن دعونا نلقي نظرة فاحصة على بعض النقاط.

إنشاء الجداول:

مثال:إنشاء ثلاثة جداول في وقت واحد (المعلمين والدروس والدورات) ؛ إضافة قيم متعددة لكل جدول.

* بالنسبة لأولئك الذين ليسوا على دراية بالصياغة - ما عليك سوى نسخ الرمز بالكامل ولصقه في النافذة اليسرى للخدمة

* درس في إنشاء الجداول في SQL

/ * teacher * / CREATE TABLE `teacher` (` id` INT (11) NOT NULL، `name` VARCHAR (25) NOT NULL،` code` INT (11)، `zarplata` INT (11)،` premia` INT (11)، PRIMARY KEY (`id`)) ؛ أدخل قيم المعلمين (1، "Ivanov"، 1، 10000، 500)، (2، "Petrov"، 1، 15000، 1000)، (3، "Sidorov"، 1، 14000، 800)، (4، " بوبروفا "، 1 ، 11000 ، 800) ؛ / * دروس * / CREATE TABLE "دروس" (`id` INT (11) NOT NULL،` tid` INT (11)، `course` VARCHAR (25)،` date` VARCHAR (25)، PRIMARY KEY (`id `)) ؛ INSERT INTO دروس VALUES (1، 1، "php"، "2015-05-04")، (2، 1، "xml"، "2016-13-12")؛ / * دورات * / إنشاء جدول "دورات" (`id` INT (11) NOT NULL،` tid` INT (11)، `title` VARCHAR (25)،` length` INT (11)، PRIMARY KEY (`id `)) ؛ أدخل قيم الدورات التدريبية (1، 1، "php"، 54)، (2، 1، "xml"، 72)، (3، 2، "sql"، 25) ؛

/ * teacher * / CREATE TABLE `teacher` (` id` int (11) NOT NULL، `name` varchar (25) NOT NULL،` code` int (11)، `zarplata` int (11)،` premia` int (11)، PRIMARY KEY (`id`)) ؛ أدخل في قيم المعلمين (1، "Ivanov"، 1،10000،500)، (2، "Petrov"، 1،15000،1000)، (3، "Sidorov"، 1،14000،800)، (4 ، "Bobrov"، 1،11000،800) ؛ / * دروس * / CREATE TABLE "دروس" (`id` int (11) NOT NULL،` tid` int (11)، `course` varchar (25)،` date` varchar (25)، PRIMARY KEY (`id `)) ؛ أدخل القيم في الدروس (1،1، "php"، "2015-05-04")، (2،1، "xml"، "2016-13-12")؛ / * دورات * / إنشاء جدول "دورات" (`id` int (11) NOT NULL،` tid` int (11)، `title` varchar (25)،` length` int (11)، PRIMARY KEY (`id `)) ؛ إدراج قيم المقررات الدراسية (1،1، "php"، 54)، (2،1، "xml"، 72)، (3،2، "sql"، 25) ؛

نتيجة لذلك ، نحصل على جداول بالبيانات:

ارسال طلب:
من أجل اختبار إمكانية الخدمة ، أضف رمز الطلب إلى النافذة اليمنى.

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

في مزيد من دروس SQL ، سيتم استخدام نفس المخطط ، لذلك تحتاج فقط إلى نسخ المخطط ولصقه في النافذة اليسرى للخدمة.

لتصور مخطط قاعدة البيانات عبر الإنترنت ، يمكنك استخدام الخدمة https://dbdesigner.net/:

  1. قم بإنشاء حسابك (سجل الدخول إذا كان لديك حساب بالفعل).
  2. انقر فوق الزر اذهب إلى التطبيق.
  3. قائمة طعام مخطط -> يستورد.
  4. انسخ والصق الرمز لإنشاء جداول قاعدة البيانات وملؤها في النافذة التي تظهر

البرمجة على تي- SQL

قواعد واصطلاحات T-SQL

قواعد تشكيل المعرفات

جميع الكائنات في SQL Server لها أسماء (معرفات). أمثلة على الكائنات هي الجداول ، وجهات النظر ، والإجراءات المخزنة ، وما إلى ذلك. يمكن أن يصل طول المعرفات إلى 128 حرفًا ، مثل الأحرف ورموز _ @ $ # والأرقام.

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

استكمال التعليمات

يتطلب ANSI SQL فاصلة منقوطة في نهاية كل عبارة. ومع ذلك ، عند البرمجة في T-SQL ، تكون الفاصلة المنقوطة اختيارية.

التعليقات (1)

يقبل T-SQL نمطين للتعليق: ANCI و C. يبدأ النمط الأول بواصلتين وينتهي في نهاية السطر:

هذا تعليق من سطر واحد بنمط ANSI

أيضًا ، يمكن إدراج تعليقات نمط ANSI في نهاية سطر البيان:

حدد اسم المدينة - استرجاع الأعمدة

من المدينة - جدول المصدر

حيث IdCity = 1 ؛ - قيد الخط

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

تبدأ تعليقات نمط C بشرطة مائلة للأمام وعلامة النجمة (/ *) وتنتهي بنفس الأحرف بترتيب عكسي. يُفضل استخدام هذا النوع من التعليقات للتعليق على كتل الأسطر مثل الرؤوس أو استعلامات الاختبار الكبيرة.

متعدد الخطوط

تعليق

أحد الأشياء الرائعة في التعليقات على النمط C هو أنه يمكنك تشغيل استعلامات متعددة الأسطر فيها دون حتى إلغاء التعليق.

حزم T-SQL

الاستعلام عبارة عن جملة T-SQL واحدة ، والمجموعة عبارة عن مجموعة منها. يتم إرسال التسلسل الكامل لإرشادات الحزمة إلى الخادم من تطبيقات العميل كوحدة متكاملة واحدة.

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

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

تصحيح أخطاء T-SQL

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

لا تتضمن الأداة المساعدة SQL Server 2005 Management Studio مصحح أخطاء T-SQL - فهي مضمنة في حزمة Visual Studio.

يقدم SQL Server عدة أوامر لمساعدتك على تصحيح أخطاء الحزم. على وجه الخصوص ، يرسل الأمر PRINT رسالة دون إنشاء مجموعة بيانات نتيجة. يمكن استخدام الأمر PRINT لتتبع تقدم الحزمة. باستخدام محلل الاستعلام في وضع الشبكة ، قم بتشغيل الدُفعة التالية:

حدد اسم المدينة

من المدينة

حيث IdCity = 1 ؛

مطبعة "نقطة التحقق";

سيتم عرض مجموعة البيانات الناتجة في الشبكة وستكون صفًا واحدًا. في الوقت نفسه ، سيتم عرض النتيجة التالية في علامة التبويب الرسائل:

(عدد الخطوط المعالجة: 1)

نقطة فحص

المتغيرات

يتم إنشاء متغيرات T-SQL باستخدام الأمر DECLARE ، والذي يحتوي على بناء الجملة التالي:

DECLARE @ Variable_Name Data_type [،

@ Variable_Name Data_type ، ...]

يجب أن تبدأ جميع أسماء المتغيرات المحلية بـ @. على سبيل المثال ، للإعلان عن متغير محلي UStr يخزن ما يصل إلى 16 حرفًا من أحرف Unicode ، يمكنك استخدام العبارة التالية:

إعلانUStr varchar (16)

أنواع البيانات المستخدمة للمتغيرات هي نفسها تمامًا مثل تلك الموجودة في الجداول. يمكن سرد العديد من المتغيرات في أمر DECLARE واحد ، مفصولة بفواصل. على وجه التحديد ، يُنشئ المثال التالي متغيرين عدد صحيحين أ وب:

يعلن

a int ،

b int

يتم تحديد نطاق المتغيرات فقط (أي عمرها الافتراضي) للحزمة الحالية. بشكل افتراضي ، تحتوي المتغيرات التي تم إنشاؤها حديثًا على قيم خالية فارغة ويجب تهيئتها قبل تضمينها في التعبيرات.

تحديد القيم المتغيرة

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

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

ضبطa = 1 ؛

ضبطb = @ a * 1.5

لاحظ أن كل هذه العوامل تؤدي التخصيصات مباشرة باستخدام إما قيم صريحة أو متغيرات أخرى. لا يمكنك استخدام جملة SET لتعيين قيمة لمتغير من استعلام ؛ يجب تنفيذ الاستعلام بشكل منفصل ، وعندها فقط يمكن تعيين النتيجة الناتجة باستخدام عبارة SET. على سبيل المثال ، تؤدي محاولة تنفيذ مثل هذا البيان إلى حدوث خطأ:

إعلانc int

ضبطc = COUNT (*) من المدينة

حدد @ c

وينجح البيان التالي:

إعلانc int

تعيينc = (حدد العدد (*) من المدينة)

حدد @ c

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

إعلانc int

حددc = COUNT (*) من المدينة

حدد @ c

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

وبالتالي ، من الممكن صياغة الاتفاقية التالية المقبولة عمومًا بشأن استخدام كلا المشغلين.

يتم استخدام عبارة SET عندما يتم تنفيذ تخصيص بسيط لمتغير ، أي إذا تم بالفعل تعيين القيمة المخصصة بشكل صريح في شكل قيمة محددة أو في شكل متغير آخر.

  • يتم استخدام عبارة SELECT عندما يكون إسناد قيمة إلى متغير بناءً على استعلام.

استخدام المتغيرات في استعلامات SQL

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

حيثما يمكن استخدام تعبير في استعلام ، يمكن أيضًا استخدام متغير. يوضح المثال التالي استخدام متغير في جملة WHERE:

إعلانIdProd int ؛

تعيينIdProd = 1 ،

تحديد

من المنتج

حيث IdProd =IdProd ؛

متغيرات النظام العالمية

يحتوي SQL Server على أكثر من ثلاثين متغيرًا عالميًا بدون معلمات يتم تحديدها وصيانتها بواسطة النظام. جميع المتغيرات العامة مسبوقة برمزين @. يمكنك استرداد قيمة أي منها باستعلام SELECT بسيط ، كما في المثال التالي:

حدداتصالات

يستخدم المتغير العامCONNECTIONS لاسترداد عدد الاتصالات بـ SQL Server منذ بدء تشغيل البرنامج.

بعض متغيرات النظام الأكثر استخدامًا هي:

  • ERROR - يحتوي على رقم الخطأ الذي حدث أثناء تنفيذ آخر جملة T-SQL في الاتصال الحالي. إذا لم يتم العثور على خطأ ، فإنه يحتوي على 0. يتم إعادة تعيين قيمة متغير النظام هذا بعد تنفيذ كل جملة تالية. إذا كنت تريد حفظ القيمة التي تحتوي عليها ، فيجب نقل هذه القيمة إلى متغير محلي مباشرة بعد تنفيذ العبارة التي يجب حفظ رمز الخطأ لها.
  • IDENTITY - يحتوي على آخر قيمة تعريف تم إدراجها في قاعدة البيانات كنتيجة لآخر جملة INSERT. إذا لم يتم إنشاء قيمة تعريف في عبارة INSERT الأخيرة ، يكون متغير نظام IDENTITYهو NULL. هذه العبارة صحيحة حتى لو كان عدم وجود قيمة تعريفية ناتجًا عن إنهاء غير طبيعي أثناء تنفيذ العبارة. وإذا تم إجراء إدخالات متعددة باستخدام عبارة واحدة ، فسيتم تعيين قيمة التعريف الأخيرة فقط لمتغير النظام هذا.
  • ROWCOUNT - أحد أكثر متغيرات النظام استخدامًا. تُرجع معلومات حول عدد الأسطر المتأثرة بالبيان الأخير. تُستخدم عادةً للتحكم في الأخطاء بخلاف تلك التي تقع ضمن فئة خطأ خطوة التشغيل. على سبيل المثال ، إذا اكتشف أحد البرامج أنه بعد استدعاء جملة DELETE بعبارة WHERE ، فإن عدد الصفوف المتأثرة هو صفر ، فيمكننا استنتاج أن شيئًا غير متوقع قد حدث. يمكن بعد ذلك تنشيط رسالة الخطأ يدويًا.

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

ضوابط تدفق الأوامر. يبني البرنامج

توفر لغة T-SQL معظم الأدوات الإجرائية الكلاسيكية للتحكم في تدفق تنفيذ البرنامج ، بما في ذلك. البناء المشروط والحلقات.

المشغل أو العامللو. ... ... آخر

عبارات IF. ... يعمل .ELSE في T-SQL بنفس الطريقة التي يعمل بها في أي لغة برمجة أخرى. الصيغة العامة لهذا المشغل هي كما يلي:

إذا كان التعبير المنطقي

عبارة SQL I BEGIN كتلة عبارات SQL END

جملة SQL | BEGIN SQL Block of END Statements]

يمكن تحديد أي تعبير تقريبًا كتعبير منطقي ، يتم تقييم نتيجته إلى قيمة منطقية.

يجب أن يؤخذ في الاعتبار أن العبارة التي تتبع مباشرة عبارة IF (الأقرب إليها) تعتبر فقط منفذة بشرط. بدلاً من مشغل واحد ، يمكنك توفير تنفيذ العديد من المشغلين حسب الشرط ، ودمجهم في كتلة من التعليمات البرمجية باستخدام إنشاء BEGIN ... END.

في المثال أدناه ، لم يتم استيفاء شرط IF ، مما يمنع تنفيذ العبارة التالية.

إذا 1 = 0

اطبع "السطر الأول"

اطبع "السطر الثاني"

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

على الرغم من أن جملة IF تبدو محدودة ، إلا أن شرط الشرط الخاص بها يمكن أن يتضمن ميزات قوية مثل جملة WHERE. على وجه الخصوص ، هذه هي تعبيرات IF EXISTS ().

يستخدم التعبير IF EXISTS () كشرط وجود أي صف يتم إرجاعه بواسطة عبارة SELECT. نظرًا لأنه يتم البحث في أي صفوف ، يمكن استبدال قائمة الأعمدة في عبارة SELECT بعلامة النجمة. هذه الطريقة أسرع من التحقق من الشرطROWCOUNT> 0 لأنه لا توجد حاجة لحساب العدد الإجمالي للصفوف. بمجرد أن يلبي صف واحد على الأقل شرط IF EXISTS () ، يمكن للاستعلام متابعة التنفيذ.

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

إذا كان EXISTS (حدد * من حيث IdCust = 1)

مطبعة "من المستحيل حذف العميل لأن هناك سجلات مرتبطة به في قاعدة البيانات"

آخر

أين IdCust = 1

مطبعة "اكتمل الحذف بنجاح"

العاملينفي حين، كسر واستمر

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

العبارة WHILE لها بناء الجملة التالي:

بينما التعبير المنطقي

عبارة SQL I

كتلة عبارات SQL

بالطبع ، يمكنك استخدام جملة WHILE للتأكد من تنفيذ جملة واحدة فقط في حلقة (على غرار الطريقة التي تستخدم بها عادةً جملة IF) ، ولكن من الناحية العملية ، تُبنى WHILE التي لا تتبعها كتلة BEGIN. ... . END المطابقة لتنسيق المشغل الكامل أمر نادر الحدوث.

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

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

يوضح البرنامج النصي القصير التالي استخدام جملة WHILE لإنشاء حلقة:

إعلانTemp int ؛

ضبطTemp = 0 ،

بينماTemp< 3

يبدأ

طباعةTemp ؛

ضبطTemp =Temp + 1 ؛

هنا ، في الحلقة ، يتم زيادة المتغير الصحيحTemp من 0 إلى 3 ، وفي كل تكرار يتم عرض قيمته.

المشغل أو العاملإرجاع

يتم استخدام عبارة RETURN لإيقاف تنفيذ الحزمة ، وبالتالي إجراء مخزن ومشغل (يتم تناوله في المختبر التالي).

تُستخدم لغة SQL لاسترداد البيانات من قاعدة البيانات. SQL هي لغة برمجة تشبه إلى حد كبير اللغة الإنجليزية ، ولكنها مخصصة لبرامج إدارة قواعد البيانات. يتم استخدام SQL في كل استعلام في Access.

يساعدك فهم كيفية عمل SQL في إنشاء استعلامات أكثر دقة ويسهّل إصلاح الاستعلامات التي تعرض نتائج غير صحيحة.

هذه المقالة جزء من سلسلة في SQL for Access. يصف أساسيات استخدام SQL لجلب البيانات ويقدم أمثلة على بناء جملة SQL.

في هذه المقالة

ما هو SQL؟

SQL هي لغة برمجة للعمل مع مجموعات من الحقائق والعلاقات فيما بينها. تستخدم برامج إدارة قواعد البيانات العلائقية مثل Microsoft Office Access SQL لمعالجة البيانات. على عكس العديد من لغات البرمجة ، فإن SQL قابلة للقراءة ومفهومة حتى للمبتدئين. مثل العديد من لغات البرمجة ، يعد SQL معيارًا دوليًا معترفًا به من قبل لجان المعايير مثل ISO و ANSI.

يتم وصف مجموعات البيانات في SQL للمساعدة في الإجابة على الأسئلة. يجب استخدام بناء الجملة الصحيح عند استخدام SQL. التركيب اللغوي هو مجموعة من القواعد لدمج عناصر اللغة بشكل صحيح. يعتمد بناء جملة SQL على بناء جملة اللغة الإنجليزية ويشارك العديد من العناصر مع بناء جملة Visual Basic for Applications (VBA).

على سبيل المثال ، قد تبدو عبارة SQL البسيطة التي تسترجع قائمة الأسماء الأخيرة لجهات الاتصال المسماة Mary كما يلي:

حدد اسم العائلة
من جهات الاتصال
حيث First_Name = "Mary" ؛

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

عبارات SELECT

تُستخدم عبارة SELECT لوصف مجموعة بيانات في SQL. يحتوي على وصف كامل لمجموعة البيانات التي سيتم استردادها من قاعدة البيانات ، بما في ذلك ما يلي:

    الجداول التي تحتوي على بيانات ؛

    الروابط بين البيانات من مصادر مختلفة ؛

    الحقول أو الحسابات التي يتم على أساسها اختيار البيانات ؛

    شروط الاختيار التي يجب أن تفي بالبيانات المضمنة في نتيجة الاستعلام ؛

    الحاجة وطريقة الفرز.

جمل SQL

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

شرط SQL

وصف

إلزامي

يحدد الحقول التي تحتوي على البيانات التي تريدها.

يحدد الجداول التي تحتوي على الحقول المحددة في عبارة SELECT.

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

يحدد ترتيب فرز النتائج.

في جملة SQL التي تحتوي على وظائف تجميعية ، تحدد الحقول التي لا تحسب جملة SELECT قيمة تلخيص لها.

فقط إذا كان هناك مثل هذه المجالات

في جملة SQL التي تحتوي على وظائف تجميعية ، تحدد الشروط التي تنطبق على الحقول التي تحسب جملة SELECT قيمة تلخيص لها.

مصطلحات SQL

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

مصطلح SQL

جزء مماثل من الكلام

تعريف

مثال

المعرف

اسم

الاسم المستخدم لتعريف كائن قاعدة البيانات ، مثل اسم الحقل.

العملاء. [رقم الهاتف]

المشغل أو العامل

فعل أو ظرف

كلمة أساسية تمثل إجراءً أو تعدله.

ثابت

اسم

قيمة لا تتغير ، مثل رقم أو NULL.

التعبير

صفة

مجموعة من المعرفات والعوامل والثوابت والوظائف المصممة لحساب قيمة واحدة.

> = البضائع. [السعر]

عبارات SQL الأساسية: حدد ومن وأين

التنسيق العام لجمل SQL:

حدد field_1
من table_1
حيث معيار_1
;

ملحوظات:

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

    تنتهي كل جملة SELECT بفاصلة منقوطة (؛). يمكن أن تظهر الفاصلة المنقوطة إما في نهاية الجملة الأخيرة أو في سطر منفصل في نهاية جملة SQL.

مثال في Access

يوضح المثال التالي الشكل الذي قد تبدو عليه عبارة SQL في Access لاستعلام تحديد بسيط.

1. عبارة SELECT

2. من شرط

3. شرط أين

دعنا ننتقل إلى مثال جملة بجملة لفهم كيفية عمل بناء جملة SQL.

عبارة SELECT

شركة SELECT

هذا عبارة عن جملة SELECT. يحتوي على عبارة (SELECT) متبوعة بمعرّفين ("[عنوان البريد الإلكتروني]" و "الشركة").

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

في عبارة SELECT ، لا تحتاج إلى تحديد الجداول التي تحتوي على الحقول ، ولا يمكنك تحديد معايير التحديد التي يجب أن تفي بها البيانات المضمنة في النتائج.

في جملة SELECT ، تأتي عبارة SELECT دائمًا قبل عبارة FROM.

من شرط

من جهات الاتصال

هذا هو شرط من. يحتوي على عامل (من) متبوعًا بمعرف (جهات الاتصال).

لم يتم تحديد حقول التحديد في عبارة FROM.

حيث الشرطية

أين المدينة = "سياتل"

هذا هو شرط WHERE. يحتوي على عامل التشغيل (WHERE) متبوعًا بالتعبير (City = "Rostov").

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

نتائج الفرز: ORDER BY

كما هو الحال مع Microsoft Excel ، يمكن لـ Access فرز نتائج الاستعلام في جدول. باستخدام عبارة ORDER BY ، يمكنك أيضًا تحديد كيفية فرز النتائج عند تشغيل الاستعلام. إذا تم استخدام عبارة ORDER BY ، فيجب أن تظهر في نهاية عبارة SQL.

تحتوي عبارة ORDER BY على قائمة بالحقول التي سيتم فرزها بنفس الترتيب الذي سيتم تطبيق الفرز به.

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

ترتيب حسب الشركة DESC ،

ملحوظة:بشكل افتراضي ، يقوم Access بفرز القيم بترتيب تصاعدي (من الألف إلى الياء ، من الأصغر إلى الأكبر). لفرز القيم بترتيب تنازلي بدلاً من ذلك ، يجب عليك تحديد الكلمة الأساسية DESC.

لمزيد من المعلومات حول عبارة ORDER BY ، راجع المقالة ORDER BY Clause.

العمل مع البيانات المحورية: GROUP BY و HAVING Clauses

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

تعتمد القدرة على استخدام دالة تجميعية معينة على نوع البيانات في الحقل والتعبير المطلوب. لمزيد من المعلومات حول الدالات التجميعية المتوفرة ، راجع المقالة وظائف SQL التجميعية.

تحديد الحقول غير المستخدمة في دالة التجميع: جملة GROUP BY

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

يجب أن تتبع جملة GROUP BY على الفور جملة WHERE أو FR إذا لم تكن هناك عبارة WHERE. في عبارة GROUP BY ، يتم تحديد الحقول بنفس الترتيب كما في عبارة SELECT.

دعنا نواصل مع المثال السابق. إذا كانت عبارة SELECT تطبق الوظيفة التجميعية فقط على حقل [عنوان البريد الإلكتروني] ، فستبدو عبارة GROUP BY كما يلي:

تجميع حسب الشركة

لمزيد من المعلومات حول عبارة GROUP BY ، راجع المقالة عبارة GROUP BY.

تحديد القيم الإجمالية باستخدام شروط التجميع: بند HAVING

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

على سبيل المثال ، لنفترض أنك قمت بتطبيق دالة AVG (التي تحسب المتوسط) على الحقل الأول في عبارة SELECT:

SELECT COUNT () ، الشركة

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

عدد ()> 1

ملحوظة:يمكن أن يتضمن الاستعلام كلاً من جملة WHERE وعبارة HAVING ، مع معايير الحقول غير المستخدمة في الدالات التجميعية المحددة في جملة WHERE ، وشروط الحقول المستخدمة في الدالات التجميعية في جملة HAVING.

لمزيد من المعلومات حول عبارة HAVING ، راجع المقالة HAVING Clause.

دمج نتائج الاستعلام: مشغل الاتحاد

يتم استخدام عامل التشغيل UNION لعرض جميع البيانات التي يتم إرجاعها بواسطة استعلامات تحديد متعددة ومتشابهة في نفس الوقت كمجموعة متسلسلة.

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

ملحوظة:في الاستعلامات الموحدة ، تتوافق أنواع البيانات الرقمية والنصية.

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

استعلام لدمج جملتي SELECT له بناء الجملة الأساسي التالي:

حدد field_1
من table_1
اتحاد
حدد field_a
من table_a
;

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

حدد الاسم ، والسعر ، والضمان ، وعرض الحصري
من المنتجات
اتحاد الكل
حدد الاسم والسعر ، و Warranty_available ، و Exclusive_offer
من الخدمات
;

لمزيد من المعلومات حول دمج عبارات SELECT باستخدام عامل التشغيل UNION ، راجع المقالة

أوامر SQL الأساسية التي يجب على كل مبرمج معرفتها

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

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

إعداد قاعدة البيانات للحصول على أمثلة

قم بإنشاء قاعدة بيانات لتوضيح كيفية عمل الفرق. للعمل ، تحتاج إلى تنزيل ملفين: DLL.sql و InsertStatements.sql. بعد ذلك ، افتح Terminal وأدخل وحدة تحكم MySQL باستخدام الأمر التالي (تفترض هذه المقالة أن MySQL مثبت بالفعل على النظام):

مسقل-ش الجذر -p

ثم أدخل كلمة المرور.

قم بتشغيل الأمر التالي. دعنا نسمي قاعدة البيانات "جامعة":

إنشاء جامعة قاعدة بيانات ؛ جامعة USE مصدر ؛ مصدر

أوامر قاعدة البيانات

1. عرض قواعد البيانات المتاحة

عرض قواعد البيانات ؛

2. إنشاء قاعدة بيانات جديدة

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

3. اختيار قاعدة بيانات لاستخدامها

استعمال ;

4. استيراد أوامر SQL من ملف .sql

مصدر ;

5. إزالة قاعدة البيانات

إسقاط قاعدة البيانات ;

العمل مع الجداول

6. عرض الجداول المتوفرة في قاعدة البيانات

عرض الجداول.

7. إنشاء جدول جديد

اصنع جدول ( , , المفتاح الأساسي ( )، مفتاح غريب ( ) المراجع ());

قيود النزاهة باستخدام إنشاء جدول

قد يكون من الضروري إنشاء قيود لأعمدة معينة في الجدول. عند إنشاء جدول ، يمكنك تعيين القيود التالية:

  • لا يمكن أن تكون خلية الجدول فارغة ؛
  • المفتاح الأساسي - PRIMARY KEY (col_name1 ، col_name2 ، ...) ؛
  • المفتاح الخارجي - FOREIGN KEY (col_namex1،…، col_namexn) المراجع table_name (col_namex1،…، col_namexn).

يمكن تحديد أكثر من مفتاح أساسي. في هذه الحالة ، تحصل على مفتاح أساسي مركب.

مثال

أنشئ جدول "المعلم":

إنشاء مدرس جدول (ID CHAR (5) ، اسم VARCHAR (20) NOT NULL ، dept_name VARCHAR (20) ، راتب NUMERIC (8،2) ، PRIMARY KEY (ID) ، FOREIGN KEY (dept_name) قسم المراجع (dept_name)) ؛

8. معلومات الجدول

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

يصف ;

9. إضافة البيانات إلى الجدول

ادخل في (, , ، ...) القيم ( , , , …);

عند إضافة البيانات إلى كل عمود من أعمدة الجدول ، لن تحتاج إلى تحديد أسماء الأعمدة.

ادخل في القيم ( , , , …);

10. تحديث بيانات الجدول

تحديث يضع = , = ، ... أين ;

11. إزالة كافة البيانات من الجدول

حذف من ;

12. حذف جدول

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

أوامر لتقديم الطلبات

13. حدد

يستخدم SELECT لاسترداد البيانات من جدول معين:

تحديد , ،… من عند ;

يمكن للأمر التالي عرض جميع البيانات من الجدول:

اختر من ;

14. حدد متميز

يمكن أن تحتوي أعمدة الجدول على بيانات مكررة. استخدم SELECT DISTINCT للحصول على بيانات غير مكررة فقط.

اختر مسافة , ،… من عند ;

15. أين

يمكنك استخدام الكلمة الأساسية WHERE في SELECT لتحديد شروط في الاستعلام:

تحديد , ،… من عند أين ;

يمكن تحديد الشروط التالية في الطلب:

  • مقارنة النص
  • مقارنة القيم العددية
  • العمليات المنطقية و (و) ، أو (أو) وليس (النفي).

مثال

جرب الأوامر التالية. انتبه للشروط المحددة في المكان:

حدد * من الدورة حيث dept_name = 'Comp. Sci. '؛ حدد * من الدورة حيث الاعتمادات> 3 ؛ حدد * من الدورة حيث dept_name = "Comp. Sci." وائتمانات> 3 ؛

16. GROUP BY

غالبًا ما يتم استخدام عبارة GROUP BY مع وظائف مجمعة مثل COUNT و MAX و MIN و SUM و AVG لتجميع قيم الإخراج.

تحديد , ،… من عند مجموعة من ;

مثال

دعنا نعرض عدد الدورات لكل كلية:

حدد COUNT (course_id) ، dept_name من الدورة التدريبية GROUP BY dept_name ؛

17. الحصول

تمت إضافة الكلمة الأساسية HAVING إلى SQL لأنه لا يمكن استخدام WHERE مع الدالات التجميعية.

تحديد , ، ... من عند مجموعة من نأخذ

مثال

لنقم بإدراج الكليات التي تحتوي على أكثر من مقرر دراسي واحد:

حدد COUNT (course_id) ، dept_name من الدورة التدريبية GROUP BY dept_name HAVING COUNT (course_id)> 1 ؛

18. ترتيب حسب

يستخدم ORDER BY لفرز نتائج الاستعلام بترتيب تنازلي أو تصاعدي. سيقوم ORDER BY بالفرز بترتيب تصاعدي إذا لم يتم تحديد طريقة فرز ASC أو DESC.

تحديد , ،… من عند ترتيب حسب , ،… ASC | DESC؛

مثال

دعنا نعرض قائمة الدورات بترتيب تصاعدي وتنازلي لعدد الائتمانات:

حدد * من المقرر الدراسي عن طريق الاعتمادات ؛ حدد * من المقرر الدراسي حسب الاعتمادات DESC ؛

19. بين

يتم استخدام BETWEEN لتحديد قيم البيانات من نطاق محدد. يمكن استخدام القيم الرقمية والنصية وكذلك التواريخ.

تحديد , ،… من عند أين ما بين و ;

مثال

فيما يلي قائمة بالمعلمين الذين يزيد رواتبهم عن 50000 ولكن أقل من 100000:

اختر * من مدرب حيث الراتب بين 50000 و 100000 ؛

20. مثل

يتم استخدام عامل التشغيل LIKE في WHERE لتحديد نمط بحث لقيمة مماثلة.

هناك نوعان من المعاملات المجانية المستخدمة في LIKE:

  • ٪ (لا شيء ، حرف واحد أو أكثر) ؛
  • _ (حرف واحد).
تحديد , ،… من عند أين مثل ;

مثال

دعونا نعرض قائمة الدورات التي يحتوي اسمها على "إلى" وقائمة الدورات التي يبدأ اسمها بـ "CS-":

حدد * من مقرر حيث العنوان مثل '٪ إلى٪' ؛ حدد * من الدورة حيث course_id مثل "CS -___" ؛

21. إن

باستخدام IN ، يمكنك تحديد قيم متعددة لبند WHERE:

تحديد , ،… من عند أين في ( , , …);

مثال

دعنا نعرض قائمة بالطلاب من Comp. علوم الفيزياء والكهرباء. م:

حدد * من الطالب حيث dept_name IN ('Comp. Sci.'، 'Physics'، 'Elec. Eng.') ؛

22. JOIN

يتم استخدام JOIN لربط جدولين أو أكثر باستخدام السمات المشتركة داخلها. توضح الصورة أدناه الطرق المختلفة للجمع في SQL. لاحظ الفرق بين الصلة الخارجية اليسرى والصلة الخارجية اليمنى:

تحديد , ،… من عند انضم تشغيل = ;

مثال 1

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

حدد * من قسم الانضمام إلى الدورة التدريبية على course.dept_name = department.dept_name ؛

مثال 2

دعنا نسرد جميع الدورات المطلوبة والتفاصيل عنها:

حدد prereq.course_id، title، dept_name، credits، prereq_id من prereq LEFT OUTER JOIN course ON prereq.course_id = course.course_id؛

مثال 3

سنعرض قائمة بجميع الدورات بغض النظر عما إذا كانت مطلوبة أم لا:

حدد course.course_id، title، dept_name، credits، prereq_id من prereq RIGHT OUTER JOIN course ON prereq.course_id = course.course_id؛

23. عرض

العرض هو جدول SQL افتراضي تم إنشاؤه عن طريق تنفيذ تعبير. يحتوي على صفوف وأعمدة ويشبه إلى حد بعيد جدول SQL العادي. طريقة العرض تعرض دائمًا أحدث المعلومات من قاعدة البيانات.

خلق

إنشاء عرض كما حدد , ،… من عند أين ;

حذف

إسقاط العرض ;

مثال

لنقم بإنشاء طريقة عرض تتكون من دورات ذات 3 وحدات دراسيّة:

24. مجموع الوظائف

تُستخدم هذه الوظائف للحصول على نتيجة مجمعة تتعلق بالبيانات المعنية. فيما يلي وظائف مجمعة شائعة الاستخدام:

  • COUNT (col_name) - تُرجع عدد الصفوف ؛
  • SUM (col_name) - تُرجع مجموع القيم في العمود المحدد ؛
  • AVG (col_name) - ترجع متوسط ​​قيمة العمود المحدد ؛
  • MIN (col_name) - ترجع أصغر قيمة للعمود المحدد ؛
  • MAX (col_name) - تُرجع أكبر قيمة للعمود المحدد.

25. الاستعلامات الفرعية المتداخلة

الاستعلامات الفرعية المتداخلة هي استعلامات SQL التي تتضمن عبارات SELECT و FROM و WHERE المتداخلة في استعلام آخر.

مثال

لنجد الدورات التي تم تدريسها في خريف 2009 وربيع 2010:

حدد DISTINCT course_id من القسم حيث الفصل الدراسي = "الخريف" والسنة = 2009 AND course_id IN (حدد course_id من القسم حيث الفصل الدراسي = "الربيع" والسنة = 2010) ؛

هل تحتاج إلى "تحديد * أين أ = ب من ج" أو "تحديد أين أ = ب من ج على *"؟

إذا كنت مثلي ، فستوافق على أن: SQL هي واحدة من تلك الأشياء التي تبدو للوهلة الأولى سهلة (تبدو وكأنها باللغة الإنجليزية!) ، ولكن لسبب ما ، عليك أن تبحث عن كل استعلام بسيط في google للعثور على الصيغة الصحيحة.


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


حدد members.firstname || "" || members.lastname AS "الاسم الكامل" من الاقتراض أعضاء INNER JOIN ON members.memberid = Loarings.memberid INNER JOIN Books على books.bookid = Loarings.bookid WHERE ... ) FROM books)) GROUP BY members.firstname، members.lastname؛

بو! سيؤدي هذا إلى تخويف أي مبتدئ ، أو حتى مطور متوسط ​​المستوى ، إذا كانت هذه هي المرة الأولى التي يرى فيها SQL. لكنها ليست كلها بهذا السوء.


من السهل تذكر ما هو بديهي ، وبمساعدة هذا البرنامج التعليمي آمل أن أخفض عتبة إدخال SQL للمبتدئين ، ولأولئك الذين لديهم خبرة بالفعل لتقديم طريقة جديدة للنظر في SQL.


على الرغم من أن بناء جملة SQL هو نفسه تقريبًا في قواعد البيانات المختلفة ، إلا أن هذه المقالة تستخدم PostgreSQL للاستعلامات. ستعمل بعض الأمثلة في MySQL وقواعد البيانات الأخرى.

1. ثلاث كلمات سحرية

هناك العديد من الكلمات الرئيسية في SQL ، ولكن تظهر SELECT و FROM و WHERE في كل استعلام تقريبًا. بعد ذلك بقليل ، ستدرك أن هذه الكلمات الثلاث تمثل الجوانب الأساسية لبناء استعلامات قاعدة البيانات ، والاستعلامات الأخرى الأكثر تعقيدًا هي مجرد وظائف إضافية فوقها.

2. قاعدتنا

دعنا نلقي نظرة على قاعدة البيانات التي سنستخدمها كمثال في هذه المقالة:







لدينا مكتبة كتب وأشخاص. يوجد أيضًا جدول خاص بمحاسبة الكتب الصادرة.

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

3. طلب ​​بسيط

لنبدأ باستعلام بسيط: نحن بحاجة الأسماءو معرفات(معرف) لجميع الكتب التي كتبها المؤلف "دان براون"


سيكون الطلب على هذا النحو:


حدد bookid AS "معرف" ، العنوان من الكتب حيث المؤلف = "Dan Brown" ؛

والنتيجة كالتالي:


هوية شخصية لقب
2 الرمز المفقود
4 نار كبيرة

بسيط جدا. دعنا نلقي نظرة على الطلب لفهم ما يحدث.

3.1 من - من أين نحصل على البيانات

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


يشير FROM إلى الجدول للاستعلام عنه. يمكن أن يكون هذا جدولًا موجودًا (كما في المثال أعلاه) ، أو جدولًا تم إنشاؤه سريعًا عبر الصلات أو الاستعلامات الفرعية.

3.2 أين - ما هي البيانات التي تظهر

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

3.3 حدد - كيفية عرض البيانات

الآن بعد أن أصبح لدينا جميع الأعمدة التي نحتاجها من الجدول ، نحتاج إلى تحديد كيفية عرض هذه البيانات. في حالتنا ، نحتاج فقط إلى عناوين ومعرفات الكتب ، لذلك هذا ما نحن و يختارباستخدام SELECT. في نفس الوقت ، يمكنك إعادة تسمية العمود باستخدام AS.


يمكن تصور الاستعلام بالكامل باستخدام رسم تخطيطي بسيط:


4. اتصالات (ينضم)

الآن نريد أن نرى العناوين (ليست بالضرورة فريدة) لجميع كتب دان براون التي تم أخذها من المكتبة ، ومتى يجب إرجاع هذه الكتب:


حدد books.title AS "Title"، والاقتراضات.returndate AS "تاريخ الإرجاع" من الاقتراضات.

نتيجة:


عنوان تاريخ العودة
الرمز المفقود 2016-03-23 00:00:00
نار كبيرة 2016-04-13 00:00:00
الرمز المفقود 2016-04-19 00:00:00

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


الاقتراضات JOIN books ON warsings.bookid = books.bookid هو جدول جديد تم تشكيله من خلال الجمع بين جميع السجلات من جداول "الكتب" و "الاستعارة" التي تكون فيها قيم دفتر الملاحظات هي نفسها. ستكون نتيجة هذا الدمج:



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


لنجرب صلة أكثر تعقيدًا من جدولين.


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


هذه المرة ، دعنا ننتقل من الأسفل إلى الأعلى:


الخطوة الخطوة 1- من أين نحصل على البيانات؟ للحصول على النتيجة التي نريدها ، نحتاج إلى ضم طاولات "الأعضاء" و "الكتب" مع طاولة "الاقتراض". سيبدو قسم JOIN كما يلي:


الاقتراضات.

يمكن رؤية نتيجة الاتصال على الرابط.


الخطوة 2- ما هي البيانات التي نعرضها؟ نحن نهتم فقط بالبيانات التي يكون فيها مؤلف الكتاب هو "دان براون"


أين كتب المؤلف = "دان براون"

الخطوه 3- كيف نعرض البيانات؟ الآن بعد أن تم استلام البيانات ، تحتاج فقط إلى عرض اسم ولقب أولئك الذين أخذوا الكتب:


حدد members.firstname AS "الاسم الأول" ، members.lastname AS "اسم العائلة"

ممتاز! يبقى فقط دمج المكونات الثلاثة وتقديم الطلب الذي نحتاجه:


حدد members.firstname AS "الاسم الأول" ، members.lastname AS "اسم العائلة" من الاقتراضات ، قم بضم كتب على الاقتراض.bookid = books.bookid انضم إلى أعضاء ON members.memberid =orrowings.memberid WHERE books.author = "Dan Brown"؛

والتي ستعطينا:


الاسم الأول الكنية
مايك ويليس
إلين هورتون
إلين هورتون

بخير! لكن الأسماء مكررة (ليست فريدة). سوف نصلح هذا قريبا

5. التجميع

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


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


حدد members.firstname AS "الاسم الأول" ، members.lastname AS "اسم العائلة" ، count (*) AS "عدد الكتب المستعارة" من الاقتراضات JOIN books ON warsings.bookid = books.bookid انضم إلى أعضاء ON members.memberid = الاقتراضات .memberid WHERE books.author = "Dan Brown" GROUP BY members.firstname، members.lastname؛

والتي ستعطينا النتيجة المرجوة:


الاسم الأول الكنية عدد الكتب المستعارة
مايك ويليس 1
إلين هورتون 2

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


كل صف في النتيجة هو نتيجة تجميع كل مجموعة.



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


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


حدد المؤلف ، المبلغ (المخزون) من مجموعة الكتب حسب المؤلف ؛

نتيجة:


مؤلف مجموع
روبن شارما 4
دان براون 6
جون الأخضر 3
الأميش تريباثي 2

هنا ، تعالج وظيفة الجمع عمود المخزون فقط وتحسب مجموع كل القيم في كل مجموعة.

6. الاستعلامات الفرعية


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

6.1 جدول ثنائي الأبعاد

هناك استعلامات تقوم بإرجاع عدة أعمدة. وخير مثال على ذلك هو الاستعلام من تمرين التجميع الأخير. كاستعلام فرعي ، فإنه سيعيد ببساطة جدولًا آخر يمكن إجراء استعلامات جديدة مقابله. استمرارًا للتمرين السابق ، إذا أردنا معرفة عدد الكتب التي كتبها مؤلف "Robin Sharma" ، فإن إحدى الطرق الممكنة هي استخدام الاستعلامات الفرعية:


حدد * من (حدد المؤلف ، المجموع (المخزون) من مجموعة الكتب حسب المؤلف) كنتائج حيث المؤلف = "Robin Sharma" ؛

نتيجة:



يمكن كتابتها كـ: ["روبن شارما" ، "دان براون"]


2. الآن دعنا نستخدم هذه النتيجة في استعلام جديد:


حدد العنوان ، دفتر الكتاب من الكتب التي يوجد بها المؤلف (حدد المؤلف من (حدد المؤلف ، المجموع (المخزون) من مجموعة الكتب حسب المؤلف) كنتائج حيث المجموع> 3) ؛

نتيجة:


لقب كتاب
الرمز المفقود 2
من سيبكي عندما تموت؟ 3
نار كبيرة 4

هذا مماثل لـ:


حدد العنوان ، دفتر الكتاب من الكتب حيث يوجد المؤلف ("Robin Sharma"، "Dan Brown") ؛

6.3 القيم الفردية

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


دعنا ، على سبيل المثال ، نحصل على معلومات حول جميع الكتب التي تزيد عن المتوسط ​​الحالي في المكتبة.


يمكن الحصول على المتوسط ​​بهذه الطريقة:


حدد متوسط ​​(المخزون) من الكتب ؛

مما يعطينا:


7. كتابة العمليات

تكون معظم عمليات الكتابة في قاعدة البيانات مباشرة إلى حد ما مقارنة بالقراءات الأكثر تعقيدًا.

7.1 تحديث

بناء الجملة لاستعلام UPDATE هو نفس صيغة استعلام القراءة. الاختلاف الوحيد هو أنه بدلاً من اختيار أعمدة SELECT ، نقوم بتعيين قيم SET.


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


تحديث الكتب SET stock = 0 حيث المؤلف = "Dan Brown" ؛

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


7.2 يحذف

استعلام DELETE هو مجرد استعلام SELECT أو UPDATE بدون أسماء أعمدة. عنجد. كما هو الحال مع SELECT و UPDATE ، تظل جملة WHERE كما هي: فهي تحدد الصفوف المراد حذفها. تؤدي عملية الحذف إلى تدمير الصف بأكمله ، لذلك لا معنى لتحديد أعمدة منفصلة. لذلك ، إذا قررنا عدم إعادة تعيين عدد كتب دان براون ، ولكن حذف جميع السجلات تمامًا ، فيمكننا تقديم الطلب التالي:


احذف من الكتب حيث المؤلف = "Dan Brown" ؛

7.3 إدراج

ربما يكون الشيء الوحيد الذي يختلف عن أنواع الاستعلامات الأخرى هو INSERT. التنسيق هو:


أدخل في x (أ ، ب ، ج) القيم (س ، ص ، ض) ؛

حيث a و b و c هي أسماء الأعمدة و x و y و z هي القيم التي يجب إدراجها في تلك الأعمدة بنفس الترتيب. هذا هو الأساس.


دعنا نلقي نظرة على مثال محدد. فيما يلي استعلام INSERT الذي يملأ جدول "الكتب" بالكامل:


INSERT INTO Books (bookid، title، author، publish، stock) VALUES (1، "Scion of Ikshvaku"، "Amish Tripathi"، "06-22-2015"، 2)، (2، "The Lost Symbol"، " دان براون "،" 07-22-2010 "، 3) ، (3 ،" من سيبكي عندما تموت؟ "،" روبن شارما "،" 06-15-2006 "، 4) ، (4 ،" جحيم " ، "دان براون"، "05-2015"، 3)، (5، "The Fault in our Stars"، "John Green"، "01 2015"، 3)؛

8. التحقق

لقد وصلنا إلى النهاية ، أقترح اختبارًا صغيرًا. ألق نظرة على هذا الطلب في بداية المقال. يمكنك معرفة ذلك؟ حاول تقسيمها إلى عبارات SELECT و FROM و WHERE و GROUP BY والنظر في المكونات الفردية للاستعلامات الفرعية.


هنا في شكل أكثر قابلية للقراءة:


حدد members.firstname || "" || members.lastname AS "الاسم الكامل" من الاقتراض أعضاء INNER JOIN ON members.memberid = Loarings.memberid INNER JOIN Books على books.bookid = Loarings.bookid WHERE ... ) FROM books)) GROUP BY members.firstname، members.lastname؛

يعرض هذا الاستعلام قائمة بالأشخاص الذين قاموا بسحب كتاب من المكتبة يحتوي على إجمالي أعلى من المتوسط.


نتيجة:


الاسم بالكامل
ليدا تايلر

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