¨¨¨°~*§¦§ Microsoft SQL Server §¦§*~°¨¨¨هذا المنتدى يناقش تكنولوجيا ال MS SQL Server المقدمة من مايكروسوفت و تصميم و تطوير قواعد البيانات من خلالها باستخدام ال T-SQL و ربط قواعد البيانات المنشئة من خلال ال MS SQL Server بال VB6 و بيئة الدوت نيت و ال ASP3 و ال ASP.NET
الشرح: هنا قمنا بإستخدام الكلمة select والتي نستخدمها لإسترجاع البيانات المخزنه ومن ثم حددنا أسماء الـ (Fields) التي نريد إظهارها وهي (code, m_name, member_no, address, birth_day, email, phone_no, member_rank) وبعدها قمنا بكتابة الجملة (From) والتي نحدد بها إسم الجدول الذي يحوي البيانات المراد عرضها وهو الجدول (member_info).
الشكل التوضيحي:
الكود(2):
كود: select * from member_info
الشرح: قبل أن أبدأ بالشرح أريد منك أن تذهب إلى Start Search For Files or Folders All Files and Folders أكتب في الخانة المكتوب فوقها All or part of the file name الجمله التالية كود: *.jpg
ستكون النتيجة بأنه سيعرض جميع الصور لاننا إستخدمنا الرمز (*) ذات الامتداد jpg . إذن الرمز (*) يعني (عرض الكل).
الآن لنرجع إلى مثالنا:الكود(2) وهو نفس الكود(1) ولأكن هنا إستبدلنا أسماء الـ (Fields) بي الرمز (*) وهذا يعني بأنه سيقوم بعرض بيانات جميع الـ (Fields) الموجوده بداخل الجدول member_info, وهذا يعني بان نتائج الكود(1) و الكود(2) هي نفسها.
الشكل التوضيحي:
الكود(3):
كود: select m_name , member_rank from member_info
الشرح: هو نفس الكود(1) ولأكنا هنا حددنا للبرنامج بأن يعرض لي فقط الـ (Fileds) التي تحمل الأسماء (m_name , member_rank)
الشكل التوضيحي:
الكود(4):
كود: select distinct address from member_info
الشرح: في هذا الكود نلاحظ بأننا أضفنا جملة (distinct) بعد الجملة (select) والتي نعني بها قم بعرض بيانات الـ (Fields) الذي يحمل الأسم (Address) بحيث لا تتكرر فيه القيم (Values) المتشابه.
الشكل التوضيحي:
Where
وهي جملة شرطية تعمل مع الجملة (Select),أي انها تعمل على تحديد ما الذي تريد عرضة حسب الشرط الموضوع.
الكود(1):
كود: select *from member_info where m_name = 'raad'
الشرح: ممكن القول بأن هذا الكود يتكون من مقطعين الأول (select *from member_info) وهو ما قمنا بشرحه بالأعلا. الثاني (where m_name = 'raad') في هذا المقطع سيقوم الكود بتصيفة (غربلة) البيانات بحسب الشرط الموضوع بعد الجمله (where), بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحقل (m_name) مساوياً للكلمة (raad) حيث الرمز (=) يعني التساوي.
الشكل التوضيحي:
الكود(2):
كود: select *from member_info where code between 2 and 4
الشرح: سنأخذ القسم الثاني (where code between 2 and 4) بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحقل (code) بين الرقمين 2 و 4 حيث استخدمنا الكلمة (between) للدلاله على (بين).
الشكل التوضيحي:
الكود(3):
كود: select *from member_info where code >= 4
الشرح: سنأخذ القسم الثاني (code >= 4) بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحقل (code) أكبر أو يساوي (>=) الرقم (4).
الشكل التوضيحي:
ملاحظة:
قبل تكملة الأكواد نريد أن نضيف بعض الـ (values) للجدول لغرض التوضيح كما يلي:
كود: select * from member_info where M_name like 'S_%'
الشرح: سنأخذ القسم الثاني (M_name like 'S_%') بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحقل (M_name) يبدأ بالحرف (S).
الشكل التوضيحي:
الكود(5):
كود: select * from member_info where M_name like 'SQ_%'
الشرح: سنأخذ القسم الثاني (M_name like 'SQ_%') بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحرف الاول والثاني للحقل (M_name) يبدأ بالحرفين (SQ).
الشكل التوضيحي:
الكود(6):
كود: select * from Member_Info where M_name like '[m-s]%'
الشرح: سنأخذ القسم الثاني (M_name like '[m-s]%') بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحرف الاول للحقل (M_name) واقع بين الأحرف (M,N,O,P,Q,R,S) بمعنى أن الترتيب الابجدي يبدأ من الحرف (M) وينتهي بالحرف(S).
الشكل التوضيحي:
الكود(7):
كود: select * from Member_Info where address not like 'Unknow'
الشرح: سنأخذ القسم الثاني (address not like 'Unknow') بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحقل (address) لا يشبه الكلمة (Unknow)
الشكل التوضيحي:
الكود(8):
كود: select * from Member_Info where phone_no in (123456789,543567892)
الشرح: سنأخذ القسم الثاني (phone_no in (123456789,543567892)) بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحقل (phone_no) موجود فيه الرقمين أو واحد منهما (123456789,543567892)
الشكل التوضيحي:
الكود(9):
كود: select * from Member_Info where M_name = 'xyz' or address = 'Unknow'
الشرح: سنأخذ القسم الثاني (M_name = 'xyz' or address = 'Unknow') بمعني بانه سيقوم بي عرض البيانات الموجودة في الجدول (member_info) على أن يكون الحقل (M_name) يساوي الكلمة (xyz) أو الحقل (address) يساوي الكلمة (Unknow), نلاحظ بأننا هنا دمجنا شرطان مع بعضهما البعض وهذا يعني بأنه سيقوم بعرض جميع محتويات الشرط الاول (M_name = 'xzy') وجميع محتويات الشرط الثاني(address = 'unknow').
الشكل التوضيحي:
الكود(10):
كود: select * from Member_Info where M_name = 'xyz' and address = 'Unknow'
الشرح: هو نفس الكود رقم (9) ولأكنا هنا قد بدلنا (or) بي (and) وهذا يؤدي إلى وجوب تحقق الشرطين بمعني قم بعرض البيانات في الحقل (M_name) على أن تساوي الكلمة (xyz) وأيضاً يجب أن تحقق الشرط الثاني وهو أن يكون الحقل (address) مساوي للكلمة (Unknow).
الشكل التوضيحي:
الكود(11):
كود: select * from Member_Info where M_name like 'S_%' and member_no = '123213'
الشرح: أنظر شرح الكود رقم (10)
الشكل التوضيحي:
• ملاحطة: إستخدام (OR) : تعني بأنه يجب تحقيق أحد الشرطين. إستخدام (AND) : تعني بأنه يجب تحقيق الشرطين معاً.
Group By
وهي جملة تعمل مع الجملة (Select),حيث تعمل على جمع البيانات المتشابه ووضعها بي مجموعة واحدة.
الكود:
كود: select address from Member_Info group by address
الشرح: ايضاً يتكون هذا الكود من قسمين: الأول (select address from Member_Info) وقد وضحناه بالأعلا. الثاني (group by address) في هذا المقطع سيقوم بجمع البيانات المتشابه في مجموعة واحدة من على أساس الحقل (address).
الشكل التوضيحي:
Having
وهي جملة شرطية خاصة بالجملة (Group By),أي انها تعمل على تحديد ما الذي تريد عرضة حسب الشرط الموضوع, الفرق بينها وبين (Where) بأنها تحدد الشرط الخاص بي المجموعة (Group By) وليس لي الجملة (Select) وعند إستخدام الجملتين معاً تكون ,كأنك وضعت شرط بداخل شرط.
الكود:
كود: select address from Member_Info group by address having address is null or address like 'unknow'
الشرح: يتكون هذا الكود من ثلاثة أقسام: الأول (select address from Member_Info) وقد وضحناه بالأعلا. الثاني (group by address) وقد وضحناه بالأعلا. الثالث (having address is null or address like 'unknow') وقد وضحناه عندما شرحنا الجمله (Where) ولأكن كما ذكرنا بأن هذا الشرط خاص بي (group by).
الشكل التوضيحي:
ملاحظة: تخيل العملية كالتالي بأنك تبحث عن (قلامك الازرق الجاف) بداخل غرفتك المرتبة, المهم فأنت لن تبدأ بكل الغرفة مرة واحدة ستصغر البحث لأن القلم يجب ان يكون بداخل المكتب هذا يعني أنك وضعت شرط (Where) ومن ثم لتصغير البحث أكثر فلابد للقلم أن يكون مع مجموعة أقلامك (Group By) ولأكن إلى الآن لم أصل إلى قلمي المراد إذن لأبد من شرط أخر وهو أن يكون جاف (Having), إذا أردت كتابة هذا القصة بالأكواد فستكون كالتالي: 'أزرق' = القلم Where الغرفةFrom المكتب Select 'جاف' = القلم Having القلم Group by
Order By
وهي جملة تستخدم لترتيب البيانات (تصاعدياً, تنازليا, أبجديا).
الكود (1):
كود: select * from Member_Info order by code
الشرح: القسم الثاني من الكود (order by code), سيقوم هذا الكود بعرض البيانات بالترتيب تصاعدياً بحسب الحقل (code).
الشكل التوضيحي:
الكود (2):
كود: select * from Member_Info order by code desc
الشرح: نفس الكود رقم (1), ولأكن هنا زدنا الجملة (desc) والتي تعني عرض البيانات بالترتيب تنازلياً بحسب الحقل (code).
الشكل التوضيحي:
ملاحظة:
في الكود (1) و (2) أعلاه إستخدمنا Order By بحسب الحقل (Field) المسمى (Code), وهو يحوي Data من نوع Int أي أرقام, لذلك كان الترتيب تنازلي (1,2,3) أو تصاعدي (3,2,1) بحسب ترتيب الارقام, ونفس النظرية إذا إستخدمنا حقل يحمل (Datatype) من نوع (Varchar) سيكون الترتيب بحيب الأحرف الأبجدية تنازلي (C,B,A) أو تصاعدي (A,B,C).