Guest cold0zero

بدأ مجموعة من الدروس - أرجوا التثبيت -

24 ردود في هذا الموضوع

لمحـــة تاريخية

ان SQL لغة تعامل مع قواعد البيانات وقد تم زرعها نظريا في جميع أنظمة ادارة قواعد البيانات العلائقية (DBMS)

المصممة لعدة مستخدمين وقد تم هذا الأمر نتيجة اعتماد هذه اللغة من هيئة المواصفات الوطنية الأمريكية (ANSI)

و من قبل هيئة المواصفات الدولية (ISO) كلغة استفسارات قياسية لقواعد البيانات العلائقية

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

التي سوف نستخدمها في هذا الشرح لاستعراض الأمثلة بالضافة الى تعابير قواعد البيانات العلائقية و سوف نستعرض أيضا طريقة

تنفيذ أوامر SQL البيئات البرمجية التي تعمل ضمنها و سنتطلع في نهاية الأمر على معالج أوامر VisData SQL

المرفق بلغة vb و كذلك على استخدام تعابير sql المضمنة في برمجيات VB

تم تطرير لغة SQL قبل IBM في مخبر أبحاث سان جوزية في بدايات 1970 وقد تم عرض هذه اللغة في مؤتمر ACM عام 1974

باسم SEQUEL و ذلك اختصارا لعبارة structured english query language

و تلفظ سيكويل و قد أطلق عليها الأسم المختصر لاحقا SQL

و رغم أن هذه اللغة من تأليف IBM فان أول عملية زرع لها تمت من قبل شركة ORACLE و كانت تسمى و قتها (relational software inc)

تمت أغلب عمليات الزرع التجارية اللاحقة على أنظمة قةاعد بيانات علائقية DBMS مبينية ضمن أنظمة UNIX مثل

ORACLE و ingres و informix و قد تبعتهم IBM لاخقا عام 1981 من خلال نظام SQL/DS الذي تحول الى DB/2 ابتداءا من عام 1983

قامت هيئة المواصفات ANSI بنشر معيار (SQL-86) علم 1986 تبعها اصدار دولي لهذه المعاير من قبل هيئة ISO عام 1987

تم اصدار تحديث جوهري لهذا المعيار عام 1989 باسم SQL-89 و تعنمد أغلب أنزمة ادارة قواعد البيانات DBMS حاليا واحدا على الأقل من مستويات معاييرعام 1989

تمت مراجعة المعايير مرة ثانية عام 1992 حيث اضيفت امكانيات أخرى الى لغة sql و أصبحت SQL-92 أكبر من مجموعة SQL-89 و بالتالي فانه يمكن لبرامج قواعد المعطيات القديمة أن تعمل بوجود المعايير الجديدة بدون تعديلات جوهرية

لقد كان باستطاعة بائعي أنظمة DBMS حتى عام 1996 الطلب من الهيئة الوطنية للكتنولوجيا و المواصفات (NIST) التحقق من موافقة منتجاتهم لمعاير SQL حيث كانت عمليات التحقق و الموافقة تعتبر تشجيع كبير لبائعي أنظمة DBMS من أجل الألتزام بمعاير SQL و رغم ان عدم الألتزام بالمعايير و المواصفات قد يوفر على بائعي الأنظمة بعض المال و لكنه يؤدي الى الأبتعاد عن المعايير و بالتالي عدم التوافقيه

الأمكانيات الحالية و المستقبلية

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

و تقوم حاليا هيئات ANSI و ISQ بالعمل معا لتحوبل SQL الى لغة برمجة مستقلة و يجب بعد ذلك الأنتظار أن يقوم مطورو البرامج بتحديث برامجهم لتضمينها المواصفة الجديدة على شكل بيئات برمجة SQL مستقلة

مقاهيم أساسية لقواعد البيانات العلائقية

تتكون قاعدة البيانات العلائقية من مجموعة من الجداول مكونة بدورها من أعمدة و أ سطر يتم حفظ تصاميم الجداول في ملف قاموس معطيات data dictionary و هو عبارة عن مجموعة جداول تحتوي على معلومات توصيفية عن القاعدة

و رغم أن الجداول في قاعدة علائقية يبدو كجزء من صفحة معطيات أو كملف معطيات بسيط فان الجدول يتميز بالخصائص التالية :

