تصميم قواعد البيانات لغة معالجة البيانات DMLالخاصة بلغة SQL
.9اعرض جميع الصفوف التي تحتوي ضمنها على القيمة 60في حقل شروط الدفع ،paytermsواستخدم
جدول المبيعات .Sales
.10اعرض جمي ع الم ؤلفين ال ذين تت ألف أس ماؤهم الأولى من خمس ة مح ارف ،أو تنتهي ب المحرف Oأو
بالمحرف ،Aوتبدأ بالحرف Mأو بالحرف .P
.11اعرض جمي ع عن اوين الكتب ال تي تكلفته ا أك ثر من 30دولا ًرا ،وإم ا تب دأ بح رف Tأو مع رِّف ناش رها
هو .0877
.12اعرض من جدول الموظفين Employeesأعمدة الاس م الأول ،fnameواس م العائل ة ،lnameومع رِّف
الموظف ،emp_idوالمستوى الوظيفي job_lvlللم وظفين ال ذين مس تواهم ال وظيفي أك بر من ،200
وأ ِعد تسمية عناوين هذه الأعم دة لتص بح " "First Nameو " "Last Nameو ""IDENTIFICATION
و "."Job Level
.13اع رض قيم ة حق وق المؤل ف ،royaltyوحق وق المؤل ف مض ا ًفا إليه ا %50م ع تس مية ه ذا الحقل
إلى " ،"royalty plus 50ومعرِّف العنوان ،title_idوذلك باستخدام جدول .Roysched
.14أن ِشئ السلسلة " "12xxxx567من السلسلة " "1234567باستخدام الدالة .STUFF
.15اعرض أول 40محر ًفا من كل عنوان كتاب ،إلى جانب متوسط المبيعات الشهرية لهذا العنوان حتى الآن
أي ،ytd_sales / 12واستخ ِدم جدول العناوين .Title
.16اعرض عدد الكتب التي حُ ِّددت أسعارها.
.17اعرض قائم ًة بكتب الطبخ مع متوسط تكلفة جميع الكتب لكل نوع باستخدام الأمر .GROUP BY
إليك مجموعة أسئلة متقدمة باستخدام الاستعلامات Unionو Intersectو :Minus
.1تعمل مع املات المجموع ات العلائقي ة ،UNIONو ،INTERSECTو MINUSبص ورة ص حيحة فق ط إذا
كانت العلاقات متوافق ة م ع الاتح اد ،union-compatibleفم اذا يع ني التواف ق م ع الاتح اد؟ وكي ف
يمكنك التحقق من هذا الشرط؟
.2ما هو الفرق بين ،UNIONوUNION ALL؟ واكتب صيغة كل منهما.
.3لنفترض أن ل ديك ج دولَين هم ا Employeesو ،Employees_1بحيث يحت وي الج دول Employees
على سجلات لثلاثة م وظ ِفين ،هم ،Alice Cordoza :و ،John Cretchakovو ،Anne McDonaldكم ا
يحتوي الجدول Employees_1على سجلات الموظ َفين ،John CretchakovوMary Chen؛ ما هو خرج
الاستعلام UNIONباستخدام المعلومات السابقة؟ اعرض قائم ًة بخرج هذا الاستعلام.
151
تصميم قواعد البيانات لغة معالجة البيانات DMLالخاصة بلغة SQL
.4استخدم معلومات الموظف في السؤال رقم 3لمعرف ة خ رج الاس تعلام ،UNION ALLواع رض قائم ًة
بخرج هذا الاستعلام.
.5استخدم معلومات الموظف في السؤال رقم 3لمعرف ة خ رج الاس تعلام ،INTERSECTواع رض قائم ًة
بخرج هذا الاستعلام.
.6استخدم معلومات الموظف في السؤال رقم 3لمعرفة خرج الاستعلام ،EXCEPTواع رض قائم ًة بخ رج
هذا الاستعلام.
.7ما هو الضم المتقاطع cross join؟ واع ِط مثااًل عن صيغته.
.8اشرح هذه الأنواع الثلاثة للضم:
.1الضم الخارجي اليساري left outer join
.2الضم الخارجي اليميني right outer join
.3الضم الخارجي الكامل full outer join
.9ما هو الاستعلام الفرعي ،subqueryوما هي خصائصه الأساسية؟
.10ما هو الاستعلام الفرعي المرتبط correlated subquery؟ واع ِط مثااًل على ذلك.
.11افترض أ ّن جدول المنتجات Productيحتوي على سمتين هما ،PROD_CODEو ،VEND_CODEوقيم
السمة PROD_CODEهي ،ABC :و ،DEFو ،GHIو ،JKLحيث يجري مطابقة هذه القيم م ع قيم الس مة
VEND_CODEالتالي ة ،125 :و ،124و ،124و 123على الت والي ،فمثاًل ،تقاب ل قيم ة الس مة
PROD_CODEال تي هي ABCقيم ة الس مة VEND_CODEال تي هي ،125كم ا يحت وي ج دول
الب ائعين Vendorعلى س مة واح دة هي VEND_CODEال تي له ا القيم التالي ة 123 :و 124و125
و 126حيث تُ َع ّد السمة VEND_CODEفي جدول المنتجات مفتا ًحا خارج ًيا للسمة VEND_CODEفي
جدول البائعين.
.12ما هو خرج الاستعلامات التالية باستخدام المعلومات الموجودة في السؤال رقم 11؟
.1الاستعلام UNIONبنا ًء على هذين الجدولين.
.2الاستعلام UNION ALLبنا ًء على هذين الجدولين.
.3الاستعلام INTERSECTبنا ًء على هذين الجدولين.
.4الاستعلام MINUSبنا ًء على هذين الجدولين.
إليك أسئلة متقدمة باستخدام الضم :Joins
152
تصميم قواعد البيانات لغة معالجة البيانات DMLالخاصة بلغة SQL
.1اعرض قائم ًة بجميع عناوين الكتب ،وأرقام المبيعات في جدولي الكتب ،Booksوالمبيعات ،Salesبما
في ذلك العناوين التي لا تحتوي على مبيعات باستخدام عملية الضم .join
.2اعرض قائم ًة بأسماء عائلات المؤلفين ،وجميع عناوين الكتب المنشورة ،والمرتبطة بك ل مؤل ف ،بحيث
تكون مرتب ًة حسب اسم عائلة المؤلف باستخدام الضم ،ثم احفظ ذل ك على أس اس ع رض viewي دعى
.Published Authors
.3استخدم استعلا ًما فرع ًيا لعرض جميع المؤلفين الذين يحصلون على حق وقهم بنس بة %100ويعيش ون
في ألبرتا ،Albertaوذلك بإظهار الاسم الأول ،واسم العائلة ،والرمز البريدي ،ثم احفظ ذل ك على أس اس
ع رض viewبعن وان ،AuthorsViewوبع دها أع د تس مية اس م عائل ة المؤل ف ،واس مه الأول
بالصورة ' ،'Last Nameو ' 'First Nameعند إنشاء العرض.
.4اعرض المتاجر storesالتي لم ت ِبع الكتاب الذي عنوانه ?.Is Anger the Enemy
.5اعرض قائم ًة بأسماء المتاجر للمبيع ات بع د ،2013حيث يك ون ت اريخ الطلب Order Dateأك بر من
،2013وذلك بعرض اسم المتجر ،store nameوتاريخ الطلب .order date
.6اعرض قائم ًة بعناوين الكتب المبا َع ة في المتج ر ال ذي اس مه ،News & Brewsوذل ك بع رض اس م
المتجر ،وعناوين الكتب ،وتواريخ الطلب.
.7اعرض قائم ًة بإجمالي المبيعات حسب العنوان ،وذلك بعرض عمو َدي الكمية الإجمالية والعنوان.
.8اعرض قائم ًة بإجمالي المبيعات حسب النوع ،وذلك بعرض عمو َدي الكمية الإجمالية والنوع.
.9اعرض قائم ًة بإجمالي المبيعات qty*priceحسب النوع ،وذلك بعرض عمو َدي إجمالي قيمة ال دولارات
والنوع.
.10احسب العدد الكلي لأنواع الكتب لكل ناشر ،وأظهر اسم الناشر ،والعدد الإجمالي لأنواع الكتب لكل ناشر
على حدة.
.11اعرض أسماء الناشرِين الذين ليس لديهم أ ّي نوع من الكتب ،وذلك بعرض اسم الناشر فقط.
153
.14الملحق أ :مثال عملي عن تصميم
قاعدة بيانات لجامعة
فيما يلي متطلبات البيانات لمنتج من أجل دعم تسجيل وتق ديم المس اعدة لطلاب جامع ة تعليم إلك تروني
وهمية .تحتاج جامعة تعليم إلكتروني إلى الاحتفاظ بتفاصيل طلابه ا وموظفيه ا ،والمق ررات ال تي تق دمها وأداء
الطلاب الذين يدرسون فيها .تدار الجامعة في أربع مناطق جغرافية (إنجلترا واسكتلندا وويلز وأيرلندا الشمالية).
يجب تسجيل معلومات كل طالب في البداية عند التسجيل ،ويتضمن ذلك رقم تعريف الطالب الصادر في
الوقت والاسم وسنة التسجيل والمنطقة الموجود فيها الطالب .ليس الطالب ملز ًما بالتسجيل في أي مقرر عن د
التسجيل ،فيمكنه التسجيل في مقررٍ ما في وق ٍت لاحق.
يجب أن تتضمن المعلومات المسجلة لكل عضو في القسم التعليمي وقسم الإرشاد رق َم الموظ ف والاس م
والمنطقة التي يوجد بها .قد يعمل كل موظف كمرشد counselorلط ال ٍب أو أك ثر ،وق د يعم ل كم درس tutor
لطال ٍب أو أكثر في مقررٍ أو أكثر .قد لا يُخ َّصص لأحد الموظفين أي طالب كمدرس أو كمرشد في أي وق ٍت معين.
يملك كل طالب مرش ًدا واح ًدا يخ َّصص ل ه عن د التس جيل ،ويق ّدم ال دعم للط الب ط وال حيات ه الجامعي ة.
يُخ َّصص للطالب مدر ٌس منفص ٌل لكل مقرر سجّل فيه الطالب .يُس َمح للموظف فقط العمل كمرشد أو كم د ّرس
لطال ٍب مقيم في نفس منطقته.
يجب أن يكون لكل مقرر متوفر للدراس ة رم ز مق رر وعن وان وقيم ة من حيث نق اط الائتم ان ،حيث يك ون
للمقرر إما 15نقطة أو 30نقطة .قد يكون للمقرر حص ة quotaلع دد الطلاب المس جلين في ه في أي ع رض .لا
يحتاج المقرر إلى أي طالب مسجل فيه (مثل المقرر الذي ُك ِتب للتو ثم ُعرِض للدراسة).
يُق َّيد الطلاب في عدد المقررات التي يمكنهم التسجيل فيها في نفس الوقت ،فقد لا يأخذون المق ررات في
نفس الوقت إذا تجاوز مجموع النقاط المد َمجة للمقررات المسجلين فيها 180نقطة.
تصميم قواعد البيانات الملحق أ :مثال عملي عن تصميم قاعدة بيانات لجامعة
قد يكون للمقرر ذي العدد 15نقطة ما يصل إلى ثلاث وظائف لكل عرض ،ويكون للمقرر ذي العدد 30نقطة
ما يصل إلى خمس وظائف لكل عرض .تُسجَّل درجة الوظيفة في أي مقرر كعلام ٍة من .100
قاعدة بيانات الجامعة التالية نموذج بيان ات محتم ل ي ِص ف مجموع ة المتطلب ات الم ذكورة أعلاه .يحت وي
النموذج على عدة أجزاء ،بد ًءا من مخطط ERDووص ٌف لأنواع الكيانات والقيود والافتراضات.
14.1عملية التصميم
.1الخطوة الأولى هي تحديد الن وى وال تي هي ع ادة أس ماء :الم وظفين Staffوالمق رر Courseوالط الب
Studentوالوظيفة .Assignment
.2الخطوة التالية هي توثيق جميع السمات attributesلكل كيان .entityهذا هو المكان الذي تحتاج في ه
إلى التأكد من توحيد normalizedجميع الجداول توحي ًدا صحيحًا.
.3أنشئ مخطط ERDالأولي وراجعه مع المستخدمين.
.4أجرِ تغييرات إن لزم الأمر بعد مراجعة مخطط .ERD
.5تحقق من نموذج ERمع المستخدمين لوضع اللمسات الأخيرة على التصميم.
يو ّضح الشكل التالي مخطط ERDللجامعة الذي يم ّثل نموذج بيانات لنظام سجلات الطلاب والموظفين:
155
تصميم قواعد البيانات الملحق أ :مثال عملي عن تصميم قاعدة بيانات لجامعة
14.1.1الكيان Entity
• )Student (StudentID, Name, Registered, Region, StaffNo
• ) :Staff (StaffNo, Name, Regionيحتوي هذا الجدول على مد ّرسين وغيرهم من الموظفين
• )Course (CourseCode, Title, Credit, Quota, StaffNo
• )Enrollment (StudentlD, CourseCode, DateEnrolled, FinalGrade
• )Assignment (StudentID, CourseCode, AssignmentNo, Grade
14.1.2القيود Constraints
• يجوز لأحد الموظفين أن يد ّرس أو يرشد الطلاب المتواجدين في نفس منطقتهم فقط.
• قد لا يسجّل الطلاب في مقررات لا تزيد قيمتها عن أكثر من 180نقطة في نفس الوقت.
• للسمة ( Creditضمن المقرر )Courseقيمة هي 15أو 30نقطة.
• قد يكون للمقرر الذي له 30نقطة ما يصل إلى خمس وظائف ،بينما يكون للمقرر الذي ل ه 15نقط ة م ا
يصل إلى ثلاث وظائف.
• للسمة ( Gradeضمن الوظيفة )Assignmentقيمة هي علامة من .100
14.1.3الافتراضات Assumptions
• يستطيع الطالب أن يسجّل مرة واحدة للمقرر حيث تُسجَّل عمليات التسجيل الحالية فقط.
• تُق َّدم الوظيفة مرة واحدة فقط.
14.1.4العلاقات ( Relationshipsتشمل عددية العلاقة )cardinality
لاحظ في الشكل الآتي أن سجل الطالب مرتب ط م ع مق ررات ُمس جَّلة بح د أدنى مق رر واح د إلى مق ررات
متعددة كحد أقصى.
يجب أن يكون لكل تسجيل enrollmentطالب صالح.
بما أن معرّف الطالب StudentIDهو جزء من المفتاح الرئيسي ،PKفلا يمكن أن يكون فار ًغا ،nullلذلك يجب
وجود معرّف طالب ُ StudentIDمد َخل في جدول الطالب مرة واحدة على الأقل كحد أقصى ،لأن المفتاح الرئيسي
PKيجب أاّل يتكرّر.
156
تصميم قواعد البيانات الملحق أ :مثال عملي عن تصميم قاعدة بيانات لجامعة
يوضح الشكل الآتي ارتباط س جل الم وظفين (الم د ّرس هن ا) بح د أدنى 0ط الب وبطلاب متع ددين كح د
أقصى .قد يكون لسجل الطالب مدر ٌس tutorأو قد يكون بدون مدرس.
يسمح الحقل StaffNoالموجود في جدول الطلاب Studentبالقيم الفارغة التي تُم َّثل بالقيمة 0على الجانب
الأيسر من الشكل السابق .لكن في حالة وجود الحقل StaffNoفي جدول الطلاب ،Studentفيجب أن يكون
موجو ًدا في جدول الموظفين Staffبحد أقصى مرة واحدة (ال ُمم َّثل بالقيمة 1في الشكل السابق).
يرتبط سجل الموظفين ( Staffالمد ّرس هنا) بعدد لا يق ل عن 0مق رّر كح د أدنى وبمق ررات متع ددة كح د
أقصى .قد يكون المقرر courseمرتب ًطا بمد ّرس instructorأو غير مرتبط بمدرس.
الحقل StaffNoالموجود في جدول Courseهو المفتاح الخارجي FKالذي يمكن أن يكون فار ًغا ،ويُم َّثل ذلك من
خلال القيمة 0على الجانب الأيسر من العلاقة في الشكل الآتي .إذا احتوى الحقل StaffNoعلى بيانات ،فيجب
أن يكون في جدول الموظفين Staffبحد أقصى مرة واحدة ،ويُم َّثل ذلك بالقيمة 1على الجانب الأيسر من
العلاقة.
157
تصميم قواعد البيانات الملحق أ :مثال عملي عن تصميم قاعدة بيانات لجامعة
يجب توفير المقرر (في عملية التسجيل )enrollmentمرة واحدة على الأقل وم رات متع ددة كح د أقص ى.
يجب أن يحت وي ج دول التس جيل Enrollmentعلى مق رر واح د ص الح على الأق ل إلى مق ررات متع ددة
كحد أقصى.
يمكن أن تحتوي عملية التسجيل على 0مهمة كحد أدنى أو مهام متعددة كحد أقصى.
يجب أن ترتبط الوظيفة assignmentبتسجيل واحد على الأقل وبتسجي ٍل واحد كحد أقصى.
يجب أن يحتوي كل سجل في جدول الوظائف على سجل تسجيل صالح ،ويمكن ربط سجل تسجيل واحد بمهام
متعددة.
158
.15الملحق ب :أمثلة عملية عن إنشاء
مخططات ERD
15.1التمرين الأول :شركة تصنيع Manufacturer
تنتج شركة تصنيع منتجات ،وتخزّن معلومات المنتج التالية :اس م المنتج product nameومع رّف المنتج
product nameوالكمية المتوفرة .quantityتتكون هذه المنتجات من مكونات متعددة ،ويو ّفر م ِّور ٌد أو أكثر ك َّل
مك ون .تُح َف ظ معلوم ات المك ّون التالي ة :مع رّف المك ون component IDواس مه nameووص ف عن ه
descriptionالم ّوردون suppliersالذين يوفرونه والمنتجات productsال تي تس تخدم ه ذا المك ّون (اس تخدم
الشكل الآتي لحل هذا التمرين).
.1أن ِشئ مخطط ERDلإظهار كيفية تتبع هذه المعلومات.
.2اعرض أسماء الكيانات entity namesوالمف اتيح الرئيس ية primary keysوس مات attributesك ل
كيان والعلاقات بين الكيانات وعددية العلاقة .cardinality
15.1.1الافتراضات Assumptions
• يمكن وجود الم ّورد دون أن يو ّفر مكونات.
• ليس واج ًبا أن يرتبط مكو ٌن بم ّورد.
• ليس واج ًبا أن يرتبط مك ّو ٌن مع منتج ،فليست جميع المكونات مستخد َم ًة في المنتجات.
• لا يمكن أن يوجد منتج بدون مكونات.
تصميم قواعد البيانات الملحق ب :أمثلة عملية عن إنشاء مخططات ERD
15.1.2جواب مخطط ERD
- Component(CompID, CompName, Description) PK=CompID
- Product(ProdID, ProdName, QtyOnHand) PK=ProdID
- Supplier(SuppID, SuppName) PK = SuppID
- CompSupp(CompID, SuppID) PK = CompID, SuppID
- Build(CompID, ProdID, QtyOfComp) PK= CompID, ProdID
15.2التمرين الثاني :وكيل سيارات Car Dealership
أنشئ مخطط ERDلوكيل سيارات ،حيث يبيع هذا الوكيل كاًل من السيارات الجديدة والمس تعملة ،ويش ّغل
قس ًما للخدمات .اب ِن تصميمك على قواعد الأعمال التالية:
• قد يبيع من دوب المبيع ات salespersonس يارات متع ددة ،ولكن تُب اع ك ل س يارة بواس طة من دوب
مبيعات واحد فقط.
• يمكن أن يش تري العمي ل customerس يارات متع ددة ،ولكن تُش ترى ك ل س يارة بواس طة عميل
واحد فقط.
• يكتب مندوب المبيعات فاتور ًة invoiceواحدة لكل سيارة يبيعها.
• يحصل العميل على فاتورة لكل سيارة يشتريها.
• قد يأتي العميل من أجل الحصول على خدما ٍت لسيارته فقط ،وهذا يعني أن العميل لا يحتاج إلى ش راء
سيارة لكي يُص َّنف كعميل.
160
تصميم قواعد البيانات الملحق ب :أمثلة عملية عن إنشاء مخططات ERD
• إذا جلب العميل سيار ًة أو أكثر لإصلاحها أو للحصول على خدمة ،فس ُتك َتب تذكرة خدمة service ticket
لكل سيارة.
• يحتفظ وكيل السيارات بتاريخ خدمة لكل من السيارات ال ُمخ َّدمة ،ويُشار إلى سجلات الخدمة عن طري ق
رقم السيارة التسلسلي.
• يمكن أن يعمل على السيارة التي تُجلَب للحصول على خدم ة ميك انيكيون متع ددون ،وق د يعم ل ك ل
ميكانيكي على سيارات متعددة.
• قد تحتاج السيارة التي تحصل على خدمة إلى ِقطع أو قد لا تحتاج إلى قطع (مث ل عملي ة ض بط المفحّم
carburetorأو تنظيف فوهة حاقن الوقود التي لا تتطلب توفير ِقط ٍع جديدة).
15.2.1جواب مخطط ERD
161
.16الملحق ج :حل تمرين باستخدام لغة
SQL
نزّل السكريبت التالي.OrdersAndData.sql :
16.1الجزء الأول :استخدم لغة DDL
اس تخدم الس كريبت orderData.sqlال ذي ينش ئ ج داول ويض يف بيان ات مخط ط ERDللطلب ات
والبيانات في الشكل السابق.
تصميم قواعد البيانات SQL حل تمرين باستخدام لغة:الملحق ج
والس لامة المرجعي ةPK وع ّدل السكريبت لدمج المفتاح الرئيس ي،Orders أنشئ قاعدة بيانات تس ّمى .1
مع التعديلات بما في ذلك القيود الموجودةCREATE TABLE استخدم عبارات.referential integrity
.3 في الخطوة
: أضف القيود التالية.2
) قيمته الافتراضية هيCanada( tblCustomers table: Country ◦
tblOrderDetails: Quantity – > 0 ◦
) (يجب أن يكون فري ًداtblShippers: CompanyName ◦
) يجب أن يكون أكبر تاريخ الطلبorder date( tblOrders: ShippedDate ◦
CREATE DATABASE Orders
Go
Use Orders
Go
Use Orders
Go
CREATE TABLE [dbo].[tblCustomers]
[CustomerID] nvarchar(5) NOT NULL,
[CompanyName] nvarchar(40) NOT NULL,
[ContactName] nvarchar(30) NULL,
[ContactTitle] nvarchar(30) NULL,
[Address] nvarchar(60) NULL,
[City] nvarchar(15) NULL,
[Region] nvarchar(15) NULL,
[PostalCode] nvarchar(10) NULL,
[Country] nvarchar(15) NULL
Constraint df_country DEFAULT 'Canada',
[Phone] nvarchar(24) NULL,
[Fax] nvarchar(24) NULL,
Primary Key (CustomerID)
);
CREATE TABLE [dbo].[tblSupplier] (
[SupplierID] int NOT NULL,
[Name] nvarchar(50) NULL,
[Address] nvarchar(50) NULL,
163
تصميم قواعد البيانات SQL حل تمرين باستخدام لغة:الملحق ج
[City] nvarchar(50) NULL,
[Province] nvarchar(50) NULL,
Primary Key (SupplierID)
);
CREATE TABLE [dbo].[tblShippers] (
[ShipperID] int NOT NULL,
[CompanyName] nvarchar(40) NOT NULL,
Primary Key (ShipperID),<
CONSTRAINT uc_CompanyName UNIQUE (CompanyName)
);
CREATE TABLE [dbo].[tblProducts] (
[ProductID] int NOT NULL,
[SupplierID] int NULL,
[CategoryID] int NULL,
[ProductName] nvarchar(40) NOT NULL,
[EnglishName] nvarchar(40) NULL,
[QuantityPerUnit] nvarchar(20) NULL,
[UnitPrice] money NULL,
[UnitsInStock] smallint NULL,
[UnitsOnOrder] smallint NULL,
[ReorderLevel] smallint NULL,
[Discontinued] bit NOT NULL,
Primary Key (ProductID),
Foreign Key (SupplierID) References tblSupplier
);
CREATE TABLE [dbo].[tblOrders] (
[OrderID] int NOT NULL,
[CustomerID] nvarchar(5) NOT NULL,
[EmployeeID] int NULL,
[ShipName] nvarchar(40) NULL,
[ShipAddress] nvarchar(60) NULL,
[ShipCity] nvarchar(15) NULL,
[ShipRegion] nvarchar(15) NULL,
[ShipPostalCode] nvarchar(10) NULL,
[ShipCountry] nvarchar(15) NULL,
[ShipVia] int NULL,
164
تصميم قواعد البيانات SQL حل تمرين باستخدام لغة:الملحق ج
[OrderDate] smalldatetime NULL,
[RequiredDate] smalldatetime NULL,
[ShippedDate] smalldatetime NULL,
[Freight] money NULL
Primary Key (OrderID),
Foreign Key (CustomerID) References tblCustomers,
Foreign Key (ShipVia) References tblShippers,
Constraint valid_ShipDate CHECK (ShippedDate > OrderDate)
);
CREATE TABLE [dbo].[tblOrderDetails] (
[OrderID] int NOT NULL,
[ProductID] int NOT NULL,
[UnitPrice] money NOT NULL,
[Quantity] smallint NOT NULL,
[Discount] real NOT NULL,
Primary Key (OrderID, ProductID),
Foreign Key (OrderID) References tblOrders,
Foreign Key (ProductID) References tblProducts,
Constraint Valid_Qty Check (Quantity > 0)
);
Go
SQL إنشاء عبارات لغة: الجزء الثاني16.2
customer ID أظهر الحقول.2014 ال ُمن َشأة خلال عامorders والطلباتcustomers اعرض قائمة العملاء
.date ordered وorder date وorder ID و
Use Orders
Go
SELECT CompanyName, OrderID, RequiredDate as 'order date', OrderDate
as 'date ordered'
FROM tblcustomers JOIN tblOrders on tblOrders.CustomerID =
tblCustomers.CustomerID
WHERE Year(OrderDate) = 2014
حيث تك ون قيمت ه،ALTER TABLE باستخدام عبارةtblCustomer أضف حقاًل جدي ًدا (نش ًطا) في جدول
.True الافتراضية
165
تصميم قواعد البيانات SQL حل تمرين باستخدام لغة:الملحق ج
ALTER TABLE tblCustomers
ADD Active bit DEFAULT ('True')
company name (اع رض الحق ول2012 س بتمبر1 اع رض جمي ع الطلب ات ال تي ج رى ش راؤها قب ل
.)freight وكلفة الطلب الإجمالية (بما في ذلك تكلفة الشحنdate ordered و
SELECT tblOrders.OrderID, OrderDate as 'Date Ordered',
sum(unitprice*quantity*(1-discount))+ freight as 'Total Cost'
FROM tblOrderDetails join tblOrders on tblOrders.orderID =
tblOrderDetails.OrderID
WHERE OrderDate < 'September 1, 2012'
GROUP BY tblOrders.OrderID, freight, OrderDate
ShipName وOrderID (اع رض الحق ولFederal Shipping اعرض جميع الطلبات المشحونة عبر شركة
.)CustomerID وShipAddress و
SELECT OrderID, ShipName, ShipAddress, CustomerID
FROM tblOrders join tblShippers on tblOrders.ShipVia =
tblShippers.ShipperID
WHERE CompanyName= 'Federal Shipping'
.2011 اعرض جميع العملاء الذين لم يشتروا في عام
SELECT CompanyName
FROM tblCustomers
WHERE CustomerID not in
( SELECT CustomerID
FROM tblOrders
WHERE Year(OrderDate) = 2011
)
.اعرض جميع المنتجات التي لم تُطلَب أب ًدا
SELECT ProductID from tblProducts
Except
SELECT ProductID from tblOrderDetails
166
تصميم قواعد البيانات SQL حل تمرين باستخدام لغة:الملحق ج
:أو يمكن حل ذلك بالشكل التالي
SELECT Products.ProductID,Products.ProductName
FROM Products LEFT JOIN [Order Details]
ON Products.ProductID = [Order Details].ProductID
WHERE [Order Details].OrderID IS NULL
للزب ائن ال ذين يقيم ون في لن دن باس تخدام اس تعلام ف رعي (اع رضOrderID اعرض معرّف ات الطلب ات
.)OrderID وCustomerName وCustomerID الحقول
SELECT Customers.CompanyName,Customers.CustomerID,OrderID
FROM Orders
LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID
WHERE Customers.CompanyName IN
(SELECT CompanyName
FROM Customers
WHERE City = 'London')
.)supplier name وproduct name (اعرض الحقولB والم ّوردA اعرض المنتجات التي يو ّفرها الم ّورد
SELECT ProductName, Name
FROM tblProducts JOIN tblSupplier on tblProducts.SupplierID =
tblSupplier.SupplierID
WHERE Name Like 'Supplier A' or Name Like 'Supplier B'
.)QuantityPerUnit وproduct name اعرض جميع المنتجات التي تأتي ضمن صناديق (اعرض الحقول
SELECT EnglishName, ProductName, QuantityPerUnit
FROM tblProducts
WHERE QuantityPerUnit like '%box%'
ORDER BY EnglishName
الإدخال والتعديل والحذف والفهارس: الجزء الثالث16.3
EmployeeID يجب أن يكون المفتاح الرئيس ي ه و مع رّف الموظ ف.Employee أنشئ جدول الموظفين
: أضف الحقول التالية.autonumber وهو حقل ترقيم تلقائي
LastName •
FirstName •
167
تصميم قواعد البيانات SQL حل تمرين باستخدام لغة:الملحق ج
Address •
City •
Province •
Postalcode •
Phone •
Salary •
ض م ج دول. خمس ة م وظفينINSERT وعب ارات إدخ الCREATE TABLE استخدم عبارة إنش اء ج دول
اع رض الس كريبت لإنش اء الج دول وإع داد القي ود.Tblorders إلى الج دولemployee الم وظفين
.وإضافة الموظفين
Use Orders
CREATE TABLE [dbo].[tblEmployee](
EmployeeID Int IDENTITY NOT NULL ,
FirstName varchar (20) NOT NULL,
LastName varchar (20) NOT NULL,
Address varchar (50),
City varchar(20), Province varchar (50),
PostalCode char(6),
Phone char (10),
Salary Money NOT NULL,
Primary Key (EmployeeID)
Go
INSERT into tblEmployees
Values ('Jim', 'Smith', '123 Fake', 'Terrace', 'BC', 'V8G5J6',
'2506155989', '20.12'),
('Jimmy', 'Smithy', '124 Fake', 'Terrace', 'BC', 'V8G5J7',
'2506155984', '21.12'),
('John', 'Smore', '13 Fake', 'Terrace', 'BC', 'V4G5J6', '2506115989',
'19.12'),
('Jay', 'Sith', '12 Fake', 'Terrace', 'BC', 'V8G4J6', '2506155939',
'25.12'),
('Jig', 'Mith', '23 Fake', 'Terrace', 'BC', 'V8G5J5', '2506455989',
'18.12');
Go
168
تصميم قواعد البيانات SQL حل تمرين باستخدام لغة:الملحق ج
.ALTER TABLE وعبارةDDL استخدم تعليمات لغة.Tblorders إلى جدولTotalsales أضف حقاًل يس ّمى
ALTER TABLE tblOrders
ADD Foreign Key (EmployeeID) references tblEmployees (EmployeeID)
.order details لإضافة مجموع مبيعات كل طلب بنا ًء على جدولUPDATE استخدم عبارة
UPDATE tblOrders
Set TotalSales = (select sum(unitprice*quantity*(1-discount))
FROM tblOrderDetails
WHERE tblOrderDetails.OrderID= tblOrders.OrderID
GROUP BY OrderID
169
من إصدارات أكاديمية حسوب