Professional Documents
Culture Documents
الشرح بالتفصيل لـ SQL Server
الشرح بالتفصيل لـ SQL Server
Project 402
حيث اننى اعتمد فى هذا الكتاب على الشرح بالصور اكثر من الكتابة اى
واشكر هذة ااكدميية اجملموعة للمكبيوتر عىل مس توى اذلى وصلت اليه
2
حمتوايت
رمق الصفحة حمتوايته العنوان الفصل
5 مقدمة مايكروسوفت SQL Server o
3
43 خطوات معل النشاء وحذف وتعديل بنية ونسخ اجلدوال o
4
الفصل االول :مقدمة
أوالً :مقدمة مايكروسوفت :SQL Server
هو عبارة عن نظام قوى يستخدم إلنشاء وإدارة قواعد البيانات العالئقية Relational
System Database Managementأو ، RDBMSويحتوى هذا النظام على مجموعة
كبيرة من المميزات والتي تجعله من أقوى األنظمة المستخدمة إلنشاء وإدارة قواعد البيانات .
Microsoft SQLهىىىىىىىى نىىىىىىىو مىىىىىىىن نظىىىىىىىام إدارة قواعىىىىىىىد البيانىىىىىىىات Server
++وسىىىىىي وسىىىىىي العالئقيىىىىىة وتمىىىىىت برمجتهىىىىىا بواسىىىىىطة مايكروسىىىىىوفت وكتبتهىىىىىا سىىىىىي
Microsoftو شىىىىىىىىارب وهىىىىىىىىى تعمىىىىىىىىل تحىىىىىىىىت بيئىىىىىىىىة نظىىىىىىىىام التشىىىىىىىى يل Windows
NET Windowsومنصىىىىىىىىىىىة ، IA-32إلىىىىىىىىىىىى x64أو IA-64 Server
Frameworkو الل ىىىىىىىىات المتاحىىىىىىىىة بهىىىىىىىىا هىىىىىىىىى اإلنجليزيىىىىىىىىة ،الصىىىىىىىىينية ،اليابانيىىىىىىىىة 3.5
الفرنسىىىىىىىىىية واأللمانيىىىىىىىىىة واإليطاليىىىىىىىىىة ،والكوريىىىىىىىىىة ،والبرت اليىىىىىىىىىة البرازيىىىىىىىىىل ،والروسىىىىىىىىىية واإلسىىىىىىىىىبانية
وهىىىىىىى برمجيىىىىىىات االحتكاريىىىىىىة ،وكالهمىىىىىىا التجاريىىىىىىة و مجانيىىىىىىة هىىىىىىي اصىىىىىىدارات متاحىىىىىىة علىىىىىىى موقعهىىىىىىا
www.microsoft.com/sqlserver
كقاعدة بيانات ،بل هو منتج البرنامج الذي يهدف إلى تخزين واسترجا البيانات على النحو
المطلوب من قبل ت طبيقات البرمجيات األخرى ،سواء كان ذلك تلك الموجودة على نفس الكمبيوتر أو
تلك التي تعمل على كمبيوتر آخر عبر الشبكة بما في ذلك اإلنترنت وظيفتها األساسية.
من ضمن مميزات البرنامج أنه بيسمح هذا البرنامج بإستيراد وتصدير من الملفات ذات
التنسيقات المختلفة -وعمل ارتباط بقواعد البيانات االخرى سواء من SQL Serverاو قواعد
البيانات الخاصة بشركات أخرى – امكانية معالجة البيانات من خالل برنامج برنامج اكسيل واكسيس
– انشاء تقارير ديناميكية بناء على بيانات – SQL Serverانشاء مهام Automated Tasks
يتم تنفيذها تلقائيا ً بمجرد توافق البيانات مع شرط معين.
تخزين البيانات هو قاعدة البيانات والتي هي عبارة عن مجموعة من الجداول مع كتابة األعمدة.
يدعم خادم SQLأنوا البيانات المختلفة ،ويمكن أن تحتوي قاعدة بيانات أيضا الكائنات األخرى بما
في ذلك views, stored procedures, indexes, constraints,يتم تخزين البيانات
في قاعدة البيانات في ملفات البيانات األولية مع امتداد الملف . mdf.ملفات البيانات الثانوية ،مع
تحديد امتداد الملف ، ndf.وتستخدم لتخزين اختياري البيانات الوصفية .ويتم تحديد ملفات السجل
مع امتداد الملف .ldf.
5
: التاريخ اصدراتها ونسخها المختلفة:ثانيا
Microsoft SQL Server هناك ما ال يقل عن اثني عشر من االصدارات مختلفة من
تستهدف جماهير مختلفة وأعباء العمل التي تتراوح بين التطبيقات أحادية آلة ص يرة لتطبيقات واجهة
:إنترنت واسعة مع العديد من المستخدمين المتزامنة
1.20
SQLNT SQL Server 4.21 0111
) WinNT ( ل
6
النسخ
Microsoft SQL Serverيجعل المتوفرة في إصدارات متعددة ،مع مختلف مجموعات
ميزة واستهداف مختلف المستخدمين .هذه الطبعات هي:
حيث ان البرنامج عبارة عن منتج معقد يحتوى على العديد من الخدمات لذلك يجب تحديد
الخدمات التى نحتاج اليها قبل شراء المنتج وذلك الن سعر الخادم يتم تحديده على حسب الخدمات
المتاحة باالصدار البرنامج.
هذا الجدول يوضح انواع االصدارات المختلفة وامكانيات الخدمات المتاحه بها واسعارها:
7
ثالثا :متطلبات االجهزة والبرامج لتش يل البرنامج:
متطلبات النو
8
رابعا ً :مكونات االساسية :SQL Server
SQL -1
وفي معظم قواعد البيانات العالئقية مثل SQL Serverيتم الوصول إلى البيانات باستخدام ل ة االستعالم
SQLأو ، Structured Query Languageوتسمح هذه الل ة للمستخدمين باالستعالم عن البيانات
باإلضافة إلى إمكانية إضافة وتعديل وحذف سجالت قواعد البيانات.
ل ة االستعالم الرئيسية فيه هي T-SQLو ANSI SQLو االستعالم بشكل إلزامي يحدد ما هو المراد
استردادها .تتم معالجتها من قبل المعالج االستعالم ،والتي من أرقام تسلسل الخطوات التي ستكون ضرورية السترداد
البيانات المطلوبة .يسمى تسلسل اإلجراءات الالزمة لتنفيذ استعالم على خطة االستعالم .
9
تعمل هذة االداة على اجراء االتصال بالخادم باستخدام طريقة التوثيق الويندوز باستخدام بيانات
المستخدم الحالى لنظام التش يل ويقوم الخادم باستخدام قاعدة البيانات االفتراضية المرتبطة بالخادم
وتحديد اسم الملف الذى يحتوى على االوامر T-SQLالتى نريد تنفيذها وتحديد اسم الملف الذى نريد
تخزين ناتج االستعالم به.
11
ثم يتم حفظها على جهازك على شكل ملف بامتداد Sqlكما يلى :
1
4
3
اذا اردنا فتحه لرؤية الكود نض ط كليك يمين على ملف ونختار edit
ويفتح على برنامج Notepadلتظهر االوامر.
هو ده الباتش به ملف وينفذ على سيرفل من اى برنامج خارجى.
سوف نستخدم برنامج خارجى هو Command Prompt
2
11
االختصارات االوامر البد من معرفتها :
اسم السيرفر -s
هيدخل على السيرفر بصالحية الويندوز -E
لو كان الدخول السيرفر بصالحية السيكول
اسم المستخدم -u
كلمة السر -p
طريقة ارسال االمر
االمر اللى بعدها باكتب االمر بين عالمتين " " واكتب مسار الملف -i
يتم ارسال االمر مباشرة فنكتب اسم القاعدة ثم نقطتين ونكتب اسم الجدول
بين قوسين -q
الناتج اللى تخرج من السيرفر واكتب المسار لتظهر ملف بامتداد TXT -o
ثم نض ط على مفتاح االنتر لتنفيذ االوامر
5
12
ده نتيجة االمر
6
7
13
:SQL Server Configuration Manager -4
عمل تش يل أو ايقاف أو ايقاف مؤقت وتش يل من وضع االيقاف المؤقت واعادة التش يل
لخدمات الخادم وفى حالة عدم استخدام خدمة معينة بصورة متكررة فاننا نحتاج الى تش يل هذة
الخدمة وقت الحاجة اليها فقط.
ت يير الحساب المستخدم لتش يل الخدمة
ت يير اسلوب التش يل Strat Modeللخدمة
اجراء اعدادات استخدام بروتوكوالت الشبكة للوصول للخادم
ت يير العنوان IP Addressوالمنافذ TCP Portsالمستخدمة بواسطة SQL Server
اجراء االعدادات SQL Server Native Client Connectivity
14
شرح بالصور
15
16
: SSMS SQL Server Management Studio -3
االداة الرئيسية الدارة الخادم
تحتوى على جميع الوظائف الخاصة بادارة الخادم
تسمح لنا باعداد والتعامل مع قواعد البيانات من خالل نافذة Consoleواحدة.
17
18
19
دخول اكثر من مستخدم على السيرفر -نتبع الخطوات التالية :
هنضغط على زر االتصال :
21
SQL Server Books Online -2
تقوم شركة ميكروسوفت بتقديم وثائق مفصلة لجميع امكانات الخادم فى صورة كتب الكترونية.
تكون هذة االداة مفيدة جدا فى حالة حاجتنا للبحث عن صي ة امر معين او خاصية من خواص
تسمح لنا بتصميم ونشر التقارير الديناميكية المبنية على قواعد بيانات SQL Server
-0خدمات اخرى
21
الفصل الثانى :التخطيط لتركيب والتثبيت البرنامج
SQL Server 2008 R2
-جدول يوضح انوا النسخ البرنامج واالمكانيات والخدمات التى بكل نسخة :
1
2
3
4
23
5
24
يسمح لنا الخادم بإمكانية تثبيت أكثر من نسخة على نفس الخادم.
يمكننا اعتبار كل نسخة من النسخ التى يتم تثبيتها على الخادم نسخة منفصلة
من الخادم.
تثبيت عدة نسخ من الخادم ب رض التطوير واالختبار عزل التطبيقات الفعلية
عن الجزء الخاص بالتطوير واالختبار – حماية البيانات الخاصة بنا من
التلف او الفقدان .
تثبيت اكثر من نسخة من الخادم على نفس الجهاز لتعيين صالحيات االدارة
الكاملة للمستخدمين على النسخ المختلفة هذه الحالة تكون مفيدة جدا فى
البيئة الخاصة باستضافة قواعد البيانات – يحتاج العديد من العمالء
المشتركين فى هذة البيئة الستاضة قواعد البيانات على نفس الخادم مما
يتطلب اعطاء كل عميل الصالحيات الكاملة الدارة قاعدة البيانات الخاصة
به
اسم النسخة فى هذة الحالة يكون نفس االسم المعين لنسخة الويندوز المثبتة
على الخادم يمكننا تثبيت نسخة واحدة فقط من النو Default
Instanceعلى نفس الخادم.
يمكننا تعين االسم الذى نريده لهذه النسخة ويمكننا تثبيت اكثر من نسخة من
النو Named instanceعلى نفس الخادم وكما يمكننا ايضا تثبيت
نسخة واحدة فقط من النو Default Instanceوعدة نسخ من النو
Named instanceعلى نفس الخادم.
يوجد اختيارين النسخة االفتراضية نسخة مسماة Default Instance : 9
النسخة االفتراضية دا لو اول مرة انزل السيكول سيرفر على الجهاز اما
Named instanceالنسخة المسماة لو عندى نسخة من قبل على
الجهاز واريد تنزيل نسخة اخرى فاغير اسم النسخة من االسم االفتراضى.
25
11
11
26
Authenticationعبارة عن عملية تسمح للمستخدمين بتقديم الهوية
اسم المستخدم – كلمة السر الخاصة بهم للخادم قبل السماح لهم بالوصول
الى المصادر الخاصة بالخادم.
Windows Authentication Modeيقوم الخادم باستخدام
حسابات المستخدمين المسجلة بنظام التش يل لتوثيق المستخدمين بخادم
قاعدة الباينات لكى يتمكن المستخدم الى خادم قاعدة البيانات البد ان يكون
لهذا المستخدم حساب على نظام التش يل .Windows
Mixed Authentication Modeيتم السماح للمستخدمين
بالدخول الى الخادم عن طريق الدمج بين حسابات المستخدمين المسجلة
بنظام التش يل وحسابات المستخدمين المسجلة بالخادم وعند استخدام هذة
الطريقة يكون لدينا قائمة واحدة ممن الحسابات لكل من الخادم وقاعدة
البيانات ويتم استخدامه فى حاالت خاصة مثل التطبيقات التى التدعم طريقة
التوثيق .Windows Authentication
اثناء تثبيت الخادم يتم السؤال عن الحسابات الخاصة بتش يل الخدمات
المختلفة للخادم يجب تحديد الحسابات المستخدمة لتش يل SQL Server
والمكونات الخاصة به.
يقوم الخادم باستخدام الل ة االفتراضية وهى الل ة المثبت بها نظام التش يل
الويندوز الخاص بالخادم ويجب عدم ت يير الل ة االفتراضية للخادم اال فى
مواقف معينة قاعدة البيانات يتم استخدامها من قبل اشخاص اخرين
موجودين بدول اخرى – عمل تزامن بين خوادم قواعد بيانات تستخدم ل ات
12
مختلفة .
27
13
14
15
28
الفصل الثالث SQL Server Mangement Studio :
-طريقة الدخول لالداة
1
2
3
4
5
يفضل عمل نسخة احتياطية من قاعدة البيانات Masterبصفة دورية ينصح بعمل نسخة
احتياطية منها عند :
انشاء او حذف قاعدة بيانات.
تعديل البيانات او الملفات Log Filesالمستخدمة بواسطة قاعدة البيانات.
اضافة او حذف او تعديل بيانات الدخول لقاعدة البيانات
اضافة او حذف او تعديل الخوادم المرتبطة
تعديل اعدادات الخادم
تستخدم لحفظ بيانات الجدولة والمعلومات الخاصة باالحداث الماضية Historyالتى تتم على قاعدة
البيانات.
تحتوى على المعلومات الخاصة بأى عمليات جدولة
تحتوى على المعلومات الخاصة بتاريخ عمل نسخ احتياطية واسترداد لهذه النسخ
تستخدم كقالب Templateلكل قواعد البيانات الجديدة التى يتم انشائها بالخادم .
31
اذا كان لدينا االعدادات االبتدائية الخاصة بنا ونريد تطبيق هذه االعدادات على جميع قواعد
البيانات التى نريد انشائها فيما بعد نقوم بتطبي هذه االعدادات على قاعدة البيانات . Model
اذا قمنا بانشاء اجراء Stored Procedureفى قاعدة بيانات Modelفان اى قاعدة
بيانات جديدة سوف نقوم بانشائها سوف تحتوى على نسخة من هذا االجراء.
تستخدم كموضع تخزين مؤقت للبيانات التى نتعامل معها حاليا داخل قاعدة البيانات مثل نتائج
االستعالمات يمكن للمستخدم القيام بانشاء عناصر مؤقته مثل الجداول او اجراءات او عناصر
اخرى يقوم الخادم بحفظ هذه العناصر بصورة مؤقتة فى قاعدة البيانات Tempdbالى ان
تصبح غير ضرورية.
: Logins & Users -
: Loginsهى صالحية الدخول على السيكول السيرفر وبعدها يتم االتصال بقاعدة البيانات
معينة اذا كان له صالحية النه ليس من صالحية اى شخص الدخول على قاعدة
البيانات وانما لمن له صالحية لذلك فقط وفاالدمن لقاعدة البيانات هو من يعطى
الصالحيات للدخول.
: Usersهى المستخدمين للقاعدة معينة (المبرمجين – مدخلى ومستخدمى البيانات) ولكى
يصبح مستخدم للقاعدة البد ان يمر من المرحلة االوله وهى Loginsوثم يصبح
Usersويكون له صالحيات معينة على قواعد معينة.
مثال :االدمن هو SAوثالثة مبرمجين بلغات مختلفة كل منهم يريدون االتصال بالقاعدة.
يشرح بأن هنالك ثالث مبرمجين نريدهم ان يدخلو على قاعدة البيانات فسيتم انشاء لكل منهم
حساب فى قاعدة البيانات واعطاء لكل حساب صالحيات معينة.
فمثالً من الممكن ان اعطى صالحية للمستخدم عالء ان يدخل على قاعدة البيانات وايضا ان
ينشئ مستخدمين اخرين على قاعدة البيانات.
خطوات انشاء مستخدمين جدد -نتبع الخطوات التالية:
31
1
32
4
33
اعطاء صالحيات للمستخدمين على السيرفر : Fixed Server Roles
1
34
حيث ان قام مستخدم Ahmedليس له صالحية انشاء مستخدم جديد فرفض وظهرت
هذة الرسالة
3
35
ثم نختار … New Loginفتهر هذه الشاشة :
من الشاشة : General
الدخال اسم المستخدم وكلمة المرور مرتين وطريقة التوثيق المستخدم واسم القاعدة البيانات :
36
فنضعط على OK
النشاء المستخدم وتظهر الشاشة
37
انشاء مستخدم بالكود :
نضغط على زر : New Query
38
تعديل مستخدم بالكود :
نضغط على زر New Queryوكتابة الكود لجعل المستخدم غير نشط للدخول للسيرفر :
واذا دخلنا باالدمن مرة اخرى واردنا وكتابنا هذا الكود لجعل المستخدم " "ALIنشط وبالتالى يستطيع
المستخدم الدخول :
39
تخطيط وتصميم قواعد البيانات:
أوالً :تخطيط قواعد البيانات:
طريقة منظمة لحفظ البيانات المتعلقة بموضو معين. -1
يتم تنظيم قواعد البيانات على حسب ال رض من استخدامها. -4
يمكن استخدام قاعدة البيانات كمحلل للبيانات مما يسهل عملية الحصول على البيانات. -3
مميزات التخطيط الجيد لقواعد البيانات :
-1التخطيط المسبق لقواعد البيانات يعمل على زيادة أداء قواعد البيانات
-4يجب علينا قضاء وقت كافى لتخطيط قواعد البيانات على الزرق قبل الشرو فى إنشائها.
-3التخطيط الجيد لقاعدة البيانات يسمح لنا بحفظ ومعالجة البيانات بشكل فعال.
يعمل على تقليل المساحة الالزمة لحفظ قواعد البيانات.
يعمل على تقليل الوقت الالزم لحفظ واسترجا هذة البيانات.
-2اذا كنا نقوم بتنفيذ استعالمات معقدة على قواعد البيانات والتى تحتاج الى قدر كبير من الحسابات بصورة
مستديمة.
-2يمكننا تقليل الوقت الالزم لتنفيذ هذه االستعالمات بشكل كبير عن طريق حفظ ناتج هذه االستعالمات فى
قاعدة البيانات.
-0نحتاج الى مقدار اضافى من المساحة لتخزين ناتج هذه االستعالمات.
-8يتم تحسين اداء هذه االستعالمات على حساب المساحة التخزينية.
-7يجب علينا عمل موازنة للمساحة التخزينية والوقت الالزم لحفظ واسترجا البيانات للوصول الى افضل
اداء لقاعدة البيانات.
مالحظات عن التخطيط الجيد لقواعد البيانات :
.1تقديم قاعدة البيانات وسائل لتسهيل عملية اضافة وحذف وتعديل البيانات.
.4تنظيم البيانات فى شكل يسمح للمستخدمين بالتفاعل مع البيانات بصورة مالئمة.
.3المستخدم الذى يقوم باستخدام قاعدة البيانات الخاصة بالبيع بالتجزئة.
بيانات الموظفين فى جدول.
بيانات العمالء فى جدول اخر.
بيانات المنتجات فى جدول اخر.
.2يمكننا تحسين فاعلية قواعد البيانات عن طريق عقد اجتماعات مع المستخدمين والمساهمين فى مرحلة
التصميم.
41
تصميم الجداول الالزمة لقاعدة البيانات:
يجب مراعاة ان يحتوى الجدوال الواحد على بيانات خاصة بموضو واحد فقط.
يجب عدم تكرار البيانات داخل الجدول الواحد.
يجب عدم تكرار نفس البيانات داخل الجدوال المختلفة بدون داعى.
تحديد الحقول التى سيتم استخدامها داخل كل جدول مع مراعاة تقليل البيانات التى سيتم ادخالها داخل
كل حقل بقدر االمكان.
يجب الحرص على عدم انشاء حقول تعمل على تجميع البيانات من عدة حقول داخل الجدول.
يجب ان تكون الحقول التى سيتم استخدامها داخل الجدول متعلقة بموضو الجدول بقدر االمكان.
تحديد العالقات بين الجدوال :
تسمح لنا بالحصول على استعالمات معقدة من خالل الجداول المختلفة الموجودة بقاعدة البيانات.
يجب تعريف مفتاح اساسى لكل جدول.
المفتاح االساسى عبارة عن حقل او عدة حقول تحتوى على بيانات مختلفة لكل سجل داخل قاعدة
البيانات.
41
ثالثا ً :قواعد البيانات العالئقية : Relational DataBaeses
تنظيم البيانات فى مجموعة من الجدوال المرتبطة مع بعضها البعض:
تستخدم االعمدة الحقول لعرض الخصائص المختلفة للبيانات.
كل عمود يستخدم لتخزين نو واحد فقط من البيانات.
تقليل تكرار البيانات التى يتم تخزينها بقاعدة البيانات.
سرعة تعديل المعلومات التى قد تؤثر فى جزء كبير من قاعدة البيانات.
استرجا البيانات المرتبطة مع بعضها البعض من عدة مصادر.
42
الفصل الرابع :تصميم قواعد البيانات
خطوات عمل النشاء وحذف وتعديل قاعدة بيانات :
1
السطر االول للقاعدة نفسها وحجمها االولى 3ميجا بايت بشكل تلقائى ويمكن ت ييره حسب
الحاجة والزيادة التلقائية محددة بمقدار ا ميجا بايت ويمكن زيادتها حسب الحاجة ايضا ً وكذلك
مسار خزن القاعدة البيانات وجميع محتوياتها.
السطر التانى وهو الــ Logوهو ملف يحتوى على كل االحداث واالجراءات التى تمت على
قاعدة البيانات وكذلك تستطيع تحديد حجمه االساس ومقدار الزيادة التلقائية ومسار خزنه.
2
43
3
44
انشاء وحذف وت ير اسم قاعدة البيانات من خالل الكود :
1
2
45
3
الكود حذف القاعدة
46
خطوات عمل نسخ واعادة استرجاع لقاعدة بيانات :
1
2
تحديد مسار
القاعدة
47
2
3
اسم القاعدة
المطلوب استعادتها
5
48
6
وهذة االداة غير متوفرة مع النسخ المجانية من SQL Sever Expressويأخذ الملف امتداد ().ss
49
خطوات عمل : Detach & Attach Database
تستخدم لرفع القاعدة اللى من نوع SQL Severعلى السيرفر اوفصل القاعدة من السيرفر (والشرح كاالتى) :
1
2
3
51
4
51
فصلها من على السيرفر
1
2
3
1
52
خطوات عمل : Import & Export Database
هى تستخدم لعمل استيراد وتصدير قواعد البيانات بأنواع مختلفة الى ومن السيرفر.
توجد لدينا قاعدة من نوع اكسيس على سطح المكتب نريد عمل لها استيراد
1
2
3
53
4
54
7
55
11
11
12
56
13
1
2
57
3
58
6
59
9
11
11
61
12
ولعمل ذلك نقوم بعمل ريت كليك على قاعده البيانات ونختار Tasksومنها نختار Shrinkومنها
نختار Database
ونعيد الكره مره اخرى ونختار بدال من Databaseنختار Files
1
61
Database فى حالة
62
خطوات عمل : Generate Database Script
ببساطه ان لو ارغب فى معرفه اى كود قد قمت بالفعل بانشاءها من خالل Wizardعلى سبيل المثال معرفة
الكود النشاء قاعدة البيانات – تقليص القاعدة – استيراد وتصدير
63
ومن الممكن اظهار على شكل ملف من خالل
64
خطوات عمل : File Groups
قاعده البيانات فى السيكوال عباره هن ملفان
االول LogFile /وهو الملف الذى يحوى بداخله االستركتشر الخاص بقاعده البيانات من جمل االنزرت
والديلت واالبديت ---الخ
الثانى DataFile /وهو الملف الذى يحوى بداخله ملفات الداتا والسيستم
اما ملف ال Dtatممكن تكراره عده مرات ونستفيذ من ذلك فى عمل العديد من ملفات الداتا وتخصيص كل
ملف على هارد ديسك منفرد او فولدر والغرض من كل هذا هو االداء Performanceفى التعامل والسرعه
على الداتا بيز ونستطيع من خاللها عمل قاعدة البيانات على اكثر من مجموعة فى اكثر من Partition
حيث اننى دخلنا على خصائص اى قاعدة بيانات ودخلنا على FileGroupsوقمنا وضع عدة مجموعات :
65
تقسم القاعدة على مجموعات (موضح فى الصورة االولة) ومسارات مختلفة (موضح فى الصورة التانية)
واذا كان الجدول معمول مسبقا واردنا تغير المجموعة الخاصة به من خالل وضع التصميم الجدول فى خصائص
الجدول:
66
خطوات عمل : Schema
معلومات عن : Schema
هى شئ او حاوية تقوم بربط جميع االوبجيكت المرتبطة ببعضها فى شئ ما (وهذة العالقة من الناحية التنظيمية
ليست اكثر)
انه يمكني انشاء اكثر من جدول او اكثر من اوبجيكت بنفس االسم داخل قاعدة البيانات الواحدة بشرط ان يكون
كال منهم تابع الى اسكيما مختلفة.
مثال :
وليس معنى االرتباط هنا انه يوجد عالقة بين الجداول وانما مرتبطين بشئ ما من الناحية التنظيمية
يمكن تجميع كل الجدوال المتعلقة بالطلبة فى قاعدة بيانات المدرسة داخل اسكيما وده من الناحية التنظيمية
النشاء Schema
فنقوم بالدخول على قاعده بيانات لدينا Studentsثم نختار Securityثم Schema
ونقوم من هنا بعمل ريت كليك ونختار New Schemaونكتب اسم االسكيما وليكن
MySchema
ولتخصيص جدول السكيما معينه نجد ( اى جدول قبل اسمه ستجد اسم dboفى الواقع تلك
اسكيما افتراضيه مع السيكوال 2118ولتغير االسكيما الى ما قمنا بانشائها نقوم بالنظر الى
شاشه الخاصائص بعد عرض ال Designالخاص بالجدول سنجد خاصيه االسكيما نقوم
باختيار االسكيما الجديده التى قمنا بانشاءه سنجد اسم الجدول اخذ االسكيما الجديده ولو قمت
بانشاء جدول بنفس اسم جدول موجود مسبقا ولكن مع اختالف االسكيما اليحدث اعتراض )
ولعمل استعالم عن جدول البد من تحديد االسكيما
67
هذا الشكل يوضح االسكيما :
1
68
2
69
اعطاء صالحيات للمستخدمين على القاعدة البيانات : Security Project
فسبقنا شرح كيفية انشاء صالحيات GMلما كنا بنشرح Sever Roles
71
فتظهر هذة الشاشة فنختار
Securables
اختيار العناصر
الخاصة فتظهر هذة
الشاشة
71
فنقوم بتحديد نو العناصر
اختيار الجدوال
72
نحدد الجدول الذى نشئ علية
الصالحيات
73
الفصل الخامس :تصميم الجداول
خطوات عمل النشاء وحذف وتعديل بنية ونسخ الجدوال بالقاعدة بيانات :
1
2
2
3
74
قمنا بوضع اسماء الحقول
ونو البيانات
5
لملئ الجدول بالبيانات نتبع ما يلى كليك يمين على الجدول المراد ونختار
edit top 200 rows
6
4
8
75
الضافة حقل جديد بالجدول
9
فتكون النتيجة
13
11
12
12
76
انواع البيانات الحقول بالجدوال لقاعدة بيانات :
بعد كتابة اسماء الحقول الخاصة بالجدول نقوم بعمل تحليل للبيانات التى سوف تدخل فى الحقل
وبالتالى نستطيع تحديد نوع البيانات التى تتناسب مع الحقل.
وسوف نشرح نوع البيانات فى الجدوال التالية :
77
78
الفصل السادس :تصميم العالقات ( )Relationshipبقاعدة البيانات
مقدمة عن العالقات الجدوال :
يمكنا ربط جدولين او اكثر طاما ان هناك عالقة ما (مباشرة او غير مباشرة) بين حقل فى الجدول
االول وحقل فى الجدول االخر وذلك للحصول على بيانات او تقارير دقيقة من تلك الجداول.
مفاهيم عامة قبل البدء :
المفتاح الرئيسى ( : )Primary Key PKهو مفتاح يسند الى احد حقول الجدول ويشترط فيه انه فريد وال
يمكن تكراره وال يمكن ان يكون فارغ (.)Not Null
المفتاح االجنبى ( : )Foreign Key FKهو المفتاح الرئيسى لجدول اخر فعند استخدامه فى جدول غير
جدوله االصلى ضمن عالقة وله نفس الصفات المفتاح الرئيسى سابقة الذكر اال انه فى حالة العالقات ( one
)to oneو ( )Many to manyيمكن تكراره داخل العالقة.
انواع العالقات )one to one( :و ( )Many to manyو ()one to many
مثال :
لدينا جدولين جدول لبيانات الطلبة وجدول اخر لحركة الطلبة -فلكل طالب من الممكن ان يقوم باكثر من حركة -
فاذن هناك عالقة راس باطراف بين الجدولين
وفائدة هذا انه لو تم دمج كال من الجدولين فى جدول واحد فانه سيتم استهالك مساحة كبيرة من البيانات المكررة
79
: DatabaseDiagram
ونختار New ولعمل Relationshipهنا تسمى Diagramفنقوم بعمل ريت كليك
DatabaseDiagram
81
ونقوم بالسحب وااللقاء من الحقل فى الجدول االول الى الحقل فى الجدول الثانى وهى عالقه One
To manyويكون الشكل
81
الحقول بين االقواس هى التى بينهم الربط والظهار اسم العالقة او الربط نضغط كليك يمين ونختار
82
للتعديل العالقة نقف على الجدول ونضغط كليك يمين ونختار : Relationship
ثم نقوم بحفظ تلك العالقة على شكل ملف اسكربت :
83
واذا تعديل العالقة :
84
: DataBase Normalization
هى عملية تستخدم لحذف جميع اشكال تكرار البيانات داخل قاعدة البيانات وفى حاله عمل
Normalizationكامل للبيانات اليوجد اى تكرار للبيانات فى جميع الجداول ماعدا حقول البيانات
المستخدمة كمفاتيح لعمل االرتباطات بين الجداول.
هى بعض االرشادات والطرق المتبعة لتحسين قاعدة البيانات يعنى نفرض ان لدينا قاعدة البيانات
ولم نطبق عليهم Normalizationفتكون النتيجة بهذا الشكل :
فنالحظ ان العيوب الموجود بهذة القاعدة فعند االضافة او التعديل او الحذف فتؤدى الى اهدار
المساحة بسبب تكرار البيانات او فقدان البيانات.
لذلك نقوم بتقسيم العالقات الكبيرة الى عالقات اخرى اصغر للتخلص من العيوب.
توفير المساحة التخزينية بشكل كبير وبالتالى توفير االموال المستخدمة الضافة وحدات
تخزينية اضافية لحفظ البيانات.
زيادة فاعلية تعديل البيانات والحفاظ عليها.
85
انواع : Normalization Form
سوف نالحظ ان الجدول الخاص بالعالقة االولى بين العميل واللغات التى يتحدثها تم تقسيمها الى عالقات
اصغر وذلك بناء قيمة كود العميل نستطيع ان نحصل على اسمه ولغته.
86
فنالحظ فى الشكل التالى فى عدم تطبيق اهدار للمساحة وفى حالة الحذف سوف يتسبب الى فقد البيانات
لكى نقوم بتحسين القاعدة نقوم بتقسيمها الجدول الى الجدولين :
87
: Second Normal Form (2NF)
-يجب ان تنطبق القاعدة ) (1NFعلى الجدول.
-عدم وجود اى عمود من اعمدة الجدول خالف اعمدة المفاتيح االساسية يعتمد على احد االعمدة
المكونة للمفتاح االساسى للجدول فقط وليس جميع االعمدة المكونة لهذا المفتاح.
-وان تخلو من العالقات الجزئية بمعنى وجود حقل غير اساسى يعتمد على جزء من المفتاح
االساسى وليس على كل المفتاح االساسى بمعنى ان عدد الساعات يعتمد على رقم الموظف ورقم
المشروع وهذا سليم وال يوجد به خطأ ولكن اسم المشروع يعتمد على رقم المشروع فقط وهذه
هى العالقة الجزئية.
88
Boyce codd normal form (BCNF)
-ان تكون فى المستوى الثانى ()2NF
-ان تعالج مشاكل المستوى الثانى والثالث.
-اال يوجد حقل اساسى يعتمد على حقل غير اساسى.
89
معامل الربط بين الجداول :
يسمح لنا باالستعالم عن بيانات اكثر من جدول فى نفس الوقت.
يسمح لنا بحفظ البيانات فى اكثر من جدول للمحافظة على عدم تكرار البيانات داخل الجداول.
يستخدم : Unionلربط جملتين Selectاو اكثر مع بعضهم البعض – ويستخدم ايضا
للربط بين صفوف الجداول.
يستخدم :joinلربط جدولين او اكثر مع بعضهم البعض باستخدام جملة Selectواحدة -
و يستخدم ايضا للربط بين اعمدة الجداول وتحديد االعمدة المشتركة فى عملية الربط داخل
العبارة - Whereويقوم النظام بتعيين نوع عملية الربط بين الجداول تلقائيا ً – ويفضل
استخدام التوصيف الكامل للحقول(يعنى اسم الجدول.اسم الحقل)
عملية الربط فى : joinالحقول المستخدمة فى عملية الرط يجب ان تكون متماثلة – ويجب
ان يكون نوع البيانات لكل من هذة الحقول متوافق مع النوع االخر.
انواعها joinوشرحها:
-1يحدث النوع اول من االرتباط عند اختيار البيانات من جدولين او اكثر من جداول
قاعدة البيانات بدون تحديد عالقة مشتركة بين الجداول -يتم ربط كل صف من
صفوف الجدول االول بجميع صفوف الجدول التانى – ويحدث هذا النوع فى حالة
نسيان مطور البرامج ادارج الشرط الخاص بعملية الربط فى العبارة Where
– عمل الربط غير المشروط بين الجداول لعرض جميع الحاالت الممكنة للربط
بين صفوف كال من الجدوليين.
-2يحدث النوع التانى من االرتباط عند الربط بين الجداول الستخالص البيانات
المتطابقة فى كال من الجدوليين.
91
-3يحدث النوع الثالث من االرتباط عند عرض بيانات جدول بالكامل بغض النظر
عن عدم وجود صفوف متطابقة معه فى الجدول االخر المرتبط به.
-4ناتج هذا االرتباط عبارة عن مجموعة الصفوف المتطابقة فى كال الجدولين
باالضافة الى مجموعة الصفوف الغير متطابقة فى اى من الجدولين او فى
الجدولين معاً.
الربط البسيط :
-الفكره هنا هو ان كل سجل فى الجدول االول يتم تكراره مع سجالت الجدول الثانى كله مما يعنى
تكرار البيانات بشكل كبير.
الربط بالتساوى
-والفكره هنا انه يتم عرض السجالت المتساويه فى حقل ما فى كال الجدولين
مثال :
-والفكره هنا اننا نقوم بالربط بدالله تساوى حقلين فى كال الجدولين مما يعنى ان القيم الغير
موجوده فى احد الجدولين ال يتم النظر اليه
91
الربط بين ثالث جداول
92
الربط الخارجى
مثال :
93
-4النو الثانى Right
مثال :
94
-3النو الثالث :FULL
مثال
95
الفصل السابع :االستعالمات )(Views
انشاء استعالم جديد :
اما الضغط كليك على زر New Query اما كليك يمين على كلمة Views
المتغيرات : Variable
-فكره المتغيرات اننا نقوم باستخدام ذاكره الكمبيوتر RAMبتخزين بيانات بداخلها واستدعائها
وقت الحاجه طول مده عمل البرنامج
-يستخدم االمر Printاو Selectللطباعة الناتج :
لالعالن عن متغير
;declare @x as int
;declare @y int
اوال البد من استخدام الكلمه Declareيتبعها اسم المتغير ولكن يجب وضع عالمه @ فبل
اسم المتغير
اما كلمه asهى اختياريه يجوز وضعها ويجوز ال
ثم اخر شئ وهو نوع المتغير وكما هو واضح ان النوع Intيعنى ان المتغير رقمى
المتغيرات غير حساسه لحاله االحرف
;set @x=10
;print @x
;set @y =20
;Select @y
وتلك هى طريقه اعطاء القيم للمتغيرات فهى تبدا بوضع كلمه Setيتبعها اسم المتغير يتبعها
عالمه اليساوى والقيمه او استخدام صيغة خاصة من الجملة Selectوالناتج هو 11و 21
على التوالى.
96
االمر gotoو Breakو Continueو: Return
: Breakتعمل على ايقاف تنفيذ الجمل الموجود بالقالب واالنتقال لبدء تنفيذ الجمل التى تلى هذا القالب
مباشرة.
: Continueتعمل على ايقاف التنفيذ الحالى للجمل الموجودة بالقالب وبدء تنفيذ القالب من البداية.
: Returnتعمل على انهاء تنفيذ الـ Batchواالنتقال الى تنفيذ اول جملة بعد نهاية الـ Batch
: Gotoتستخدم للقفذ الى موضع معين داخل الكود يتم تحديده عن طريق انشاء عنوان فى الموضع الذى
نريد القفز له.
واالن نقوم بعرض دواره على زياده المتغير @xبقيمه واحد واعاده الى نقطه بدء الزياده الى ماال نهايه
فيكون الكود كما يلى الناتج هو بدء العد من واحد الى ماالنهايه
;declare @x as int=10
L:
;set @x=@x+1
;print @x
goto L
المشكله واستخدام اكثر من سطر برمجى حال تحقق الشرط او حتى عدم تحقق الشرط يكون كما يلى :
البد لتعداد االوامر البرمجيه داخل جمله Ifالبد من
استخدام البلوك Begin - End
97
الدوال : Functions
اول االمر اعلنا عن متغيرات ثم اعطاء قيم لتلك المتغيرات بشكل يساعدنا على التحويل النصى الى عددى
وعددى الى نصى :
declare @MyVal decimal(5,2),
@S varchar(10),
@H decimal(5,2),
@J varchar(10),
; @k int
-----------------------------
;set @H=193.47
;'set @S ='10.712
;'set @J='Ahmed
;set @k =-10
-----------------------------
;)print convert(varchar(10),@H
;)print convert(decimal(5,2),@S
-----------------------------
الداله absاليجاد القمة المطلقة يعنى تقوم بالتحويل من سالب الى موجب ان وجد السالب :
;)print abs (@K
-----------------------------
هنا استخدمنا دوال الطول الخاص بالمتغير وتحويل االحرف الى كابتل واسمول والداله STRتقوم بالتقريب
والتحويل للنص :
;)print len(@J
;)print Upper(@J
;)print Lower(@J
;)print str(@H
-----------------------------
الدوال هنا للحصول على عدد احرف من اليمين ومره من اليسار ومره تبديل النص
;)print Left(@J,3
;)print Right(@J,3
;)print SubString(@J,2,3
;)'print Replace(@J,'A','AA
-----------------------------
98
هنا حصلنا على الحرف المقابل للرقم 65واالسكى المقابل للحرف aولكن انتبه الحرف كابتل
له اسكى غير اسمول
;)print Char(65
;)'print Ascii('a
-----------------------------
تلك دوال التاريخ المختلف بعمل زياده بمقدار اليوم /السنه /االسابيع --الخ وان اردنا النقصان
نقوم بوضع عالمه السالب مع الرقم المراد
-----------------------------
99
الدوال التقريب لالصغر ولالكبر و حسب ما تريد والتحويل :
;)print Floor(@H
;)print Ceiling(@H
;)print Round(@H,1
;)print Sin(@H
111
التعامل مع : with Encryption
هنا كلمه Alterتم تعديل بعد ان كانت Createفعند انشاء الداله اول مره نستخدم كريت
وان ردنا التعديل نستخدم التر -كود التنفيذ كما واضح ولكن قبل الطباعه البد من تحديد نوع
االسكيما -وان اردنا عمل تشفير الداله بحيت اليرها احد نستخدم كلمه with Encryption
ولكن انتبه كل االنتباه انك فى حاله تنفيذ الكود بالتشفير فالبد من نسخ كود الداله فى فيل
تكست مثال الننا اليمكن فتحه نهائيا.
كود التنفيذ
111
اذا اردنا تعديل الكود بعد عمل التشفير سوف يرفض تعديل باحدى الطريقتين :
112
التعامل مع :GUID
لدينا مايعرف بالترقيم الدولى وهو عباره عن رقم او حرف مكون من 32حرف ورقم وال يتم
تكرارهم نهائيا ولعمل ذلك من داخل السيكوال وتوليد رقم جديد
113
مع استخدام :with Encryption
114
ولتخزين النتيجه فى متغير :
115
التعامل مع : Error
مثال :
print 100/0
print @@Error
اذا اردنا عمل ناتج قسمه ولكن بفرض اننا قمنا بالقسمه على صفر سيعطى لنا خطا ولكل خطا
مجموعه من البيانات مثل رقم الخطا ومن الممكن رصد تلك البيانات وتكون نتيجه الكود
116
شرح : Raiseerror
تستخدم لتوليد رسائل خطأ مخصصة User-defined error messageوتعيين قيمة -
للمتغير . System error flag
الرقم الخاص برسائل الخطأ المخصصة يجب ان يكون أكبر من .5111 -
االرقام اقل من او تساوى 5111تم تعريفها وحجزها بواسطة نظام قاعدة البيانات -
.Database Engine
يتم حفظ قيم الخطأ فى متغير عام له االسم . @@ERROR -
وسوف نرى كيف نشئ Raiseerrorمن خالل هذا الكود وكيفية حذفه و استدعاءه: -
117
: Virtual Column
سنقوم بعمل استعالم من جدول ولكن يوجد عمود زياده تتم اضافته ليس اساسا موجود فى الجدول
المستعلم منه مثل ضرب عمود الكميه فى عمود السعر ووضعه فى عمود جديد اقصد عمود ليس له
اى اساس من الوجود وسوف يكون العمود باى اسم واعطى له قيمه ثابته او القيم متغيره.
118
الفصل الثامن :جداول االستعالم
انشاء جدول االستعالم:
انشاء جدول االستعالم عن طريق الوزرد:
نحدد الجداول التى سنجلب منها البيانات ثم من قاعدة البيانات نقف على New View
نضعط على Add
من الشكل التالى يمكن تحديد الحقول التى نريد اضافتها لكى تعرض من خالل وضع عالمة صح
فى المربع وذلك بالضغط على الحقل.
وبعد اضافة الحقل نستطيع تسمية الحقول من خالل Aliasورؤية الجدول اللى به اسم الحقل
ومن خالل Outputنظهر الحقول ونختار نوع وطريقة ترتيبها Sortونستطيع اظهار نوع
معين من البيانات من خالل وضع شرط فى . Filter
وكل مايفعل من ما سبق هيظهر فى جملة SQLويمكننا ان نقوم بالتعديل عليها.
فنقوم بحفظه فيظهر كما يلى :
119
انشاء جدول االستعالم عن طريق الكود:
حدد جدول المستوى والقيمة واسم المستخدم من جدول بيانات الطالب والحركة لما المستخدم
يساوى dkahmed01وحقل St_IDيساوى .Act_UID
لقد قمنا بإنشاء استعالم ولكن ليظهر ككائن البد من كتابة Create view MyQuery as :
قبل االمر Selectعلى سبيل المثال :
وفى قمنا بتشغيل النشاء االستعالم مرة اخر هتظهر رسالة خطأ تفيد انه موجود :
111
كيف اتحقق من وجود هذا الكائن قبل انشاء من خالل Object_IDالخاص بالجدول االستعالم
فلو له رقم هذا معناه انه موجود ولكن فى حالة عدم وجود هذا االوبجكت حتكون القيمة العائدة
من Object_IDقيمتها .Null
احنا نقدر ننشئ جدول استعالم ولكن على شرط ثابت ولكن نريد انشاء جدول االستعالم على
شرط متغير فكنا فى المستويات السابقة نقوم فى كل بحذف جدول االستعالم وانشائه على الشرط
الجديد وهذا ما سنفعله:
كيف اتحقق من وجود هذا الكائن قبل انشاء من خالل Object_IDالخاص بالجدول االستعالم
فلو له رقم هذا معناه انه موجود ولكن فى حالة عدم وجود هذا االوبجكت حتكون القيمة العائدة
من Object_IDقيمتها .Null
if object_ID( 'NewQuery') is not null
go
as
111
انشاء جدول االستعالم أخرى :
Temporary Table
اما عن اهميه ذلك الموضوع فهو هام جدا فى حاله تعدد المستخدمين على الداتا بيز والجدول
المؤقت
ينتهى باغالق السيرفر او عمل ريستارت ويتم حذف هذا الجدول تلقائيا بمجرد عمل خروج
للمستخدم الحالى الذى قام بإنشاءه.
يتم حفظ هذا النوع من الجداول فى قاعد البيانات . Tempdb
مرئى للمستخدم الحالى فقط واليتم رؤيته من قبل المستخدمين االخرين المتصلين بنفس الخادم.
ولكننا ان اردنا انشاء جدول مؤقت فى الذاكره الفرق فقط هو اننا نقوم نقوم بوضع عالمه #قبل
اسم الجدول
112
Variable Table
من المعروف انه اثناء االعالن عن المتغيرات البد من تحديد الداتا تيب الخاص بنوع المتغير
يوجد الداتا تيب متغير نوعه جدول وهو كما يلى
113
دمج البيانات من استعالمين :
اذا اردنا دمج استعالم مع اخر يلحقه فى نفس الجدول
اوال – : Union
ياتى بكل الصفوف فى كال الجدوليين اهم نقطه هو ان يكون عدد االعمده واحده ونفس نوع الداتا
تيب على التوالى
واذا كان يوجد تكرار فى السجل يعرض واحد منه فقط
114
فهذا ناتج االستعالمين قبل ضمهم فى استعالم واحد :
ثانيا – Intersect
ياتى بكل الصفوف فى كال الجدوليين اهم نقطه هو ان يكون عدد االعمده واحده ونفس نوع الداتا
تيب على التوالى
بيعرض سجالت الخاصة الشرط االول فاذا وجد لها سجالت فى الشرط التانى يعرضها فى الشرط
التانى.
115
فهذا ناتج االستعالمين قبل ضمهم فى استعالم واحد :
ثالثا – : Except
ياتى بكل الصفوف فى كال الجدوليين اهم نقطه هو ان يكون عدد االعمده واحده ونفس نوع الداتا
تيب على التوالى
بيعرض سجالت الخاصة باستعالم االول لما يكون غير موجودة باالستعالم التانى .
116
لدينا جدولين نريد هنا الحصول على الصفوف اللى نوع الفيلم يساوى اكشن وغير موجوده فى
الجدول الثانى بفرض ان الجدول الثانى خاص باالفالم التى تم ايجارها لمعرفه االفالم التى يجب
ايجارها من نوع اكشن
فهذا ناتج االستعالمين قبل ضمهم فى استعالم واحد :
117
شرح جمل :SQL
الجملة : Select
هى عبارة عن عملية طلب للمعلومات من جداول قواعد البيانات (تسمح لنا باستعادة البيانات من
الجدول او عدة جداول – ناتج الجملة عبارة عن جدول اخر يطلق عليه االسم – Result set
تتضمن العناصر او الحقول التى نريد استعراض بياناتها باالضافة للعبارة )From
جملة اخرى
118
جملة Selectمع المتغيرات :
استخدام Whereلتحديد شرط او عدة شروط يتم على اساسها اختيار صفوف معينة من
الجداول.
119
استخدام Top Nتمثل Nعدد السجالت و Topاول سجالت بالجدول:
المعامل : Order byتستخدم الجراء عملية الترتيب فى العمود المستخدم وعند ترتيب احد
االعمدة التى تحتوى على القيم Nullفان هذه القيم تظهر فى اعلى الجدول عند ترتيب البيانات
تصاعديا ً وتظهر اسفل الجدول عند ترتيب البيانات تنازلياً.
معامل Betweenيعمل هذا المعامل على مقارنة قيمة بمجموعة القيم التى يتم تحديدها
كمعطى لهذا المعامل بحيث يقوم باسترجاع الصفوف التى تتطابق قيمها مع قيم هذه
المجموعة فقط.
القيم IS Nullتعبر عن قيم خاصة وهى قيم غير معروفة -ويتم التعامل مع هذه القيم بطريقة
عن باقى القيم فى قاعدة البيانات – عند استخدام العبارة Whereللبحث عن سجالت معينة
فانه يتم استرجاع السجل او الصف اذا كان ناتج الجملة الشرطية – Trueعند اجراء عمليات
المقارنة مع القيم Nullفان ناتج الجملة الشرطية فى هذة الحالة يكون دائما – Falseوالبد
من وجود طريقة تسمح لنا باسترجاع القيم Nullمن الجداول.
المعامل ( Likeعالمة %التعبير عن اى عدد من االحرف) – (عالمة _ التعبير عن حرف
واحد فقط) – (عالمة ] [ -التعبير عن مجموعة حروف اللى بتقع بين حرفين) – (عالمة
] ^[ التعبير عن مجموعة حروف التى ال تقع بين حرفين).
المعامل Group Byتستخدم العبارة لتقسيم ناتج االستعالم الى عدة مجموعات بناءاً على
عمود او عدة اعمدة – بمجرد تقسيم الناتج الى مجموعات يمكننا استخدام دوال التجميع
الجراء العمليات الحسابية على هذه المجموعات – اى عمود يظهر فى الجملة Selectيجب
ان يظهر فى العبارة – Group Byتستخدم لعمل تجميع للبيانات التى تم نفصيتها باستخدام
العبارة . Where
المعامل Havingتعمل على تعريف شرط يتم تطبيقه على البيانات المجمعه Group By
وتعمل نفس عمل العبارة Whereولكن مع البيانات المجمعه – Group Byواليشترط
استخدام دوال التجميع فى الشرط الخاص بالعبارة – Havingتستخدم لعمل تصفية للبيانات
المجمعة باستخدام العبارة – Group Byيفضل عدم استخدام Havingاال فى الحاالت
الفعلية التى تحتاج الى عمل تصفية للبيانات بعد اجراء عملية التجميع.
121
الجملة :Insert Into
يجب ان يقوم االجراء باضافة بيانات الى الجدول حسب ترتيب االعمدة فى الجدول وفى هذة
الحالة هيجب علينا ادخال قيم لجميع حقول الجدول وفى حالة ادخال بعض الحقول الجدول فيجب
علينا تحديد اسماء الحقول التى نريد اضافة القيم لها -ويجب ان تتوافق البيانات التى يتم اضافتها
فى الجداول مع انواع البيانات للحقول الخاصة بهذا الجدول بمعنى يجب وضع القيم الحرفية بين
عالمتى Single Quotationوعدم وضعها بين القيم الرقمية
يجب تعيين قيمة للحقول وفى حالة عدم تعيين قيمة للحقل فانه يتم تعيين القيمة Nullللحقل وفى
هذه الحالة عدم السماح بحفظ القيم Nullواليتم تنفيذ الجملة insertوتظهر رسالة خطأ ولذلك
البد ان تحتوى على قيمة افتراضية ولتعيين القيمة Nullالى من اعمدة الجدول يجب التاكد من
ان هذا العمود يقبل القيمة . Null
صيغة جملة
الجملة :Update
فى حالة اهمال العبارة whereتعمل الجملة Updateعلى تعديل جميع قيم الحقل المحدد
بالعبارة – Setوتستخدم لتعديل الجملة Updateلتعديل بيانات جدول واحد فقط – يتم كتابة
اسماء الجداول المستخدمة فى الجملة Updateفى العبارة Fromويجب ان تكون هذة الجداول
مرتبطة مع بعضها البعض.
الجملة :Delete
النحتاج لتحديد اسماء اعمدة الجداول فى الجملة Deleteحيث تعمل الجملة على الصفوف
وليس على االعمدة -فى حالة اهمال العبارة whereتعمل الجملة Deleteعلى حذف جميع
السجالت.
تعمل Deleteعلى حذف بيانات الجدول مع المحافظة على البناء Structureالخاص بالجدول
يظل الجدول موجود بقاعدة البيانات ولكن ال يحتوى على اى سجل – تعمل Dropعلى حذف
بيانات الجدول والبناء Structureالخاص بهذا الجدول واليصبح للجدول اى وجود فى قاعدة
البيانات.
121
االستعالمات الفرعية : SubQueries
هى عبارة عن استعالم داخل استعالم اخر.
يتم استخدام ناتج االستعالم الداخلى كمعطيات لالستعالم الخارجى وبالتالى يتم تنفيذ االستعالم
الداخلى اوالً.
يتم تكوين االستعالمات الفرعية عن طريق استخدام جملة Selectاو اكثر فى العبارة
Whereلجملة Selectاخرى.
يمكن استخدام االستعالمات الفرعية مع الجمل Deleteو Insertو .Update
يتم حساب االستعالم الداخلى فى كل مرة يقوم النظام باسترجاع صف جديد من االستعالم
الخارجى.
االستعالم الفرعى متربط باالستعالم الرئيسى :هى تعطى امر بدل من اسم الحقل واحد وليس
اكثر من حقل النها هتفشل واذا كان اكثر من قيمة هتفشل وده معناها ان االستعالم الفرعى
يرجع بحقل واحد او بقيمة واحدة.
نتيجة هى :
االستعالم الفرعى غير متربط باالستعالم الرئيسى :هى تعطى امر فى الشرط.
فلدينا جدولين ( )Tickets ,Ownerوبيانات اللى بداخلهم:
نتيجة
122
المعامل ( INيقوم بتحديد شرطين او اكثر يتم على اساسها استرجاع البيانات من الجداول –
يعمل على مقارنة قيمة بمجموعة القيم التى يتم تحديدها كمعطى لهذا المعامل – يقوم
باسترجاع الصفوف التى تتطابق قيمها مع القيم هذه قيم المجموعة فقط – يمكن استخدام هذا
المعامل مع االستعالمات الفرعية فى حالة ان ناتج االستعالم الداخلى عبارة عن مجموعة من
القيم وليس قيمة واحدة فقط – االستعالم الداخلى يمكن ان يتضمن اكثر من استعالم ويتم
تنفيذ اخر استعالم فى االستعالم الداخلى ثم االستعالم السابق له وهكذا).
ضا تقديم NOTعلى INللتحقق من أن القيمة الموجودة في الصف الحالي لالستعالم يمكنك أي ً
الرئيسي ليست جز ًءا من المجموعة التي قام االستعالم الفرعي بإرجاعها.
المعامل Existsاستخدمها في عبارة WHEREلتشير إلى أنه يجب أن يقوم االستعالم الفرعي
ضا تقديم NOTعلى EXISTSلتشير إلى أنه ال يجب بإرجاع صف واحد على األقل .يمكنك أي ً
أن يقوم االستعالم الفرعي بإرجاع أي صفوف.
المعامل ALLيتم االستعالم عن قيمة اكبر من كل القيم الموجودة فى مجموعة القيم اى اكبر
من القيمة العظمى لمجموعة القيم – ويتم تضمين جميع القم الموجودة فى الحقل الذى يتم
تمريره كمعطى لهذه الدالة – واستخدمها في عبارة WHEREالسترداد الصفوف التي تفي
بالشروط وذلك عند مقارنتها بكل صف يتم إرجاعه بواسطة االستعالم الفرعي.
الفرق بين INو ALLفان INهو بيتعامل مع االستعالم الفرعى سجل سجل باحث عن القيمة
واذا وجدها لن يستمر وينسى الباقى السجالت اما ALLهو بيتعامل مع االستعالم الفرعى ككل
وتستخدم فى المقارنة = < ، > ،ولن ينسى بقية السجل.
123
الفصل التاسع :موضوعات متنوعة متقدمة
االجراء : Stored Procedure
هو اوبجكت يقوم بعملية معينة مكررة عند االستدعاء وقد يمرر له متغيرات اوال – ويمكن
استخدامها للمحافظة على التكامل المرجعى بين الجداول.
االجراء يتم حفظه كعنصر من عناصر قواعد البيانات على خادم لتحسين اداء القاعدة.
هناك نوعان من االجراءات : Procedure
Stored procedures System procedures
تأتى مدمجة مع محرك قواعد البيانات
يتم انشائها باستخدام اللغة
يتم استخدامها للوصول الى وتعديل بيانات
Data Definition Language
النظام
: Drop proceduce يتم السماح للمستخدم الذى قام بانشاء االجراء او للمستخدمين
db_ownerو Sysadminفقط بحذف هذا االجراء.
:SQL injection تعنى حقن كود داخل احدى الكويريات والذى يفتح ثغرة فى سكيول سيرفر
وبالتالى الوصول الى قاعدة البيانات ولحل هذة المشكلة نستخدم الــStored Procedure
ولزيادة االمان باستخدام فيها نوعين من المتغيرات وهما :Parameterتعنى نمرر قيم اثناء
التنفيذ و :localاستخدام متغير
اننا هنا سوف نتحدث عن االجراءات المخزنه فى الواقع بينما يتم االتصال بالسيكوال وعمل
اى من جمل ال Insert – Delete – Updateكل هذا يتم على الرامات الخاصه بالجهاز
بينما ان نجحنا بعمل ذلك على السيرفر سيتم توفير الكثير من مصادر النظام الخاص بى ومنها
توفير الرامات و فى السيكوال يوجد نظام االجراءات المخزنه تمكنا من عمل – Insert
Delete – Updateعلى السيرفر وليس الجهاز الحالى
النشاء استعالم جديد :
هنا قمنا بعمل تعديل على البروسيدجر لياخذ معامالن ( االول نوعه انتجر لنحصل على االى
دى الخاص بالحركه -الثانى معامل نخزن بداخله عدد السجالت )
وعلينا االنتباه ان نوع المتغير االخر outputالن هنحتاج قيمته من خارج البروسيدجر
ولكن لنحصل على قيمته سيكون من داخل البروسيدجر وتكون قيمته كما يلى
Set @CUNT =@@ROWCOUNT
وفى جزء مرحله التنفيذ نعلن عن متغير من نفس نوع المتغير الخارجى ونقوم بالنداء على
البروسيدجر ولكن البراميتر االول هنكتب قيمه االى دى ولكن كى نحصل على المتغير االخر
نمرر له المتغير المعلن عنه سلفا مع ضروره توضيح انه outputالن المتغير ال output
ال يستقبل اال فى متغير ايضا من نفس نوع ال outputوكما هو واضح الستدعاء قيمه
المتغير ال outputنستخدم الجمله Select
125
من خالل البروسيدجرInsert ومثال على عمل جمله
USE [Students]
GO
ALTER procedure [dbo].[Pro_Stud](@IDStud int,@RealName NvarChar(50),
@Address NvarChar(50),@Phone int)
as
begin
Insert Into Sutd_Info([ID Stud],RealName,Address,Phone)
values(@IDStud,@RealName,@Address,@Phone)
end
---- Execute Procedure ------------
Exec [dbo].[Pro_Stud] 5,'Rocaia','Samanoud',01041254
الكود التالى فيه تجربه اننا نقوم بعمل ادراج سجل ولكننا نقوم بتسجيل االى دى الخاص
بالشركه على الرغم من اننا قمنا بكتابه اسم الشركه
126
وسنرى الحديث ببروسيدجر اخر يكون فكرته انه بينما يتم التسجيل فى جدول المشتريات يتم
كتابة اسم الصنف واسم المورد ولكن فى جدول المشتريات يتم تسجيل االى دى الخاص بهم
use SuperMarket
go
Alter procedure NewP (@ID int,@ItemName Nvarchar(20),@VndName Nvarchar(20),@Q
int,@Price int)
as
Begin
------------------------
Declare @X as int;
select @X=ID from Items where ITM_NAME = @ItemName;
------------------------
Declare @E as int;
select @E=ID from Vendors where VID_NAME = @VndName;
------------------------
Insert Into Purchases (ID,ITM_ID,VID_ID,Quantity,Price,Datey)
Values
(@ID ,@X, @E, @Q ,@Price ,GETDATE())
end
وقت التنفيذ
exec NewP 2,'Sweet','Rocaia',145,13
والنتيجه
ولعمل استعالم من جدول المشتريات ولكن البد من اظهر اسم الصنف وليس الرقم والننسى
من وجود عالقه بين الجداول
Use SuperMarket
go
والنتيجه
127
فهنا االى دى هنا خاص بالحركه فى جدول المشتريات وليس اى دى الصنف واسم الصنف
حصلنا عليه بدالله االى دى فى السطر االخير من االستعالم ومن فلتره االستعالم انه بدالله
رقم المورد لما يساوى 4
Purchases.ITM_ID =Items.ID
مثال على عمل اجراء فى سيكول ونداء على االجراء من خارج السيرفر عن طريق برنامج
فيجوال بيسيك 6
النشاء البروسيدجر
المطلقات : Triggers
128
تعريف : Triggers
تنفيذها يدوى او انك تنادى عليها فهى بتعمل عملية مراقبة لجدول وعندما يحدث بداخلها
من الممكن اسخدامها على سبيل المثال على برنامج خاص بى حيث اننى اعمل مراقبة على
التعديل المطلق حيث ياخذ جميع العبارات والخيارات الخاصة بهذه الجملة مطابقة لعبارات
129
انواعها : Triggers
131
: DML Triggers
الصيغة العامة وكود انشاء من هذه النوع :
132
مثال :
مثال :
133
سوف نقوم بانشاء اجراء ببروسيدجر وكود التنفيذ من داخل الفيجوال بيسك :
والتنفيذ :
134
: Replication
تعريف :Replication
هى تكنولوجيا لنسخ وتوزيع البيانات وقاعدة البيانات من قاعدة الى قاعدة اخرى وثم عمل
تزامن بين قواعد البيانات مع مراقبة تغييرات التى تحدث فى القاعدة االصلية.
هو عملية صيانة قواعد البيانات على مواقع مختلفه و توزيع التغييرات عبر كل المواقع على
اسس زمنيه مع ت طبيق عملية تناسخ البيانات يتيح احدث البيانات للمستخدم
يعتبر تناسخ البيانات فى االساس مفيداً لالعمال الضخمه و التى تحتاج لتوزيع كميه كبيره
من البيانات على العديد من المواقع او العمالء المستفيدين من هذه البيانات
لقطة النسخ المتماثل : Snapshotالناشر يأخذ نسخة Snapshotمن البيانات (قاعدة
بيانات منسوخة بالكامل) وينشرها الى المشترك كل الوقت وهذة الطريقة تتطلب وقت كبير
وعديد من الموارد -فإن معظم المسؤولين ال تستخدم النسخ المتماثل لقطة على أساس
متكرر لقواعد البيانات التي كثيرا ما تتغير .هناك سيناريوهين حيث يتم استخدام النسخ
المتماثل لقطة شائع .أوال ،يتم استخدامه لقواعد البيانات التي نادرا ما تتغير .الثانية ،يتم
استخدامه لتحديد خط األساس إلنشاء النسخ المتماثل بين النظم حين يتم نشر التحديثات
المستقبلية باستخدام النسخ المتماثل المعامالت أو دمج.
النسخ المتماثل المعامالت : Transactionalهذا األسلوب هو أفضل من االول هناك
"وكيل" أنه رصد المنشور ،وعندما يتم إرسال أية تعديالت للمشتركين ،وهذه المحطة
يمكن أن تكون مباشرة أو على فترات منتظمة -يقدم حال أكثر مرونة لقواعد البيانات التي
تتغير على أساس منتظم .مع النسخ المتماثل المعامالت ،عامل النسخ المتماثل تراقب
الناشر إلجراء تغييرات في قاعدة البيانات وينقل تلك التغييرات إلى المشتركين .هذا يمكن
أن يحدث انتقال على الفور أو على أساس دوري -وعادة ما تستخدم في سيفر لسيفر
السيناريوهات التي تتطلب إنتاجية عالية
النسخ المتماثل دمج : Mergeيتحقق من التعديالت عند الناشر والمشترك ويحفظ جميع
التعديالت على كل واحد منهم -إذا تم فقد االتصال ،فإنه يتحقق كافة التعديالت مرة واحدة
في عودة االتصال -تستخدم لتوزيع بيانات لسيرفرات مختلفة وللمستخدمين عن بعد عبر
الشبكات المحلية أو اإلنترنت
مع هذه األنواع الثالثة من التكرار ،يوفر SQLسيفر نظام قوية ومرنة لمزامنة البيانات
136
البيانات: خطوات عملية تناسخ
لو دى نسخة Enterpriseسوف تظهر ثالث حاالت اما نسخة Expressسوف
تظهر فقط Subscriptions
1
2
137
3
138
خطوات النشاء الناشر
1
2
3
139
االختيار االول :نسخة ثابتة من القاعدة
االختيار التانى :تعمل عملية مراقبة للقاعدة البيانات
االختيار الثالث :مراقبة للطرفين (اى االصلية والمنسوخة) وثم يقوم بتعديل فى
الطرفين
االختيار الرابع :يفعل كل ما سبق بس بطريقتين اما كلها بدفعة واحدة او التعديالت
فقط
4
5
141
6
141
9
11
11
142
12
13
14
143
المراجع
موقع ميكروسوفت
ااكدميية ىب ىس الب
الخاتمة
اهداء وشكر
144