يمكن أن يكون الجدول فارغ أو محتويا على عدة أسطر من المعطيات بمعنى أخر فان العلاقة ( أو الجدول ) هي عبارة عن تعريف لبنية الجدول و عند تضمين الجدول صفوف من المعطيات فانك تحصل على نسخة (instance) من العلاقة

يحتوي كل عمود من أي سطر في الجدول على قيمة واحدة فقط أو بمعنى أدق لا يوجد سمات متعددة القيم

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

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

بما ان المفتاح الأساسي و حيد فان قيمه لا يمكن أن تكون معدومة (NULL) و هي قيمة تعني " غير معروف " و بالتالي فان نظام DBMS يقوم بالتأكد من أن قيمة المفتاح الأساسي و حيدة و غير معدومة

يتم التعبير عن علاقات الأرتباط بين الجداول في قاعدة البيانات العلائقية من خلال تضمين جدولين أو أكثر بأعمدة تعريف متوافقة

عندما يحتوي جدول على عمود أو مجموعة أعمدة متطابقة مع مفتاح أساسي من جدول أخر نقول أن هناك علاقة ارتباط منطقية و ندعو العمود أو مجموعة الأعمدة المتوافقة مع المفتاح الأساسي من الجدول الموافق بمفتاح خارجي أو ثانوي

على كل مفتاح خارجي يحتوي على قيمة غير معدومة أن يطابق قيمة موجودة في عمود المفتاح الأساسي نسمي هذا الشرط بالتكامل المرجعي referential integrity و على جميع أنظمة DBMS أن تقوم بالتأكد من تحقق هذا الشرط

جداول القاعدة الجداول الأفتراضية و العروض

ندعو الجداول المخزنة فعليا ضمن قاعدة البيانات بجداول القاعدة (الجداول الأساسية) وهي جزء دائم من القاعدة.بالمقابل فان نظام DBMSيقوم بانشاء جداول مؤقتة في الذاكرة الئيسية لجهاز العمل جوابا على استفسار ما.ندعو هذا النوع من الجداول بالجداول الافتراضية .حيث أن جداول الأستفسارات الأفتراضية هي عبارة عن جداول مؤقتة يتم تدميرها في أغلب الحالات عندما يقوم المستخدم باستفسار استدعاء جديد(retrieval request) .

يمكن أن تحتوي قاعدة البيانات أيضا على مناظر أو عروض يتم تخزينها في قاموس المعطيات كتعبير استفسار و عندما يذكر مستخدم ما اسم منظر في تعبير تعامل بالمعطيات يقوم نظام DBMS بتنفيذ تلك الأستفسارات و انشاء جدول افتراضي يحتوي على النتيجة في الذاكرة الرئيسية يمكن بعد ذلك التعامل مع المنظر و اجراء الأستفسارات عليه تماما كجدول

قاعدة البيانات التوضيحية ( مخزن كتب الكتروني )

ان الذي سوف نستخدمه هو عبارة عن مخزن للكتب موجود على الأنترنت

يتم التعبير عن الجداول ضمن هذه القاعدة كما يلي :

Table_name (primary key, column,…)

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

تحتوي قاعدة مخزن الكتب على الجداول السبعة التالية :

Customers (customer numb, customer_first_name, customer_last_name, customer_street, customer_city, customer_state,
customer_zip, customer_phone, customer_email)

Books (isbn, author_name, title, publisher_name, publication_year, binding, source_numb, retail_price)

Author (author name)

Publishers (publisher name)

Sources ( source numb, source_name, source_street, source_city, source_state, source_zip, source_phone)

Order (order numb, customer_numb, order_date, credit_card_numb, card_exp_date, order_filled)

Order_lines (order numb, isbn, quantity, cost_each, cost_line, shipped)

وتتميز هذه الجداول بكل ما يميز قواعد البيانات العلائقية التقليدية:

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

رقم الزبون في حالتنا هذه وقد استخدمنا رقم معرف عشوائي لكل من جدول الزبائن المصدر والطلبيات

يحتوي جدول الكتب على مفتاح أساسي طبيعي و هو رقم الكتاب وفق معيار ISBN وهو رقم وحيد و معرف للكتاب في جميع أنحاء العالم

