لمحة بسيطة عن sql
#1
من الأشياء التي لا يمكن تجاهلها أو الاستغناء عنها أثناء تعلم و استغلال قواعد البيانات هي لغة الاستعلام أو الاستفسار البنيوية Structured Query Language SQL
و هي لغة برمجة خاصة للتعامل مع قواعد البيانات وتعتبر لغة عالية المستوى، يمكنها في سطر واحد إجراء عمليات بالغة التعقيد على قاعدة البيانات.
1- ھى لغه قیاسیه من لغات الحاسب الخاصه بمعھد ANSI
2- تمكنك من الدخول لقواعد البیانات
3- تمكنك من إستخراج البیانات من القاعده
4- تمكنك من إضافه بیانات إلى قاعده البیانات
5- تمكنك من من حذف بیانات من القاعده
6- تمكنك من تعديل البیانات المسجله .....

تنقسم إلى قسمین :
1- SQL Data Manipulation Language (DML
ھو القسم المسئول عن : معالجه البیانات

2- Data Definition Language (DDL
ھو القسم المسئول عن : تعريف البیانات

و للتقرب و للتعرف عن كثب ، سوف نتطرق للتعليمة الأولى SELECT خطوة خطوة.

- أولا علينا انشاء قاعدة بيانات و لتكن مثلا الجدول الذي يأخذ اسم Vente و يحتوي على :
Produit - Qut - Date_de_Vente - Client

و كما تقدم في شرح و استغلال قواعد البيانات : يجب تجنب تسمية الحقول باسماء محجوزة لتعليمات SQl أو استعمال الفراغ.

نضع على الفورم مكون Query1 - Data Source1 - DBGrid
نربط DBGrid بــــ : DataSource1 و هذه الأخيرة بـــ : Query1
المكون Query كغيره له خصائص و أحداث . في قسم الخصائص (مثل مكون Table) له خاصية Active و خاصية DatabaseName .
الجديد في الخصائص : SQL على شكل (TStrings) هنا نقوم بكتابة التعليمات ثم تفعيل الخاصية Active بعد تحديد طبعا الاسم المستعار أو مسار القاعدة (DatabaseName)


- أول تعليمة كما سبق هي : SELECT
نكتب في الخاصية SQL:
كود :
SELECT * FROM VENTE
SELECT تعني تحديد.
- * بمعنى كل الحقول (و هنا يمكنك كتابة بعض أو كل الحقول الواحد تلو الآخر ، مع الفصل بينهما بـفاصلة , )
- FROM VENTE يعني من الجدول المسمى VENTE

لاحظ المرفقات .
.../...يتبع..../....


الملفات المرفقة
.rar   SQL.rar (الحجم : 320.24 ك ب / التحميلات : 1,862)
الرد
#2
السلام عليكم أخي نبيل
بارك الله وجزاك خيرا
وننبه أن المثال يشتغل من المسار
D:\sql
يبدو أن النعاس طار علينا أخي نبيل Big Grin
الرد
#3
kachwahed كتب :السلام عليكم أخي نبيل
بارك الله وجزاك خيرا
وننبه أن المثال يشتغل من المسار
D:\sql
يبدو أن النعاس طار علينا أخي نبيل Big Grin
لا عليك اخي ، يمكنك وضع المجلد بالمسار المذكوووور ، أو تغييره (DataBaseName) حسب الرغبة أو الحاجة Cool
الرد
#4
السلام عليكم و رحمة الله و بركاته:
لازلنا مع التعليمة Selecte وقبل كل شيء أود أن ألفت الانتباه إلى أن SQL غير حساس لحجم الحروف ، كبيرة أو صغير ، بمعنى : تكتب : SELECT  أو  select  أو Select  فالأمر لا يفرق .

- كما سلف بيان كيف يتم تحديد حقل أو أكثر من جدول معين ، فإنه يمكن تحديد مجموعة حقول أو كل الحقول الخاصة بجدولين أو أكثر في نفس الوقت . فمثلا لوكان لديانا إلى جانب الجدول السالف ، جدولا آخرا تحت اسم Client به حقلين مثلا تحت اسم : Nom  -  TPH
- تحديد كل حقول الجدولين نكتب :
كود :
Select * From Vente[COLOR=Blue],[/COLOR]Client
- تحديد الحقل Produit  من الجدول  Vente + الحقل Nom من الجدول Client  :
كود :
Select Produit , Nom From Vente , Nom
و هكذا يمكنك تحديد ما تريد من الحقول مهما كانت الجداول .


- إضافة كلمة DISTINCT  إلى Select  :
يتم  هذا إدا أردنا تحديد معين من غير تكرار القيم ، يعني الحقل Produit  للجدول Vente مثلا لو كان يحتوي قيم متعددة :
[صورة: 6981.jpg]
فكتابة الكود :
كود :
SELECT DISTINCT Produit FROM VENTE
يعطي النتيجة
[صورة: 6982.jpg]

أما كتابة الكود
كود :
SELECT DISTINCT Produit,Qut FROM VENTE
فستكون النتيجة هي الصورة الأولى (نفسها) لأن Distinct يخص الحقلين معا ، يعني لابد أن يكون Produit+Qut يتكرران معا ، و إلا إذا كان Produit متكرر بكمية مختلفة  ، أو الكمية متكررة بــ Produit آخر فستكون النتيجة المبينة بالصورة الاولى.

....../  يتبع /....
الرد
#5
- استخدام الشرط (Where) أثناء التحديد :
عند الحاجة إلى تقييد التحديد : مثلا نريد تحديد Produit إذا كان الحقل Client يأخذ القيمة Nabil :
كود :
Select Produit From Vente Where Client=[COLOR=Blue]'[/COLOR]Nabil[COLOR=Blue]'[/COLOR]
- نريد تحديد PRODUIT الذي تساوي كميته 100 مثلا نكتب :
كود :
Select Produit From Vente Where Qut=100
و عليه فيمكننــا استعمال : (= تساوي) (< أصغر) (> أكبر) (<> لايساوي أو يختلف) (=>أصغر من أو يساوي) (=< أكبر من أو يساوي) (Between عندما يكون الشرط بين قيمتين ) (Like شرط الكلمات المتشابهة)

-
استخدام Like
* تحديد Produit من جدول Vente الذي يبدأ اسمه بالحرف N
كود :
Select Produit From Vente Where Client like [COLOR=Black]'[/COLOR][COLOR=DarkRed]N[/COLOR][COLOR=Blue]%[/COLOR][COLOR=Black]'[/COLOR]
* تحديد Produit من جدول Vente الذي ينتهي اسمه بالحرف N
كود :
Select Produit From Vente Where Client like [COLOR=Black]'[/COLOR][COLOR=Blue]%[/COLOR][COLOR=DarkRed]N[/COLOR][COLOR=Black]'[/COLOR]
* تحديد Produit من جدول Vente الذي يبدأ اسمه بالحرف N و عدد أحرفه5
كود :
Select Produit From Vente Where Client like [COLOR=Black]'[/COLOR][COLOR=DarkRed]N[COLOR=DarkOrange]_[/COLOR]_[COLOR=DarkOrange]_[COLOR=DarkRed]_[/COLOR][/COLOR][/COLOR][COLOR=Black]'[/COLOR]
* تحديد Produit من جدول Vente الذي ...Big Grinهههههه... ؟؟؟؟؟
كود :
Select Produit From Vente Where Client like [COLOR=Black]'[/COLOR][COLOR=Red]%[/COLOR][COLOR=DarkRed]N[COLOR=DarkOrange]_[/COLOR]_[COLOR=DarkOrange]_[COLOR=DarkRed]_[/COLOR][/COLOR][/COLOR][COLOR=Black]'[/COLOR]
..../ يتبع /....
الرد
#6
بارك الله فيك وفي علمك اخي نبيل...
شرح مميز..

اخي الكريم...
عندي استفسار بارك الله لك...

ذكرت

إقتباس :* تحديد produit من جدول vente الذي يبدأ اسمه بالحرف n و عدد أحرفه5

PHP كود :
select produit
 from vente
 where client like 
'n____' 

هل المفهوم من هذا اخي انه بدل من كل حرف اضع _ واحد؟
لأنك قلت 5 حروف وانت وضعت 4 من _ بارك الله فيك...

ربما كان قصدك مع حرف ال n والله اعلم

ثانيا....
لم استطع لحد الآن كتابة الأوامر sql في الدلفي...
سأحاول مجددا والله المستعان... والى فسأعود اليك اخي Rolleyes
بارك الله فيك
الرد
#7
العفو أخ طلال ، و مرحبا بك.

إقتباس : بارك الله فيك وفي علمك اخي نبيل...
و فيك كل البركة أخي ، و شكرا . و لكن تجدر الإشارة أنه ليس لي أي علم و كل القصة هي رؤوس أقلام صادفتها هنا أو هناك مع بعض الكتب أو مع منتدانا الحبيب ، و أكون ممتنا جدا لو تصرف هذه العبارات إلى من يستحقها أمثال الأخ عبد العزيز - Strelitzia ....ـ و غيرهما ....


إقتباس : ربما كان قصدك مع حرف ال n
أجل : الحرف N +أربعة أحرف ، إذن الكلمة تتكون من 5 أحرف ، و تبدأ بالحرف N
مع مراعات N أوn

إقتباس : لم استطع لحد الآن كتابة الأوامر sql في الدلفي...
تقدمت بهذا الطرح إليك خصوصا ، و من الطبيعي أني أتمنى أن تستفيد . فأين الإشكال بالضبط أخي ؟
الرد
#8
نعم اخي الكريم نبيل....
بصراحة اطلب السماح من حضرتك :o
الخطأ في انا وليس فيك...
يعني الله يعينك علي :p

إقتباس :تقدمت بهذا الطرح إليك خصوصا ، و من الطبيعي أني أتمنى أن تستفيد . فأين الإشكال بالضبط أخي ؟

بارك الله فيك... والله انك اخ كريم...
جزاك ربي كل خير وبارك فيك وعليك

ولكن ابشرك انه تم حل المشكلة ولله الحمد...
وانا الأن كتبت اول كود لي في ال sql وهو
PHP كود :
select username from UsersList
ORDER BY username 

فجزاك الله كل خير.. Smile

وانا جاهز الآن لإكمال المشوار معك Rolleyes
في انتظار القسم القادم من الدروس...
لأني بعد قليل انتهي من اكمال الدروس التي قمت به حدرتك في هذا الموضوع...
يعني الآن انا مثل الصاروخ :eek:
الرد
#9
استخدام العمليات الجبرية AND OR IN NOT
بامكاننا استخدام إحدى هذه العمليات حسب الحاجة . و تسميتها دالة عليها من دون أي شرح.
أمثلــة
كود :
Select Produit From Vente Where Client like [COLOR=Black]'[/COLOR]N____'[COLOR=Black] [COLOR=DarkRed]AND[/COLOR] Produit='HDD'[/COLOR]
كود :
Select Produit,Qut From Vente Where [COLOR=Black]Qut=100 [COLOR=DarkRed]or[/COLOR] Qut=120 [COLOR=DarkRed]or[/COLOR] Qut=140[/COLOR]
و هذا الأخير يمكن كتابته على الشكل :
كود :
Select Produit,Qut From Vente Where [COLOR=Black]Qut [COLOR=DarkRed]IN[/COLOR] (100,120,140)[/COLOR]
-
كود :
Select * From Vente Where [COLOR=Black][COLOR=DarkRed]NOT[/COLOR] Qut=100[/COLOR]
الرد
#10
- إستخدام Order By
تستخدم هذه التعليمة لترتيب البيانات حسب حقل معين مثل :
كود :
ٍSelect * From Vente Where [COLOR=DarkRed]Qut[/COLOR]>10 [COLOR=Blue]Order By[/COLOR] [COLOR=DarkRed]Produit[/COLOR]
كما يمكن الترتيب حسب أكثر من حقل على أن تكون الأولوية للحقل الأول مثل :
كود :
ٍSelect * From Vente Where [COLOR=DarkRed]Qut[/COLOR]>10 [COLOR=Blue]Order By[/COLOR] [COLOR=DarkRed]Produit,Client[/COLOR]


التــــــوابــــــــــــــــــع :
1- Count
يعيد هذا التابع عدد السجلات التي تعيدها عبارة Select مثل :
كود :
Select count(*) From Vente Where Qut>10
يعني تحديد عدد السجلات من الجدول Vente و التي تكون فيها Qut أكبر من10. و تكون النتيجة عبارة عن حقل واحد تحت عنوان (*)Count به عدد الحقول التي تحقق الشرط.
- كما يمكن تغيير عنوان الحقل إلى مثلا Total
كود :
Select count(*) as [COLOR=Black]Total[/COLOR] From Vente Where Qut>10

Sum -2
يعيد مجموع سجلات حقل معين
كود :
Select Sum (Qut) From Vente Where Qut>10
يعني السجلات التي سيتم تحديدها إذا كانت Qut>10 ، سوف يتم جمع قيمها في حقل تحت عنوان Sum Of Qut


Avg -3
يعيد المعدل الوسطي ، مثل :
كود :
Select Avg (Qut) From Vente Where Qut>10
يعني السجلات التي سيتم تحديدها إذا كانت Qut>10 ، سوف يتم تقسيم مجموع قيمها على مجموع كل السجلات الموجودة بالجدول Vente

..../ يتبع /....
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم