سيأخذ الدرس في الاعتبار لغة استعلام sql: تعمل أساسيات بناء جملة لغة sql phpMyAdminوخدمة لفحص استعلامات SQL عبر الإنترنت
قاعدة البيانات- تخزين البيانات المركزي الذي يوفر التخزين والوصول والمعالجة الأولية واسترجاع المعلومات.
قواعد البيانات مقسمة إلى:
SQL (لغة الاستعلام الهيكلية)- هي لغة استعلام منظمة (مترجمة من الإنجليزية). تركز اللغة على العمل مع قواعد البيانات العلائقية (الجدولية). اللغة بسيطة وتتكون في الواقع من أوامر (مفسرة) يمكنك من خلالها العمل بكميات كبيرة من البيانات (قواعد البيانات) وحذف وإضافة وتغيير المعلومات فيها وإجراء بحث مناسب.
للعمل مع كود SQL ، أنت بحاجة إلى نظام إدارة قواعد البيانات (DBMS) ، والذي يوفر وظائف للعمل مع قواعد البيانات.
نظام إدارة قواعد البيانات(DBMS) - مجموعة من أدوات اللغة والبرامج المصممة لإنشاء قاعدة بيانات وصيانتها ومشاركتها بواسطة العديد من المستخدمين.
عادة ، للتدريب ، يتم استخدامه Microsoft Access DBMS، لكننا سنستخدم نظامًا أكثر شيوعًا في مجال الويب -. للراحة ، سيستخدم واجهة ويب أو خدمة عبر الإنترنت لإنشاء استعلامات sql ، ومبدأ العمل الموضح أدناه.
الأهمية:عند العمل مع قواعد البيانات العلائقية أو الجدولية ، سيتم استدعاء صفوف الجدول السجلاتوالأعمدة هوامش.
يجب أن يكون لكل عمود نوع البيانات الخاص به ، أي يجب أن تكون مصممة لإدخال بيانات من نوع معين. موصوفة في أحد دروس هذه الدورة.
تتكون لغة SQL من المكونات التالية:
1.
تتكون لغة معالجة البيانات من 4 أوامر رئيسية:
لغة تعريف البياناتيستخدم لإنشاء وتعديل هيكل قاعدة البيانات والأجزاء المكونة لها - الجداول والفهارس وطرق العرض (الجداول الافتراضية) ، وكذلك المشغلات والإجراءات المخزنة.
سننظر فقط في عدد قليل من أوامر اللغة الأساسية... هم انهم:
تُستخدم لغة إدارة البيانات لإدارة حقوق الوصولللبيانات وتنفيذ الإجراءات في بيئة متعددة المستخدمين.
تحتاج أولاً إلى إكمال أول نقطتين من.
ثم:
يمكن التحقق عبر الإنترنت من استعلامات 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/:
البرمجة على تي- 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 عندما يتم تنفيذ تخصيص بسيط لمتغير ، أي إذا تم بالفعل تعيين القيمة المخصصة بشكل صريح في شكل قيمة محددة أو في شكل متغير آخر.
استخدام المتغيرات في استعلامات SQL
إحدى الخصائص المفيدة للغة T-SQL هي أنه يمكن استخدام المتغيرات في الاستعلامات دون الحاجة إلى إنشاء سلاسل ديناميكية معقدة تضم المتغيرات في رمز البرنامج. يستمر وجود SQL الديناميكي ، ولكن يمكن تغيير قيمة واحدة بسهولة أكبر باستخدام متغير.
حيثما يمكن استخدام تعبير في استعلام ، يمكن أيضًا استخدام متغير. يوضح المثال التالي استخدام متغير في جملة WHERE:
إعلانIdProd int ؛
تعيينIdProd = 1 ،
تحديد
من المنتج
حيث IdProd =IdProd ؛
متغيرات النظام العالمية
يحتوي SQL Server على أكثر من ثلاثين متغيرًا عالميًا بدون معلمات يتم تحديدها وصيانتها بواسطة النظام. جميع المتغيرات العامة مسبوقة برمزين @. يمكنك استرداد قيمة أي منها باستعلام SELECT بسيط ، كما في المثال التالي:
حدداتصالات
يستخدم المتغير العامCONNECTIONS لاسترداد عدد الاتصالات بـ SQL Server منذ بدء تشغيل البرنامج.
بعض متغيرات النظام الأكثر استخدامًا هي:
! لاحظ أنه منذ 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 هي لغة برمجة للعمل مع مجموعات من الحقائق والعلاقات فيما بينها. تستخدم برامج إدارة قواعد البيانات العلائقية مثل 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 لوصف مجموعة بيانات في SQL. يحتوي على وصف كامل لمجموعة البيانات التي سيتم استردادها من قاعدة البيانات ، بما في ذلك ما يلي:
الجداول التي تحتوي على بيانات ؛
الروابط بين البيانات من مصادر مختلفة ؛
الحقول أو الحسابات التي يتم على أساسها اختيار البيانات ؛
شروط الاختيار التي يجب أن تفي بالبيانات المضمنة في نتيجة الاستعلام ؛
الحاجة وطريقة الفرز.
تتكون جملة SQL من عدة أجزاء تسمى الجمل. كل جملة في جملة SQL لها غرض مختلف. بعض الاقتراحات مطلوبة. يسرد الجدول التالي عبارات SQL الأكثر استخدامًا.
شرط SQL | وصف | إلزامي |
---|---|---|
يحدد الحقول التي تحتوي على البيانات التي تريدها. |
||
يحدد الجداول التي تحتوي على الحقول المحددة في عبارة SELECT. |
||
يحدد معايير اختيار الحقول التي يجب أن تلبيها جميع السجلات المضمنة في النتائج. |
||
يحدد ترتيب فرز النتائج. |
||
في جملة SQL التي تحتوي على وظائف تجميعية ، تحدد الحقول التي لا تحسب جملة SELECT قيمة تلخيص لها. |
فقط إذا كان هناك مثل هذه المجالات |
|
في جملة SQL التي تحتوي على وظائف تجميعية ، تحدد الشروط التي تنطبق على الحقول التي تحسب جملة SELECT قيمة تلخيص لها. |
تتكون كل عبارة SQL من مصطلحات يمكن مقارنتها بأجزاء الكلام. يسرد الجدول التالي أنواع مصطلحات SQL.
مصطلح SQL | جزء مماثل من الكلام | تعريف | مثال |
---|---|---|---|
المعرف |
اسم |
الاسم المستخدم لتعريف كائن قاعدة البيانات ، مثل اسم الحقل. |
العملاء. [رقم الهاتف] |
المشغل أو العامل |
فعل أو ظرف |
كلمة أساسية تمثل إجراءً أو تعدله. |
|
ثابت |
اسم |
قيمة لا تتغير ، مثل رقم أو NULL. |
|
التعبير |
صفة |
مجموعة من المعرفات والعوامل والثوابت والوظائف المصممة لحساب قيمة واحدة. |
> = البضائع. [السعر] |
التنسيق العام لجمل SQL:
حدد field_1
من table_1
حيث معيار_1
;
ملحوظات:
يتجاهل Access فواصل الأسطر في عبارات SQL. بغض النظر ، فمن المستحسن أن تبدأ كل جملة في سطر جديد بحيث تكون عبارة SQL سهلة القراءة ، سواء بالنسبة للشخص الذي كتبها أو لأي شخص آخر.
تنتهي كل جملة SELECT بفاصلة منقوطة (؛). يمكن أن تظهر الفاصلة المنقوطة إما في نهاية الجملة الأخيرة أو في سطر منفصل في نهاية جملة SQL.
يوضح المثال التالي الشكل الذي قد تبدو عليه عبارة SQL في Access لاستعلام تحديد بسيط.
1. عبارة SELECT
2. من شرط
3. شرط أين
دعنا ننتقل إلى مثال جملة بجملة لفهم كيفية عمل بناء جملة SQL.
شركة SELECT
هذا عبارة عن جملة SELECT. يحتوي على عبارة (SELECT) متبوعة بمعرّفين ("[عنوان البريد الإلكتروني]" و "الشركة").
إذا كان المعرف يحتوي على مسافات أو أحرف خاصة (على سبيل المثال ، "عنوان البريد الإلكتروني") ، فيجب وضعه بين قوسين مربعين.
في عبارة SELECT ، لا تحتاج إلى تحديد الجداول التي تحتوي على الحقول ، ولا يمكنك تحديد معايير التحديد التي يجب أن تفي بها البيانات المضمنة في النتائج.
في جملة SELECT ، تأتي عبارة SELECT دائمًا قبل عبارة FROM.
من جهات الاتصال
هذا هو شرط من. يحتوي على عامل (من) متبوعًا بمعرف (جهات الاتصال).
لم يتم تحديد حقول التحديد في عبارة FROM.
أين المدينة = "سياتل"
هذا هو شرط WHERE. يحتوي على عامل التشغيل (WHERE) متبوعًا بالتعبير (City = "Rostov").
هناك العديد من الأشياء التي يمكنك القيام بها باستخدام عبارات SELECT و FROM و WHERE. لمزيد من المعلومات حول استخدام هذه الاقتراحات ، راجع المقالات التالية:
كما هو الحال مع Microsoft Excel ، يمكن لـ Access فرز نتائج الاستعلام في جدول. باستخدام عبارة ORDER BY ، يمكنك أيضًا تحديد كيفية فرز النتائج عند تشغيل الاستعلام. إذا تم استخدام عبارة ORDER BY ، فيجب أن تظهر في نهاية عبارة SQL.
تحتوي عبارة ORDER BY على قائمة بالحقول التي سيتم فرزها بنفس الترتيب الذي سيتم تطبيق الفرز به.
على سبيل المثال ، افترض أنك تريد أولاً فرز النتائج حسب حقل الشركة بترتيب تنازلي ، ثم إذا كانت هناك سجلات بنفس قيمة حقل الشركة ، ففرزها حسب حقل عنوان البريد الإلكتروني بترتيب تصاعدي. ستبدو عبارة ORDER BY كما يلي:
ترتيب حسب الشركة DESC ،
ملحوظة:بشكل افتراضي ، يقوم Access بفرز القيم بترتيب تصاعدي (من الألف إلى الياء ، من الأصغر إلى الأكبر). لفرز القيم بترتيب تنازلي بدلاً من ذلك ، يجب عليك تحديد الكلمة الأساسية DESC.
لمزيد من المعلومات حول عبارة ORDER BY ، راجع المقالة ORDER BY Clause.
تحتاج أحيانًا إلى العمل باستخدام بيانات مجمعة ، مثل إجمالي المبيعات الشهرية أو أغلى العناصر الموجودة في المخزون. للقيام بذلك ، يتم تطبيق دالة مجمعة على الحقل في عبارة SELECT. على سبيل المثال ، إذا كان الاستعلام يهدف إلى استرداد عدد عناوين البريد الإلكتروني لكل شركة ، فقد تبدو عبارة SELECT على النحو التالي:
تعتمد القدرة على استخدام دالة تجميعية معينة على نوع البيانات في الحقل والتعبير المطلوب. لمزيد من المعلومات حول الدالات التجميعية المتوفرة ، راجع المقالة وظائف SQL التجميعية.
عند استخدام الدالات التجميعية ، عادة ما تحتاج إلى إنشاء جملة GROUP BY. تحدد عبارة GROUP BY كافة الحقول التي لا يتم تطبيق دالة تجميع لها. إذا تم تطبيق الدالات التجميعية على كافة الحقول في استعلام ، فلن تحتاج إلى إنشاء عبارة GROUP BY.
يجب أن تتبع جملة GROUP BY على الفور جملة WHERE أو FR إذا لم تكن هناك عبارة WHERE. في عبارة GROUP BY ، يتم تحديد الحقول بنفس الترتيب كما في عبارة SELECT.
دعنا نواصل مع المثال السابق. إذا كانت عبارة SELECT تطبق الوظيفة التجميعية فقط على حقل [عنوان البريد الإلكتروني] ، فستبدو عبارة GROUP BY كما يلي:
تجميع حسب الشركة
لمزيد من المعلومات حول عبارة GROUP BY ، راجع المقالة عبارة GROUP BY.
إذا كنت بحاجة إلى تحديد شروط لتقييد النتائج ، ولكن الحقل الذي تريد تطبيقه يتم استخدامه في الدالة التجميعية ، فلا يمكنك استخدام جملة 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 مصدر قد يكون من الضروري إنشاء قيود لأعمدة معينة في الجدول. عند إنشاء جدول ، يمكنك تعيين القيود التالية: يمكن تحديد أكثر من مفتاح أساسي. في هذه الحالة ، تحصل على مفتاح أساسي مركب. أنشئ جدول "المعلم": إنشاء مدرس جدول (ID CHAR (5) ، اسم VARCHAR (20) NOT NULL ، dept_name VARCHAR (20) ، راتب NUMERIC (8،2) ، PRIMARY KEY (ID) ، FOREIGN KEY (dept_name) قسم المراجع (dept_name)) ؛ يمكنك عرض معلومات مختلفة (نوع القيمة ، مفتاح أم لا) حول أعمدة الجدول باستخدام الأمر التالي: يصف عند إضافة البيانات إلى كل عمود من أعمدة الجدول ، لن تحتاج إلى تحديد أسماء الأعمدة. ادخل في يستخدم SELECT لاسترداد البيانات من جدول معين: تحديد يمكن للأمر التالي عرض جميع البيانات من الجدول: اختر من يمكن أن تحتوي أعمدة الجدول على بيانات مكررة. استخدم SELECT DISTINCT للحصول على بيانات غير مكررة فقط. اختر مسافة يمكنك استخدام الكلمة الأساسية WHERE في SELECT لتحديد شروط في الاستعلام: تحديد يمكن تحديد الشروط التالية في الطلب: جرب الأوامر التالية. انتبه للشروط المحددة في المكان: حدد * من الدورة حيث dept_name = 'Comp. Sci. '؛ حدد * من الدورة حيث الاعتمادات> 3 ؛ حدد * من الدورة حيث dept_name = "Comp. Sci." وائتمانات> 3 ؛ غالبًا ما يتم استخدام عبارة GROUP BY مع وظائف مجمعة مثل COUNT و MAX و MIN و SUM و AVG لتجميع قيم الإخراج. تحديد دعنا نعرض عدد الدورات لكل كلية: حدد COUNT (course_id) ، dept_name من الدورة التدريبية GROUP BY dept_name ؛ تمت إضافة الكلمة الأساسية HAVING إلى SQL لأنه لا يمكن استخدام WHERE مع الدالات التجميعية. تحديد لنقم بإدراج الكليات التي تحتوي على أكثر من مقرر دراسي واحد: حدد COUNT (course_id) ، dept_name من الدورة التدريبية GROUP BY dept_name HAVING COUNT (course_id)> 1 ؛ يستخدم ORDER BY لفرز نتائج الاستعلام بترتيب تنازلي أو تصاعدي. سيقوم ORDER BY بالفرز بترتيب تصاعدي إذا لم يتم تحديد طريقة فرز ASC أو DESC. تحديد دعنا نعرض قائمة الدورات بترتيب تصاعدي وتنازلي لعدد الائتمانات: حدد * من المقرر الدراسي عن طريق الاعتمادات ؛ حدد * من المقرر الدراسي حسب الاعتمادات DESC ؛ يتم استخدام BETWEEN لتحديد قيم البيانات من نطاق محدد. يمكن استخدام القيم الرقمية والنصية وكذلك التواريخ. تحديد فيما يلي قائمة بالمعلمين الذين يزيد رواتبهم عن 50000 ولكن أقل من 100000: اختر * من مدرب حيث الراتب بين 50000 و 100000 ؛ يتم استخدام عامل التشغيل LIKE في WHERE لتحديد نمط بحث لقيمة مماثلة. هناك نوعان من المعاملات المجانية المستخدمة في LIKE: دعونا نعرض قائمة الدورات التي يحتوي اسمها على "إلى" وقائمة الدورات التي يبدأ اسمها بـ "CS-": حدد * من مقرر حيث العنوان مثل '٪ إلى٪' ؛ حدد * من الدورة حيث course_id مثل "CS -___" ؛ باستخدام IN ، يمكنك تحديد قيم متعددة لبند WHERE: تحديد دعنا نعرض قائمة بالطلاب من Comp. علوم الفيزياء والكهرباء. م: حدد * من الطالب حيث dept_name IN ('Comp. Sci.'، 'Physics'، 'Elec. Eng.') ؛ يتم استخدام JOIN لربط جدولين أو أكثر باستخدام السمات المشتركة داخلها. توضح الصورة أدناه الطرق المختلفة للجمع في SQL. لاحظ الفرق بين الصلة الخارجية اليسرى والصلة الخارجية اليمنى: تحديد سنعرض قائمة بجميع الدورات والمعلومات المقابلة حول الكليات: حدد * من قسم الانضمام إلى الدورة التدريبية على course.dept_name = department.dept_name ؛ دعنا نسرد جميع الدورات المطلوبة والتفاصيل عنها: حدد prereq.course_id، title، dept_name، credits، prereq_id من prereq LEFT OUTER JOIN course ON prereq.course_id = course.course_id؛ سنعرض قائمة بجميع الدورات بغض النظر عما إذا كانت مطلوبة أم لا: حدد course.course_id، title، dept_name، credits، prereq_id من prereq RIGHT OUTER JOIN course ON prereq.course_id = course.course_id؛ العرض هو جدول SQL افتراضي تم إنشاؤه عن طريق تنفيذ تعبير. يحتوي على صفوف وأعمدة ويشبه إلى حد بعيد جدول SQL العادي. طريقة العرض تعرض دائمًا أحدث المعلومات من قاعدة البيانات. لنقم بإنشاء طريقة عرض تتكون من دورات ذات 3 وحدات دراسيّة: تُستخدم هذه الوظائف للحصول على نتيجة مجمعة تتعلق بالبيانات المعنية. فيما يلي وظائف مجمعة شائعة الاستخدام: الاستعلامات الفرعية المتداخلة هي استعلامات SQL التي تتضمن عبارات SELECT و FROM و WHERE المتداخلة في استعلام آخر. لنجد الدورات التي تم تدريسها في خريف 2009 وربيع 2010: حدد DISTINCT course_id من القسم حيث الفصل الدراسي = "الخريف" والسنة = 2009 AND course_id IN (حدد course_id من القسم حيث الفصل الدراسي = "الربيع" والسنة = 2010) ؛ إذا كنت مثلي ، فستوافق على أن: SQL هي واحدة من تلك الأشياء التي تبدو للوهلة الأولى سهلة (تبدو وكأنها باللغة الإنجليزية!) ، ولكن لسبب ما ، عليك أن تبحث عن كل استعلام بسيط في google للعثور على الصيغة الصحيحة. ثم تبدأ عمليات الصلات والتجميعات والاستعلامات الفرعية ، وتبين أنها محض هراء. يبدو مثل هذا: بو! سيؤدي هذا إلى تخويف أي مبتدئ ، أو حتى مطور متوسط المستوى ، إذا كانت هذه هي المرة الأولى التي يرى فيها SQL. لكنها ليست كلها بهذا السوء. من السهل تذكر ما هو بديهي ، وبمساعدة هذا البرنامج التعليمي آمل أن أخفض عتبة إدخال SQL للمبتدئين ، ولأولئك الذين لديهم خبرة بالفعل لتقديم طريقة جديدة للنظر في SQL. على الرغم من أن بناء جملة SQL هو نفسه تقريبًا في قواعد البيانات المختلفة ، إلا أن هذه المقالة تستخدم PostgreSQL للاستعلامات. ستعمل بعض الأمثلة في MySQL وقواعد البيانات الأخرى. هناك العديد من الكلمات الرئيسية في SQL ، ولكن تظهر SELECT و FROM و WHERE في كل استعلام تقريبًا. بعد ذلك بقليل ، ستدرك أن هذه الكلمات الثلاث تمثل الجوانب الأساسية لبناء استعلامات قاعدة البيانات ، والاستعلامات الأخرى الأكثر تعقيدًا هي مجرد وظائف إضافية فوقها. دعنا نلقي نظرة على قاعدة البيانات التي سنستخدمها كمثال في هذه المقالة: لدينا مكتبة كتب وأشخاص. يوجد أيضًا جدول خاص بمحاسبة الكتب الصادرة. لنبدأ باستعلام بسيط: نحن بحاجة الأسماءو معرفات(معرف) لجميع الكتب التي كتبها المؤلف "دان براون" سيكون الطلب على هذا النحو: والنتيجة كالتالي: بسيط جدا. دعنا نلقي نظرة على الطلب لفهم ما يحدث. قد يبدو هذا واضحًا الآن ، ولكن من المهم جدًا لاحقًا عندما نصل إلى عمليات الانضمام والاستعلامات الفرعية. يشير FROM إلى الجدول للاستعلام عنه. يمكن أن يكون هذا جدولًا موجودًا (كما في المثال أعلاه) ، أو جدولًا تم إنشاؤه سريعًا عبر الصلات أو الاستعلامات الفرعية. حيث يتصرف مثل المرشح سلاسلالتي نريد إخراجها. في حالتنا ، نريد أن نرى فقط تلك السطور حيث القيمة في عمود المؤلف هي "دان براون". الآن بعد أن أصبح لدينا جميع الأعمدة التي نحتاجها من الجدول ، نحتاج إلى تحديد كيفية عرض هذه البيانات. في حالتنا ، نحتاج فقط إلى عناوين ومعرفات الكتب ، لذلك هذا ما نحن و يختارباستخدام SELECT. في نفس الوقت ، يمكنك إعادة تسمية العمود باستخدام AS. يمكن تصور الاستعلام بالكامل باستخدام رسم تخطيطي بسيط: الآن نريد أن نرى العناوين (ليست بالضرورة فريدة) لجميع كتب دان براون التي تم أخذها من المكتبة ، ومتى يجب إرجاع هذه الكتب: نتيجة: بالنسبة للجزء الأكبر ، يكون الطلب مشابهًا للطلب السابق. فيما عدامن الأقسام. هذا يعني انه نطلب البيانات من جدول آخر... نحن لا نصل إلى طاولة الكتب أو طاولة الاستعارة. بدلا من ذلك ، نشير إلى طاولة جديدةالذي تم إنشاؤه من خلال ضم الجدولين. الاقتراضات JOIN books ON warsings.bookid = books.bookid هو جدول جديد تم تشكيله من خلال الجمع بين جميع السجلات من جداول "الكتب" و "الاستعارة" التي تكون فيها قيم دفتر الملاحظات هي نفسها. ستكون نتيجة هذا الدمج: ثم نقوم بالاستعلام عن هذا الجدول بنفس الطريقة كما في المثال أعلاه. هذا يعني أنه عند الانضمام إلى الجداول ، ما عليك سوى القلق بشأن كيفية إنشاء هذه الصلة. وبعد ذلك يصبح الطلب واضحًا كما في حالة "الطلب البسيط" من النقطة 3. لنجرب صلة أكثر تعقيدًا من جدولين. نريد الآن الحصول على أسماء الأشخاص الذين أخذوا من مكتبة كتاب المؤلف "دان براون". هذه المرة ، دعنا ننتقل من الأسفل إلى الأعلى: الخطوة الخطوة 1- من أين نحصل على البيانات؟ للحصول على النتيجة التي نريدها ، نحتاج إلى ضم طاولات "الأعضاء" و "الكتب" مع طاولة "الاقتراض". سيبدو قسم JOIN كما يلي: يمكن رؤية نتيجة الاتصال على الرابط. الخطوة 2- ما هي البيانات التي نعرضها؟ نحن نهتم فقط بالبيانات التي يكون فيها مؤلف الكتاب هو "دان براون" الخطوه 3- كيف نعرض البيانات؟ الآن بعد أن تم استلام البيانات ، تحتاج فقط إلى عرض اسم ولقب أولئك الذين أخذوا الكتب: ممتاز! يبقى فقط دمج المكونات الثلاثة وتقديم الطلب الذي نحتاجه: والتي ستعطينا: بخير! لكن الأسماء مكررة (ليست فريدة). سوف نصلح هذا قريبا تحدث تقريبا، التجميعات مطلوبة لتحويل عدة صفوف إلى صف واحد... في نفس الوقت ، أثناء التجميع ، يتم استخدام منطق مختلف لأعمدة مختلفة. دعنا نواصل مع مثالنا حيث تظهر الأسماء المكررة. يمكن ملاحظة أن إلين هورتون استعارت أكثر من كتاب ، لكن هذه ليست أفضل طريقة لإظهار هذه المعلومات. يمكن تقديم طلب آخر: والتي ستعطينا النتيجة المرجوة: تأتي جميع التجميعات تقريبًا مع عبارة GROUP BY. هذا الشيء يحول الجدول الذي يمكن استرجاعه بواسطة استعلام إلى مجموعات من الجداول. تتوافق كل مجموعة مع قيمة فريدة (أو مجموعة قيم) للعمود الذي حددناه في GROUP BY. في مثالنا ، نقوم بتحويل النتيجة من التمرين السابق إلى مجموعة صفوف. نقوم أيضًا بالتجميع مع العدد ، والذي يحول الصفوف المتعددة إلى قيمة عدد صحيح (في حالتنا ، هذا هو عدد الصفوف). ثم يتم تعيين هذه القيمة لكل مجموعة. كل صف في النتيجة هو نتيجة تجميع كل مجموعة. يمكنك الوصول إلى استنتاج منطقي مفاده أنه يجب تحديد جميع الحقول في النتيجة إما في GROUP BY ، أو يجب إجراء التجميع عليها. نظرًا لأن جميع الحقول الأخرى يمكن أن تختلف عن بعضها البعض في سطور مختلفة ، وإذا قمت بتحديدها باستخدام SELECT ، فليس من الواضح أي القيم الممكنة يجب أخذها. في المثال أعلاه ، عالجت وظيفة العد جميع الأسطر (نظرًا لأننا كنا نحسب عدد الأسطر). وظائف أخرى مثل sum أو max تعالج فقط السلاسل المحددة. على سبيل المثال ، إذا أردنا معرفة عدد الكتب التي كتبها كل مؤلف ، فنحن بحاجة إلى استعلام مثل هذا: نتيجة: هنا ، تعالج وظيفة الجمع عمود المخزون فقط وتحسب مجموع كل القيم في كل مجموعة. الاستعلامات الفرعية هي استعلامات SQL عادية مضمنة في استعلامات أكبر. وهي مقسمة إلى ثلاثة أنواع حسب نوع النتيجة التي تم إرجاعها. هناك استعلامات تقوم بإرجاع عدة أعمدة. وخير مثال على ذلك هو الاستعلام من تمرين التجميع الأخير. كاستعلام فرعي ، فإنه سيعيد ببساطة جدولًا آخر يمكن إجراء استعلامات جديدة مقابله. استمرارًا للتمرين السابق ، إذا أردنا معرفة عدد الكتب التي كتبها مؤلف "Robin Sharma" ، فإن إحدى الطرق الممكنة هي استخدام الاستعلامات الفرعية: نتيجة: يمكن كتابتها كـ: ["روبن شارما" ، "دان براون"] 2. الآن دعنا نستخدم هذه النتيجة في استعلام جديد: نتيجة: هذا مماثل لـ: هناك استعلامات ينتج عنها صف واحد وعمود واحد فقط. يمكن معاملتها كقيم ثابتة ويمكن استخدامها أينما يتم استخدام القيم ، مثل عوامل المقارنة. يمكن أيضًا استخدامها كجداول ثنائية الأبعاد أو مصفوفات أحادية العنصر. دعنا ، على سبيل المثال ، نحصل على معلومات حول جميع الكتب التي تزيد عن المتوسط الحالي في المكتبة. يمكن الحصول على المتوسط بهذه الطريقة: مما يعطينا: تكون معظم عمليات الكتابة في قاعدة البيانات مباشرة إلى حد ما مقارنة بالقراءات الأكثر تعقيدًا. بناء الجملة لاستعلام UPDATE هو نفس صيغة استعلام القراءة. الاختلاف الوحيد هو أنه بدلاً من اختيار أعمدة SELECT ، نقوم بتعيين قيم SET. إذا فقدت كل كتب دان براون ، فأنت بحاجة إلى إعادة ضبط قيمة الكمية. سيكون طلب هذا على النحو التالي: أين يفعل نفس الشيء كما كان من قبل: يختار الصفوف. بدلاً من SELECT الذي تم استخدامه عند القراءة ، نستخدم الآن SET. ومع ذلك ، أنت الآن بحاجة إلى تحديد ليس فقط اسم العمود ، ولكن أيضًا تحديد القيمة الجديدة لهذا العمود في الصفوف المحددة. استعلام DELETE هو مجرد استعلام SELECT أو UPDATE بدون أسماء أعمدة. عنجد. كما هو الحال مع SELECT و UPDATE ، تظل جملة WHERE كما هي: فهي تحدد الصفوف المراد حذفها. تؤدي عملية الحذف إلى تدمير الصف بأكمله ، لذلك لا معنى لتحديد أعمدة منفصلة. لذلك ، إذا قررنا عدم إعادة تعيين عدد كتب دان براون ، ولكن حذف جميع السجلات تمامًا ، فيمكننا تقديم الطلب التالي: ربما يكون الشيء الوحيد الذي يختلف عن أنواع الاستعلامات الأخرى هو INSERT. التنسيق هو: حيث a و b و c هي أسماء الأعمدة و x و y و z هي القيم التي يجب إدراجها في تلك الأعمدة بنفس الترتيب. هذا هو الأساس. دعنا نلقي نظرة على مثال محدد. فيما يلي استعلام INSERT الذي يملأ جدول "الكتب" بالكامل: لقد وصلنا إلى النهاية ، أقترح اختبارًا صغيرًا. ألق نظرة على هذا الطلب في بداية المقال. يمكنك معرفة ذلك؟ حاول تقسيمها إلى عبارات SELECT و FROM و WHERE و GROUP BY والنظر في المكونات الفردية للاستعلامات الفرعية. هنا في شكل أكثر قابلية للقراءة: يعرض هذا الاستعلام قائمة بالأشخاص الذين قاموا بسحب كتاب من المكتبة يحتوي على إجمالي أعلى من المتوسط. نتيجة: أتمنى أن تكون قد تمكنت من معرفة ذلك دون أي مشاكل. ولكن إذا لم يكن الأمر كذلك ، فسأكون ممتنًا لتعليقاتك وملاحظاتك حتى أتمكن من تحسين هذا المنشور.أوامر قاعدة البيانات
1. عرض قواعد البيانات المتاحة
عرض قواعد البيانات ؛ 2. إنشاء قاعدة بيانات جديدة
إنشاء قاعدة بيانات؛ 3. اختيار قاعدة بيانات لاستخدامها
استعمال 4. استيراد أوامر SQL من ملف .sql
مصدر 5. إزالة قاعدة البيانات
إسقاط قاعدة البيانات العمل مع الجداول
6. عرض الجداول المتوفرة في قاعدة البيانات
عرض الجداول. 7. إنشاء جدول جديد
اصنع جدول قيود النزاهة باستخدام إنشاء جدول
مثال
8. معلومات الجدول
9. إضافة البيانات إلى الجدول
ادخل في 10. تحديث بيانات الجدول
تحديث 11. إزالة كافة البيانات من الجدول
حذف من 12. حذف جدول
إسقاط الجدول أوامر لتقديم الطلبات
13. حدد
14. حدد متميز
15. أين
مثال
16. GROUP BY
مثال
17. الحصول
مثال
18. ترتيب حسب
مثال
19. بين
مثال
20. مثل
تحديد مثال
21. إن
مثال
22. JOIN
مثال 1
مثال 2
مثال 3
23. عرض
خلق
إنشاء عرض حذف
إسقاط العرض مثال
24. مجموع الوظائف
25. الاستعلامات الفرعية المتداخلة
مثال
هل تحتاج إلى "تحديد * أين أ = ب من ج" أو "تحديد أين أ = ب من ج على *"؟
حدد 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؛ 1. ثلاث كلمات سحرية
2. قاعدتنا
3. طلب بسيط
حدد bookid AS "معرف" ، العنوان من الكتب حيث المؤلف = "Dan Brown" ؛ هوية شخصية
لقب
2
الرمز المفقود
4
نار كبيرة
3.1 من - من أين نحصل على البيانات
3.2 أين - ما هي البيانات التي تظهر
3.3 حدد - كيفية عرض البيانات
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
الاقتراضات.
أين كتب المؤلف = "دان براون"
حدد 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
حدد المؤلف ، المبلغ (المخزون) من مجموعة الكتب حسب المؤلف ؛ مؤلف
مجموع
روبن شارما
4
دان براون
6
جون الأخضر
3
الأميش تريباثي
2
6. الاستعلامات الفرعية
6.1 جدول ثنائي الأبعاد
حدد * من (حدد المؤلف ، المجموع (المخزون) من مجموعة الكتب حسب المؤلف) كنتائج حيث المؤلف = "Robin Sharma" ؛
حدد العنوان ، دفتر الكتاب من الكتب التي يوجد بها المؤلف (حدد المؤلف من (حدد المؤلف ، المجموع (المخزون) من مجموعة الكتب حسب المؤلف) كنتائج حيث المجموع> 3) ؛ لقب
كتاب
الرمز المفقود
2
من سيبكي عندما تموت؟
3
نار كبيرة
4
حدد العنوان ، دفتر الكتاب من الكتب حيث يوجد المؤلف ("Robin Sharma"، "Dan Brown") ؛ 6.3 القيم الفردية
حدد متوسط (المخزون) من الكتب ؛ 7. كتابة العمليات
7.1 تحديث
تحديث الكتب SET stock = 0 حيث المؤلف = "Dan Brown" ؛ 7.2 يحذف
احذف من الكتب حيث المؤلف = "Dan Brown" ؛ 7.3 إدراج
أدخل في x (أ ، ب ، ج) القيم (س ، ص ، ض) ؛
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. التحقق
حدد 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؛ الاسم بالكامل
ليدا تايلر