يحتوي جدول أسطر الطلبيات على مفتاح أساسي مركب و هو يسمح بتحديد أي كتاب يظهر في الطلبية

تعتبر جداول المؤلفين و الناشرين جداول مرجعية للتحقق من ادخال أسماء المؤلفين و الناشرين بشكل وحيد و متماثل في جدول الكتب للقيام بذلك تم تعريف أعمدة author_name و publisher_name كمفاتيح خارجية تشير الى المفاتيح الأساسية في كل من جدولي المؤلفين و الناشرين عند تغير قيم عمود المؤلف أو الناشر في جدول الكاتب يقوم نظام DBMS بالتحقق من كون القيم متوافقة مع قيم الجداول المرتبطة بها من خلال المفتاح الرئيسي

يحتوي جدول الكتب على مفتاح خارجي اضافي source_numb يربط كل كتاب بالمصدر الذي يمكن طلبه منه في جدول المصدر source

يحتوي جدول الطلبيات على مفتاح خارجي customer_numbيربطه مع جدول الزبائن

يحتوي جدول أسطر الطلبيات على مفتاحين خارجيين يربطان كل سطر من الطلبية باسم الكتاب في جدول الكتب و بطلبية محددة في جدول الطلبيات

الدرس القادم

التعامل مع العلاقات ( الجداول )

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بداية موفقه و...

جزاك الله 100000000000خير

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

لأنك تعلم ان SQL server ليس له قبول كبير فى المنتدى -مقارنة بالاكسيس-

وأتوقع أن تكون دروسك هذه مرجع لمرتادى المنتدى قريباً ان شاء الله

ولى سؤال بسيط ---سابق لأوانه---:D

كيف يمكن اخفاء الSystem Tables لأنها كتيرة وعامله لخبطة؟؟؟

وشكراًًًًًًً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أخي الكريم /cold0zero

درس رائع ما شاء الله

واصل بارك الله فيك ونحن معك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله فيك

ويعطيك ألف عافية على هذه الدرس

أرجوا الإستمرار ونحن معك

ونحن من المتابعين لك (gift)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

دروس رائعة تشكر عليها أخي العزيز ،،، وسأكون من أول المتابعين لدروسك

ولكني أتمنى أن أتكون جميعها تحت هذا الرابط ،،،

وتقبل تحياتي ،،،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

التعامل مع العلاقات ( الجادول )

يعتمد التعامل مع الجداول ضمن قاعدة بيانات علائقية بشكل أساسي على نظرية المجموعات الرياضية للحصول مثلا على جزء من جدول أو على تركيبة من جدولين عليك فعليا القيام بعمليات تعتمد على الجبر انك لن تقوم طبعا كمستخدم بهذه العمليات بشكل مباشر بل تقوم نيابة عنك أنظمة DBMS من خلال استخدامها لعمليات جبرية متتالية للحصول على نتيجة الأستفسار المطلوب

لهذا السبب يدعى الجبر العلائقي بالجرائي procedural لأنه يلجأ الى عمليات متتابعة للحصول على المعطيات المطلوبة

على العكس من ذلك فلغة SQL ليست اجرائية لأنك عندما تضع استفسار فانك تحدد بشكل واضح ما تريد الحصول عليه بدون أن تحدد الطريقة التي يجب أن يعمل بها نظام DBMS لتأمين ذلك

عندما تصيغ استفسارSQL وارساله الى نظام DBMS / SQLيقوم متفحص الأستفسارات query optimizer باختيار الطريقة الأكثر فاعلية للوصول الى المعطيات المطلوبة ان عمليه الأختيار هذه معقدة وليس من الضروري أن يكون المبرمج أو المستخدم النهائي على اطلاع عليها

ما عليك معرفته هنا أنه من الممكن استخدام عدة تعابيرSQL للحصول على نفس النتيجة و لكن بأداء مختلف

من المؤكد أنه كلما كانت معرفتك بعلم الجبر و بطريقة توزيع المعطيات أفضل كلما كان اختيارك لتعبيرSQLالمطلوب أكثر ملائمة

بيئات عمل SQL

يوجد طريقتان لارسال أمر SQLالى قاعدة البيانات

تعبير SQL التفاعلي : يقوم المستخدم في هذه الحالة بكتابة أمر مفرد و ارساله مباشرة الى قاعدة البيانات و تكون نتيجة ذلك جدول في الذاكرة الحية و يحصل المستخدم على جدول جديد و حيد كنتيجة . في كل مرة استخدم بيئات العمل الحواسب الكبيرة و من الممكن الحصول على عدة جداول في نفس الوقت على الحواسيب الشخصية ان الجداول الناتجة عن هذة الأستفسارات ليست قانونية دائما حيث أن وجود قيم" NULL" تمنع وجود مفاتيح اساسية أحيانا لا تشكل هذه الحالة مشكلة نظرا لأن هذه الجداول لا تنتمي فعلا الى قاعدة المعطيات ( موجودة فقط في الذاكرة و هي مؤقتة )

تعابير SQL المضمنة : يتم استخدام تعابير SQL ضمن الشيفرة الخاصة بتطبيق ما يمكن أن تكون تعابير SQL المضمنة استاتيكية أي مخزنة كما هي ضمن التطبيق أو أن تكون ديناميكية و في هذه الحالة يقوم التطبيق ببنائها ديناميكيا أثناء التنفيذ اعتمادا على ادخلات مستخدم التطبيق

ان تعابير SQL في كلا الطريقتين متشابهة

معالجة أوامر SQL التفاعليه

ان التعامل مع البيئات التفاعلية يمر بشكل علم بالخطوات التالية :

كتابة أمر SQL

ارسال الأمر الى قاعدة البيانات و انتظار النتيجة

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

SQL على نظم العمل المركزية

في حالة العمل باستخدام أنظمة IBM DB / 2 أو SQL / DS على حاسب مركزي سوف تقوم غالبا بالتعامل مع بيئة QMF ( تسهيلات ادارة الأستفسار ) لتنفيذ أوامر SQL التفاعليه

يظهر الشكل التالي بيئة QMF المكونة من شاشة فارغة لكتابة الأوامر حيث يمكن استخدام المفاتيح المبرمجة لتسهيل عملية الكتابة كما يمكن كتابة الأمر مباشرة عند اشارة command = = >

SQL Query
Select *
From CAB_

***  END ***
6 = draw 5 = chart 4 = print 3 = end 2 = run 1 = help
12 = report 11 = delet 10 = insert 9 = form 8 = forward 7 = backward
   positioned Ok , cursor
   Command = = = >
   page Scroll = = = >

يقوم QMF بتنفيذ الأوامر عندما يضغط المستخدم على مفتاح F2 حيث يرسل الأستفسار الى نظام DBMS الذي يرجع بدوره المعطيات المطلوبة الى QMF الذي يقوم باظهارها على الشاشة

SQL على الحواسب الشخصية

يوجد عدد كبير من معالجات SQL التفاعلية وتمتلك أغلب بيئات البرمجة الحالية واجهات تخاطب بسيطة تسمح بتنفيذ أمر SQL ( مثل : vb6-visdata , access , delphi )

الدرس القادم

عملية استرداد بسيطة للمعطيات باستخدام SQL

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

عملية استرداد بسيطة للمعطيات باستخدام SQL

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

توفير لغة SQL أمر واحد لاسترداد المعطيات هو أمر select وهو ليس محدود الإمكانيات كما قد يبدو حيث يؤمن أمر select الصيغ اللازمة لاختيار أعمدة أو أسطر أو التراكيب بين الجداول وتجميع المعطيات كما ويسمح بتنفيذ عمليات حسابية بسيطة

إن عبارة SQL واحد فقط قادرة على جعل نظام DBMS يقوم بأي عملية جبرية على قاعدة البيانات

بنية الصيغة الأساسية لعبارة select هي التالية:

Select column1, column2, …
From table1, table2, …
Where selection_criteria

يحتوي تعبير select (clause) على أسماء الأعمدة المطلوبة أما تعبير from فهو يدل على الجداول المستخدمة في الاستفسار ويدل تعبير where الاختياري على الشروط المطبقة على الاستفسار بهدف تحديد الأسطر المطلوبة

يوجد تعابير أخرى متعددة ضمن صيغة select لن نذكرها الآن

اختيار الأعمدة

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

استعادة جميع الأعمدة

للحصول على جميع الأعمدة الموجودة في الجدول و بنفس الترتيب الذي أنشئت به يمكن استخدام إشارة "*" المختصرة بدلا من كتابة جميع أسماء الأعمدة ضمن عبارة select

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

استعادة أعمدة محددة

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

Select source_phone, source_name
From source

تظهر النتيجة جميع أسطر الجدول ولكن فقط للأعمدة المحددة و بالترتيب المحدد ضمن الاستفسار خلف عبارة select

التخلص من المعطيات المتكررة

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

لإزالة هذا النوع من التكرار المنطقي من الجدول الناتج يمكن استخدام أمر distinct ضمن تعبير select بهدف الحصول على أسطر متمايزة

Select distinct customer_numb,…

و الناتج لا يبدي أي تكرار

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

ترتيبا جدول النتائج

يبدو جدول نتائج الاستفسار بنفس ترتيب تخزينها فيزيائيا في القاعدة ما لم يحدد المستخدم طريقة أخرى لإظهار النتائج إذا أراد المستخدم تغير طريقة العرض فعليه استعمال تعبير order by ضمن عبارة select

Select *
From publishers

و نضيف التعبير order by

Select *
Form publishers
Order by publishers_name

فنحصل على مجموعة نتائج مرتبة حسب اسم الناشر

يلي تعبير order by أسماء الأعمدة المعتمدة لترتيب النتائج في حال وجود أكثر من عمود يكون العمود الأول هم المعتمد في الترتيب الأساسي أما العمود الثاني فيعتمد في الترتيب الداخلي ضمن نتائج الترتيب الأول و هكذا في حال و جود أعمدة إضافية أخرى

و يوضح التعبير التالي عن ذلك حيث يتم ترتيب نتائج الاستفسار على جدول الزبائن أولا حسب الاسم و ثانيا حسب الرمز البريدي لمنطقة الزبون

Select customer_last_name, customer_zip
From customers Order by customer_last_name, customer_zip

الآن إذا رغبنا في عكس عملية الترتيب: أولا حسب الرمز البريدي و من ثم الاسم فعلينا عكس ترتيب الأسماء ضمن الاستفسار كما يلي:

Select customer_last_name, customer_zip
From customers Order by customer_zip, customer_last_name

اختيار الأسطر

نستطيع اختيار الأسطر التي نريد الحصول عليها ضمن الأعمدة و ذلك من خلال استخدام شرط الاختيار المعبر عنه بالعبارة where

تحتوي عبارة where في أبسط الحالات على تعبير منطقي يستخدم للبحث عن الأسطر ضمن ناتج عبارة select ولا يتم إظهار إلا الأسطر التي تحقق الشرط where في جدول النتائج

من المهم هنا إذا معرفة طريقة بناء التعابير المنطقية الضرورية لاختيار الأسطر و بشكل يتلاءم مع طبيعة المعطيات ضمن الأعمدة

Predicates

يدعى التعبير المنطقي الذي يلي where باللغة الإنكليزية predicates و يفهم منه هنا شروط الاختيار أو اختصار الشرط و هو يستخدم مجموعة من المعاملات المنطقية لتشكيل شروط اختيار الأسطر فذا حقق السطر الشرط المنطقي ( ناتج true ) يتم تضمين السطر ضمن جدول نتائج الاستفسار و يتم استبعاده عن جدول النتائج في الحالة المخالفة ( ناتج false)

تم تعديل بواسطه walmhomer
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جزاك الله كل خير ولكن ارجو المتابعة فاغلب الدروس تبدا بدرس او اثنين وتتوقف ارجو منك ان تتكرم علينا ببقية الروس

اخوكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

عوامل المقارنة المنطقية

تبين الجدول العوامل الستة المنطقية المستخدمة للتعبير عن العلاقات بين المعطيات ويتم استخدام العامل بوضعه

بين قيمتين أحداهما اسم العمود و الأخرى قيمة معينة مثل :

Cost > 1.95

أو أن تكون كلتيهما أسماء أعمدة مثل

Reorder_point = < numb_on_hand

يدل التعبير على أننا نبحث عن الحالة التي يكون فيها السعر أكبر من 1.95 أما التعبير الثاني فيعبر عن السؤال التالي هل عدد الأغراض المتوفرة في المستودع أقل من الحد اللازم لإعداد طلبية جديدة

العامل المعنى أمثلة

= يساوي Cost = 1.95

< أصغر من Cost < 1.95

< = أصغر أو يساوي Cost < = 1.95

> أكبر من Numb > reorder_point

> = أكبر أو يساوي Numb >= reorder_point

! = <> لا يساوي Numb != reorder_point

تعتمد طريقة استخدام القيم في التعابير المنطقية على طبيعة المعطيات في الأعمدة المستخدمة في المقارنة :

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

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

التواريخ : يحب كتابة التواريخ بنفس التنسيق التي تخزن فيها ضمن قاعدة البيانات و هي تختلف من نظام إلى آخر

التوقيت : يجب كتابة التوقيت بنفس الهيئة التي يخزن بها ضمن قاعدة البيانات و هي تختلف من نظام إلى آخر

عند استخدام أسماء عمودين عليك الانتباه إلى أن الشرط يطبق على كل سطر على حدة حيث يقوم نظام DBMS بالتعويض بقيم الأعمدة المخزنة في نفس السطر عند تقييمه لتحقيق الشرط

يمكنك إذا استخدام أسماء عمودين عندما تريد تفحص معطيات مخزنة في سطر واحد ولكن في أعمدة مختلفة لكن يمكنك استخدام تعبير منطقي لمقارنة المعطيات الموجودة في نفس العمود و لكن ضمن سطرين مختلفين

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

المقارنة بين المعطيات الرقمية تتم على أساس الترتيب الرقمي

المقارنة بين سلاسل المحارف تعتمد على الترتيب الأبجدي

المقارنة بين معطيات تواريخ أو أوقات تعتمد على التسلسل الزمني

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

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

لنفترض مثلا أننا نرغب بالبحث عن جميع المواد المحققة للشروط التالية : سعر أكبر من 50 $ وكمية أقل من الحد الأدنى المحدد لطلب كمية إضافية عندها يجب الربط بين التعبيرين

Cost > 50

Numb-in_stock < reorder_point

باستخدام المعامل المنطقي AND للحصول على تعبير مركب واحد

Cost > 50 and numb_in_stock < reorder_point

نلاحظ هنا أنه عند استخدام عامل الربط المنطقي AND يجب أن تتحقق جميع الشروط المحيطة بالعامل AND للحصول على الأسطر المطلوبة

يمكنك أيضا استخدام عامل AND لإنشاء شرط يتعلق بفترة زمنية مثلا البحث عن جميع الطلبات الواقعة بين 10/10/2003 و 10/10/2004

Order_date > =10/10/2003 AND order_date < =10/10/2004

يظهر الجدول التالي نتائج استخدام AND بين تعبيرين ونلاحظ أن الحالة الوحيدة التي يتحقق بها الشرط ككل هو أن يكون كلا التعبيرين على طرفي عبارة AND محققين

false true AND

False True True

False false False

الآن إذا كنت ترغب بالبحث عن جميع الأسطر التي يتحقق فيها شرط واحد فقط من بين عدة شروط عليك استخدام عبارة OR للربط بين هذه الشروط المختلفة مثلا للبحث عن جميع المواد ذات السعر الأعلى من 100 $ أو الأقل من 10 $ نستخدم

Cost > 100 or cost < 10

حيث أنه يكفي أن يتحقق شرط واحد من الشرطين المذكورين على طرف عامل OR في سطر ما ليتم تضمينه في نتيجة الاستفسار SQL

بالنسبة للشروط على التواريخ نستخدم عبارة OR للبحث عن حقول التواريخ الواقعة خارج فترة زمنية محددة مثلا الطلبات قبل 10/10/2003 و بعد 10/10/2004:

Order_date < 10/10/2003 OR order_date > 10/10/2004

يظهر الجدول التالي نتائج استخدام OR بين تعبيرين نلاحظ أن الحالة الوحيدة التي لا يتحقق بها التعبير الكلي هي عندما يكون طرفي OR غير محققين

False true OR

True True True

False true false

النفي

يقوم العامل المنقي NOT ( أو ! ) بعكس نتيجة التعبير المنطقي الذي يليه مثلا يسمح التعبير التالي :

NOT ( cost < = 50 )

باسترداد جميع الأسطر التي تحقق لشرط : السعر ليس أقل أو يساوي 50$ ( بمعنى آخر أكبر تماما من 50 $)

يقوم هنا نظام DBMS بالتحقق من أن عمود السعر cost يحقق الشرط ضمن القوسين و يقوم بضم الأسطر التي لا تحقق الشرط ضمن القوسين فقط إلى نتيجة الاستفسار

تم تطبيق NOT في المثال السابق على التعبير الموضوع ضمن قوسين في حال وجود عدة تعابير يتم تطبيق NOT على التعابير الموضوعة بين قوسين مباشرة بعد العامل NOT مثال على ذلك :

NOT ( cost < = 50 ) AND numb_in_stock < = reorder_point

هنا يتحقق الشرط بين القوسين عندما يكون السعر أقل من 50 $ و العدد المتوفر أصغر أو يساوي حد إعادة الطلب إن استخدام NOT يستبعد نتائج هذا التعبير بين قوسين من نتيجة الاستفسار أي أن الأسطر التي تحقق شرط السعر أكبر من 50 $ و الكمية أكبرمن حد إعادة الطلب هي التي سوف تضم إلى نتيجة الاستفسار و بالتالي فان التعبيران التاليان مكافئان للتعبير السابق:

NOT ( cost < = 50 ) OR NOT ( numb_in_stock < = reorder_point )

Cost > 50 OR numb_in_stock < = reorder_point

الدرس القادم

تسلسل تنفيذ العمليات و استخدام الأقواس

تم تعديل بواسطه walmhomer
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جزاك الله خير اخي الغالي cold0zero

والله دروسك لا تقدر بثمن

وقواك الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا اخى شكرا جزيلا

ودرس رائع

مجهود تشكر عليه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لك كل الشكر الاخ العزيز cold0zero ونتمني ان نحظي بالاستماع و الاستمتاع بهذه الدروس الطيبة

خزاك الله الف خير عنا ;):P

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله

بدايةً اود ان أشكركم على هذه المعلومات العظيمة والمفيدة جداً وادعو الله ان يوفقكم في نقل علمكم هذا فخيركم من تعلم العلم وعلمه.

ولي طلب من سيادتكم :

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

فهل لي ان ابعث لسيادتكم بهذه الأسئلة ؟؟؟؟؟

شكراً ...

وفقكم الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

متل ما بتحب اللي بقدر عليه بخدمك فيه

بس رجاءا الكلمات الأنكليزي خليها متل هاهيه مشان افهم أحسن ماكتبها بالعربي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً يأخ cold على استعدادك للمساعدة جزاك الله خيراً

وهذه هي أسئلتي - كل ما اريده هو مفهوم المصطلح وحالات استخدامه بدون أمثلة أو أي أكواد

توضيح مفهوم وحالات استخدام كل من :

• OLAP – OLTP

• OLE DB – ADO وعلاقتهم بـ SQL

• IIS INTERNET INFORMATION SENTER

• OSQL

• XML وعلاقتها بـ SQL SERVER

• MASTER DB

• جمل : IDENT_SEED - IDNET_INCR - @@INDENTITY

• CONSTRAINT وانواعه :

Defult - check - primary key - uniqe - foreign key

• INDEXES

• CLUSTERED INDEX - NONCLUSTERED INDEX - HEEP

• INDEXES OPTION : FILLFACTOR - PAD_INDEX

• STATISTICES

• VIEWS

• STORD PROCEDURE

• USER_DEFINED FUNCTION

• TRIGGER

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يا سيدي الكريم كل كلمة تستفسر عنها تحتاج الى درس كامل أي الى حوالي الصفحة الكاملة 1000 كلمة لنوفيها جزء

من حقها

ولكن سأشرح بعض النقاط التالية باقتضاب

التي ستسهل عليك الفهم أن كان لديك فكرة كاملة عن ما تسأله

CONSTRAINT

توضع CONSTRAINT أو الشروط عادة عند بناء الجدول

Defult - check - primary key - uniqe - foreign key

لنفرض أنه لديك جدولين سنعتبر أن أحدهما لذاتية موظفين والجدول الآخر هو جدول إجازات الموظفين بالشكل التالي

جدول الذاتية يتضمن الحقول التالية

id رقم الموظف

fname الاسم الاول

lname الاسم الأخير

hierd_date تاريخ التوظيف

create taple emp (
id number(3) constraint emp_id_pk primary key ,
fname char(15) constraint emp_fname_chk check (fname is not null),
lname varchar2(15) constraint emp_lname_chk check (lname is not null)
);

جدول الاجازات

id رقم الموظف

vaction_days عدد أيام الأجازة

create taple vac (
id number(3) constraint vac_id_fk referances emp(id) ,
vaction_days number(3) default(10)
);

أولا

Defult

المقصود فيها القيمة الافتراضية لحقل ما ضمن الجدول مثلا لنفرض أنك تريد أن يكون عدد أيام الاجازة للموظف 10

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

default

والا ستكون القيمة التي أدخلتها مع بيانات الموظف

راجع بناء الجدول vac

vaction_days number(3) default(10)

check

تستخدم لوضع شرط على القيمة في الحقل مثلا القيمة يجب أن لا تون null

راجع بناء الجدول emp

fname char(15) constraint emp_fname_chk check (fname is not null),

بالنسبة لل

primary key- foreign key

مثلا لدينا الجدولين السابقين

لنفرض أنه لدينا الموظف الذي رقمه 15 اسمه الأول همام واسمه الاخير غوراني وعدد أيام اجازته 15

باستخدام

primary key- foreign key

استطعنا أن نربط جدولين مع بعضهما بوضع أحد الحقول في الجدول الأول

primary key

وله شروط

1- لا يتكرر

2- لايحوي null

وحقل آخر في الجدول الثاني يشير الا المفتاح الرئيسي قي الجدول الأول وبهذا يتم الربط

أم بالنسبة لل

uniqe

فهذا الشرط يعني أن الحقل يجب أن لا تتكرر قيمة الذي يحويه

فمثلا لا يوجد موظفين في نفس الشركة اسماءهم الكاملة متشابهة

سأعلق على أشياء أخرى

VIEWS

جدول وهمي يحضر البيانات من الجدول الأصلي لكافة الأعمدة أو لبعضها

يحتاج شرحة لحوالي3000 كلمة على الأقل

STORD PROCEDURE

الاجراءات المخزنة وتحتاج لشرح طويل

USER_DEFINED FUNCTION

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

موجودة أصلا وتحتاج لشرح طويل

TRIGGER

أجراء ينفذ قبل أو بعد حدث ما مثلا عند أضافة بيانات جديدة

كالعد التلقائي وغيره

أعتقد أن عليك أن تقرأ في الكتب وتسال المختصين ليتوضح الأمر بشكل أكبر

تم تعديل بواسطه walmhomer
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي العزيز

اشكرك كثيرا على اهتمامك وردك

بالنسبة لتوضيحك موضوع constraint كان شرحاً جميلاً مفيداً وأكثر مما كنت اريده.

أعرف يا أخي أن ما ذكرته يحتاج كتاباً كاملاً ولكني أريد سطرين فقط لكل مصطلح لبيان متى وأين يستخدم حتى استطيع أن اتخيل كيف يعمل البرنامج وما هي امكانياته

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

ياريت كل ما تفتكر تكتبلي سطرين فقط عن اي مصطلح

أعرف اني ممل و بايخ لكن لو لم ترد علي ثانية فيكفي ما أفدتني به سابقاً

اكرر شكري

وفقك الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

مبارك يا اخى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ولو هي شغلتنا ان شاء الله مارح طول عليك بس كام يوم و تكرم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جزاكم الله خيرا على لادروس الممتازة

بس اذا تكرمت أعتقد انه اذا فصلت كل درس في مشاركة مستقلة يكون افضل عشان الدروس تكون واضحة ومع كل درس مناقشاته

وجزاكم الله خيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

رائع و اتمنى المزيد

......................

خالد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

للرفع نسبة للأهمية.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مشكور اخي والله معلومات قيمة

الى المشرف ارجو التثبيت

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بعد إذن المشرف تم التثبيت

اخى cold zero اتمنى ان تكمل ما بدأته

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .