LATAOUI MABROUK
2010-10-30, 10:24
المادة : SGBD
الموضوع: SQL
SQL(S :stricture L :******** Q :query) لغة الاستعلامات البنيوية
وهي عبارة عن مجموعة من الاستعلامات المطبقة من اجل البحث عن معطيات في قواعد البيانات
LMD(L: ******** M: manipulation D: données) لغة استغلال البيانات
الصيغة العامة :
Select attr1,attr2,,,attrn أسماء الخصائص
From nom de table اسم قاعدة البيانات
Where condition الشرط
مثال1 : إليك قاعدة البيانات التالية : Travailleur (code,nom , prénom ,daten , age , adrs,salaire ,sex)
Code
Nom
Prénom
Daten
Age
Adresse
Salaire
sex
001
Bel hadi
bachir
02/11/1975
35
Rue 48
147000
H
002
Fadli
djamel
12/03/1975
35
Rue12
120000
H
003
ghadbane
doaa
10/07/1980
30
Rue h11
115000
F
004
Zaidi
Kamel
03/06/1976
34
Rue 48
175000
H
005
Laoubi
Adel
07/03/1983
27
Rue somam
175000
H
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H
007
Sadaoui
doaa
12/12/1975
35
Sidi aiche
70000
F
008
Khebal
Khemissi
10/11/1970
40
Rue ch-ben yattou
195000
H
009
Fadli
Mohamed
02/11/1975
35
Rue ch-ben yattou
230000
H
010
Nekbil
Kamel
10/10/1978
32
Rue 12
275000
H
Nom
Prénom
Bel hadi
bachir
Fadli
djamel
ghadbane
doaa
Zaidi
Kamel
Laoubi
Adel
Kouidri
Nourdine
Sadaoui
doaa
Khebal
Khemissi
Fadli
Mohamed
Nekbil
Kamel
-ما هي أسماء و ألقاب جميع العمال ؟
Select nom ,prénom
From travailleur
ما هي قائمة العمال الذين أجرهم القاعدي اكبر من 195000
Select *
From travailleur
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H
009
Fadli
Mohamed
02/11/1975
35
Rue ch-ben yattou
230000
H
010
Nekbil
Kamel
10/10/1978
32
Rue 12
275000
H
Where salaire >195000
أعط أسماء العمال الذين أجرهم القاعدي =7000
Select prénom
From travailleur
where salaire =70000
doaa
أعط القائمة الكاملة لجميع العاملات
Select *
From travailleur
003
ghadbane
doaa
10/07/1980
30
Rue h11
115000
F
007
Sadaoui
doaa
12/12/1975
35
Sidi aiche
70000
F
Where sex=’f’
ما هو اسم .لقب و عنوان العامل الذي رقمه = 005؟
Select adresse
From. travailleur
Where code =’005’
Code
Nom
Prénom
Adresse
005
Laoubi
Adel
Rue somam
أعط القائمة الاسمية للعمال الذين المولودين قبل بعد تاريخ :10/07/1980
Select *
From travailleur
Code
Nom
Prénom
Daten
Age
Adresse
Salaire
sex
005
Laoubi
Adel
07/03/1983
27
Rue somam
175000
H
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H
Where daten >10/07/1980
التعامل مع SQL في دلفي :
-1 بواسطة برنامج :module de base de données
يسمح لك دلفي بالتعامل مع SQL وذلك بواسطة احد برامجه الفرعية module de base de données : الذي سبق وان تطرقنا إليه
كيف السبيل إلى ذلك ؟
1- لتسهيل مهمة التعامل مع SQL لابد من توفر بعض الشروط المهمة ز
1- وجود ALIAS
2- هندسة للقواعد البيانات تكون منطقية
3- ......
4- ......
آلية التنفيذ :
1- نفذ برنامج module de base données
2- قم بفتح القائمة fichier
3- اختر الأمر nouveau/ fiche SQL
تلاحظ ظهور محرر الأوامر الخاص ب SQL
6
5
4
3
2
1
x
x : شريط المركبات الخاص بمحرر SQL
1- تحديد alias مكان تواجد قواعد البيانات
2- البحث عن عبارة ة ما في محرر SQL
3-تنفيذ المساءلة SQL
4- عملية الصق coller
5-عملية النسخ copier
6- عملية القص couper
ملاحظة : لقد سبق وان شرحت آلية إنشاء alias في module base de données
لتكن alias التالية laoubi_adel و التي تحوي قاعدة البيانات السابقة –(travailleur)
لابد من تحديد الـalias قبل بداية العمل
آلية تحديد alias
1- انقر على القائمة SQL
2- اختر الآمر sélectionne un alias
3- قم بتحديد الــ alias التي أنشأتها مسبقا لاحتواء قواعد البيانات فعلى سبيل المثال :laoubi_adel
4- انقر على ok
أو انقر على المركبة ذات الدلالة (1) في الشكل (x)
لاحظ الرسومات التالية :
بعد تحديد alias العمل نبدأ في تحرير المساءلات السابقة
ما هي قائمة جميع العمال ؟
-ما هي أسماء و ألقاب جميع العمال ؟
ما هي قائمة العمال الذين أجرهم القاعدي اكبر من195000؟
أعط أسماء العمال الذين أجرهم القاعدي =7000 ؟
أعط القائمة الكاملة لجميع العاملات
ما هو الاسم الكامل و عنوان العامل الذي رقمه =005 ؟
أعط القائمة الاسمية للعمال الذين المولودين قبل بعد تاريخ :10/07/1980 ؟
بعض أوامر SQL
الأمر AND
يسمح لك الأمر السابق بدمج شرطين أو أكثر في علية البحث
مثال : أعط القائمة الاسمية للعمال الذين سنهم =35 وأجرهم القاعدي يفوق 20000
select *
from travailleur
where age=35 and salaire >20000
أعط القائمة الاسمية للعمال الذكور الذين سنهم =35 و أجرهم القاعدي اقل من 23000
الأمر BETWEEN يسمح لك هذا الأمر بالبحث عن مجموعة من البيانات وفق حصر شرط البحث بين قيمتين
إليك مثال :
1- أعط قائمة العمال الذين سنهم يتراوح بين 27و30 سنة
2- أعط قائمة العاملات اللائي أجرهم القاعدي محصور بين 175000 و 195000
الأمر NOT BETWEEN يعمل هذا الأمر عكس عمل الأمر السابق حيث يعطيك مجموعة قيم خارج مجال معين سنطبق هذا الاخير على المساءلتين السابقتين
3- أعط قائمة العمال الذين سنهم يتراوح خارج المجال ( 27...30) سنة
4- أعط قائمة العاملات اللائي أجرهم القاعدي الغير محصور بين 175000 و 195000
الأمر LIKE تسمح التعليمة السابقة بالبحث عن جزء من معلومة إن صح التعبير.
إليك المثالين التاليين :
1- ما هي قائمة العمال الذين اسمهم يبدأ بــ: d؟
2- ما هي قائمة العمال الذين يبدأ لقبهم بــ:f؟
3- ما هي قائمة العمال الذين يبدأ اسمهم بــ:a وطوله 4؟
ملاحظات : يستعمل الرمز% ) (←لا يهم عدد الأحرف
يستعمل _ (alt.+92) لتحديد عدد الأحرف
الأمر COUNT
لتحديد عدد السجلات الموجود وفق الشرط المطروح
إليك المثال التالي
ما هو عدد العمال الذين سنهم < 30 سنة؟
النتيجة تكون 6 أي عدد العمال الذين هم اكبر من سن 30 سنة هم ستة عمال
الدالة MAX تسمح لك الدالة السابقة بإعطاء اكبر قيمة في قواعد البيانات وفق شرط معين
أمثلة:
1- ما هو اكبر اجر قاعدي للعمال؟
2- ما هو اكبر سن للعمال؟
الدالة MINتسمح لك الدالة السابقة بإعطاء اصغر قيمة في قواعد البيانات وفق شرط معين
أمثلة:
1- ما هو اصغر اجر قاعدي للعمال؟
2- ما هو اصغر سن للعمال؟
الدالة AVG تسمح لك هذه الدالة بإعطاء متوسط معدل قيم - تقوم الدالة بتقريب القيمة إلى اقرب قيمة صحيحة لكون نوع المتغير age من نوح صحيح integer
مثال : ما هو معدل أعمار العمال ؟
تقوم الدالة بالعملية التاليةage/nbr travailleur ∑
الدالة SUM تقوم الدالة السابقة بإعطاء مجموع قيم حقل ما
مثال : ما هي قيمة الأجور الموجه للعاملات ؟
الدالة Ordre by تسمح لك الدالة السابقة بترتيب قيم جدول حسب حقل محدد
مثال : نريدعرض قائمة العمال الذين سنهم أكبرمن30بحيثيظهرترتيبالأسماءتصاعديًا
وإذا أردنا عرض قائمة العمال الذين سنهم أكبرمن30بحيثيظهرترتيبالأسماءتنازليا ..نستعمل الأمر desc
نريدعرض قائمة العمال الذين سنهم أكبرمن30بحيثيظهرترتيبالأسماء ثم الألقابتصاعديًا
-2إنشاء وتصميم قواعد البيانات بواسطة أوامر SQL
يمكن تصميم قواعد البيانات بلمسات برمجية دينامكية وأكثر سهولة ومرونة من تصميمها باستعمال برنامج متخصص
مفاهيم :
Prymary key : تسمح لك ها ته التعليمة بتحديد المفتاح الأساسي لقاعدة البيانات فبعوض استعمال الرمز (*) لتعين فهرسة البيانات حسب الحقل المحدد في module de base de donnée نستعمل التعليمة السابقة لتحديد الحقول التي يمكن البحث بواسطتها
الصيغة العامة :
CREATE TABLE "nom de table. extension " nom de champ1 paramètres , nom de champ2 paramètres… nom de champs paramètres
,primary key(noms des champs)
بعض أنواع المتغيرات :
1- CHAR متغير حرفي
2- NUMERIC متغير رقمي
3- DATE متغير من نوع تاريخ
4- TIME :متغير من نوع وقت
سنحاول تصميم قاعدة البيانات التالية :chauffeur (N- permis,nom,prénom,daten , adrss ,age ,type_p ,sex.)
Nom de champ
Type de champ
Taille
index
Num_permis
A :alphabétique → char
6
*
Nom
A :alphabétique → char
20
Prenom
A :alphabétique → char
20
daten
D:date
adress
A :alphabétique → char
30
age
I: numerique → numeric
10:deux hombre
sex
A :alphabétique → char
1
Type_p
A :alphabétique → char
15
CREATE TABLE "chauffeur"
(Num_permis CHAR(6),nom CHAR(15), prénom CHAR (20),daten DATE , adress CHAR (40),age NUMERIC(10), sex CHAR (1),type_p CHAR (15), PRIMARY KEY (Num_permis))
إذا أردت تحديد مكان قاعدة البيانات السابقة ستجدها في alias تحت اسم travail
أو قم بتتبع صيغة البلوغ التالية : C:\Program Files\Fichiers communs\Borland Shared\Data
ملاحظة :الفهرس الأب(C:/D:/E:/F:…) يختلف باختلاف مكان تنصيب برنامج :module de base de donnée
في هذه الحالة لقد قمنا بتصميم قاعدة البيانات chauffeur بواسطة استعمال أوامر SQL المتاحة
حاول فتح قاعدة البيانات السابقة chauffeur ولاحظ بنية حقولها :
لاحــظ الشكل التالي :
قم بحجز البيانات حسب الشكل التالي :
تصميم برنامج في دلفي لتنفيذ أوامر SQL ذاتيا
خطوات البرمجة :
1. فتح مشروعا جديدا
2. احضر المركبتينquery و tableمن شريط المكبات Access BD
3. إضافة المركبتين data source1 ,data source2
4. إضافة المركبتين dbgride1 ,dbgrid2
5. إضافة المركبة bouton
6. إضافة المركبة memo1
ملاحظات :سبق وان قمنا بإنشاء قاعدة البيانات chauffeur.db بواسطة module base de données وتم حفظها في الــ:alias التالية :laoubi_adel الآن سنقوم بعملية الربط الفيزيائية للمركبات الخاصة بالبيانات
1-ربط المركبة table1 بقاعدة البيانات الفيزيائية
آلية التنفيذ :
1- تحديد المركبة table1
2- تغيير الخاصية data base name بــ:alias --laoubi_adel
3- تحديد اسم قاعدة البيانات بواسطة الخاصية table name وذلك باختيار travailleur.db
4- تفعيل وفتح قاعدة البيانات بواسطة الخيار active :=true ;
2- ربط المركبة data source1 بـ table1
آلية التنفيذ:
1- تحديد المركبة data source1
2- تغيير الخاصية data set بــ table1
3-ربط المركبة dbgrid1 بالمركبة data source1
آلية التنفيذ
1- تحديد المركبة dbgrid1
2- تغيير الخاصية data source بــ :data source1
ملاحظة : ربط المركبة query1 بـنفس laoubi_adel …………alias
- ربط المركبة query1 مع المركبة data source2 بنفس الطريقة السابقة وكذلك بالنسبة لعملية الربط بين
Dbgrid2 و data source2
قم بمحو المحتوى memo1 الموجود في المركبة memo1 وذلك بواسطة الخاصية string
ربط المركبات برمجيا :
يمكنك ربط المركبات السابقة برمجيا وذلك بتحرير الأوامر التالية في المركبة botton1
Begin
Table1.databasename :=’laoubi_adel’;
Data source1.data set :=table1;
Dbgrid1.datasource:=datasource1;
Table1.active:=true;
Query1.databasename :=’laoubi_adel’;
Data source2.data set :=query1;
Dbgrid2.datasource:=datasource2;
End:
dbgrid1
Dbgrid2
Data base
name
- بعد عملية الربط الفيزيائية سنقوم الآن بعملية البرمجة
- قم بتسمية ماهية الزر bouton1 بــ :exécuté SQL وذلك بواسطة الخاصية :caption
انقر نقرا مزدوجا على المركبة bouton1 وحرر الأمر التالي :
Query1.sql :=memo1.lines ;
Query1.open ;
ملاحظات: البرنامج السابق ليس مكيف للعمل مع قاعدة البيانات chauffeur فقط. يمكن تطوير البرنامج وذلك بإضافة خيارات تحديد اسم قاعدة البيانات والــ: alias المتواجدة بها ..
الطباعة في دلفي :
يتيح لك دلفي إمكانية التعامل مع البيانات وطباعتها وذلك بتوفير مجموعة لا بأس بها من المركبات .سأحاول تقديم شرح لكيفية التعامل مع الطباعة من ناحية :
1- طباعة البيانات
2- طباعة الصور
3- ........
تعريف المركبة : QuickRep1 تسمح لك هذه المركبة بطباعة البيانات مع إضافة خيرات متعددة
يمكنك تحديد إيجاد المركبة السابقة في شريط المركبات Qreport
1
2
3
4
5
شرح بعض مركبات الشريط Qreport
1- المركبة
2- المركبة Qelabel
3- المركبة Qrdbtext
المركبة
التعيين
QuickRep1
صفحة العمل والعرض والطباعة
Qlabel
لتحديد العناوين والكتابة مثال رقم الهاتف .الاسم....
Qrdbtext
لعرض قيم الحقول
QRSysData1
لعرض أدوات النظام مثل الساعة التاريخ...رقم الصفحة ...
QRExpr1
لعرض تعليق أو عبارة
1
2
3
4
شرح الخاصية Bands
تسمح لك هذه الخاصية بعرض أجزاء ورقة العمل وذلك وفق الجدول التالي :
المركبة
الدلالة
1
لعرض عناوين الأعمدة
2
لعرض التفاصيل
3
لعرض ملخص الصفة
4
لعرض مقدمة محتوى الصفحة
تخطيط ورقة الطباعة وتصميمها :
سنحاول تصميم وتخطيط ورقة الطباعة حسب قاعدة البيانات chauffeur . db
chauffeur (N- permis,nom,prénom,daten , adrss ,age ,type_p ,sex.)
لدينا عدد الحقول =8 حقول هذا يعني انه يلزمنا:
1- إحضار14 مركبات من نوعQlabel
2- إحضار 8 مركبات من نوع Qrdbtext
إليك تصميم الصفحة المقترح :
أولا وقبل كل شيء قم بتصميم نافذة صارمة وذلك على نحو الشكل التالي لمزيد من المعلومات راجع الجزء الثاني من إصدار هذا الكتاب .
طباعة
بعد القيام بعملية التصميم سنحاول الآن تصميم صفحة الطباعة على النحو التالي :
La république algérienne démocratique et populaire
Ministre de transport
Direction de m’sila
Secteur de : ain el hadjel
Fiche conducteur
Numéro de permis :……………….
Nom :…………….. Prénom. :…………….
Date de naissance :…………….. sex. :…………
Adresse :…………………………………….
Type de permis :…………………age :……...
Dérecteur
Qrlabel
Qrlabe2
Qrlabe3
Qrlabe4
Qrlabe5
Qrlabe6. :……………….
QRLabel7 :………QRLabel8. :……………
QRLabel9:…………. QRLabel10:…………
QRLabel1:…………… ……………….
QRLabel2:……………… QRLabel3:……...
Qrlabel4
عند التمعن في تصميم الورقة نلاحظ ما يلي :
1- إن رأس الصفحة يحتوي على بيانات لا تتغير على الأقل مبدئيا وهذه المعلومات هي :
La république algérienne démocratique et populaire الدولة
Ministre de transport الوزارة الوصية
Direction de m’silaالمديرية
Secteur de : ain el hadjelالفرع
Fiche conducteur اسم الوثيقة
2-عناوين الحقول : وهي دلالات لتحديد ماهية المعلومة
Numéro de permis :………………رقم الرخصة.
Nom :………اللقب…….. Prénom. :……الاسم……….
Date de naissance :… …تاريخ الميلاد….. sex. :الجنس
Adresse :……العنوان……….
Type de permis :……نوع الرخصة……age :…السن…...
Dérecteur المدير
وهي دائما ثابتة ولا تتغير إلا في حالة تغير تصميم الورقة الإداري وهنا يقوم المبرمج بإعادة حل البرنامج وتغيير ما يجب تغييره
ملاحظات : نلاحظ إن عدد القيم المتغيرة في كل حالة هي :8 قيم وذلك راجع لعدد الحقول المراد طباعتها وفي حالتنا هذه لدينا 8 حقول و الخاصة بقاعدة البيانات(chauffeur) حيث انه لابد أن يكون عدد البيانات مراد عرضها متوافق مع عدد المركبة Qrdbtext المتخصصة في عرض قي التسجيلية الحالية
Numéro de permis :……………Qdbtext1.
Nom :… Qdbtext2. …….. Prénom. :…… Qdbtext3.
Date de naissance :…Qdbtext4. sex. : Qdbtext5.
Adresse :…… Qdbtext6.
Type de permis : … Qdbtext7.……age :… Qdbtext8.
لاحظ الشكل التالي :
-2- مخطط توضيحي لتنظيم تموقع المركبات Qdbtext
تطبيق التصميم على ورقة الطباعة : QuickRep1 في دلفي
في نفس المشروع السابق قم بما يلي :
1 - بإحضار المركبة QuickRep1 من شريط المركبات :Qerport
2 قم بتفعيل النطاق détail وذلك من خلال الخاصية bands
3 قم بتوسيع النطاق détail لكي يتناسب مع عدد بياناتك
4 قم بإحضار 14 مركبة من نوع Qrlabel
5 حاول تصميم ورقة الطباعة وذل بتوزيع المركبات السابقة في نطاق الورقة كما هو محدد في الشكل -2-
6 قم بتغيير محتوى المركبات بواسطة تحديد الخاصية Caption على النحو التالي :
- Qrlabel.caption :=( La république algérienne démocratique et populaire)
- Qrlabe2.caption :=( Ministre de transport)
- Qrlabe3.caption :=( Direction de m’sila)
- Qrlabe4.caption :=( Secteur de : ain el hadjel)
- Qrlabel5.caption :=( Fiche conducteur)
- Qrlabe6.caption :=(numéro de permis)
- Qrlabe7.caption :=(Nom)
- Qrlabe8.caption :=(Prénom)
- Qrlabe9.caption :=(Date de naissance)
- Qrlabel0.caption :=(Sex.)
- Qrlabel1.caption :=(type de permis)
- Qrlabel2.caption :=(age)
- Qrlabel3.caption :=(Nom)
- Qrlabel.caption :=(directeur)
بعد القيام بعملية توزيع المركبات
8-قم بإحضار 8 مركبات من نوع dbqrlabel من نفس شريط المركبات :Qerport
9-قم بتخصيص موقع هذه المركبات الثمانية بحسب تموقع عناوين الحقول وذلك حسب الشكل -2-
ربط المركبات Qrdbtext مع حقول قاعدة البيانات chauffeur
لنفرض أن مكان تواجد المركبة : QuickRep1في form1 أي أننا سنستعمل نفس المركبتين table1 وdata source1
وذلك من اجل إحضار البيانات وعرضه على ورقة الطباعة .
آلية الربط :
1- قم بتحديد المركبة Qrdbtext1
2- قم بتغيير محتوى الخاصية data set ب القيمة table1
3- قم بتحديد الحقل المراد عرضه من خلال تحديد قيمته من الخاصية data Field
ملاحظة : ان عملية ربط الحقول في ورقة الطباعة هي نفسها تقريبا عند ربط الحقول من اجل عملية عرض البيانات :
لاحظ الشكل التالي :
قم بتكرير نفس العملية مع باقي المركبات مع مراعاة عنوان الحقل (تحديد قيمة الحقل حسب دلالة العرض)
صفحة الطباعة بعد القيام بعملية الربط
1:-عنوان الحقل 2:-قيمة الحقل(بالنسبة للتسجيلة النشطة )
1
21
الآن لم يبق لنا إلا تحديد مكان لورقة الطباعة وذلك بالقيام بعملية إخفائها لكي لا تشوه هيئة البرنامج أثناء التنفيذ
ثم تحرير الأمر التالي : في الزر BOUTTON الذي يحمل الدلالة imprimer (on click)
begin
QuickRep1.preview;
end;
من المعروف أن عملية الطباعة تكون حسب المنهج التالي :
1- البحث عن البيانات المراد طباعتها
2- التأكد من المعلومة
3- عملية الطباعة
مثال : نريد طباعة بيانات السائق الذي يحمل رخصة السياقة رقم :001254
1- حجز قيمة رقم رخصته
2- البحث عن القيمة
3- طباعة البيانات في حالة وجودها
الشكل النهائي لورقة الطباعة
27
هناك عدة خيارات يمكن تطبيقها على ورقة الطباعة كرسم الجداول وإضافة دوال الحساب و الصور ....الخ
لكن نكتفي بهذا القدر .....:mh31::mh31::mh31::mh31::mh31::mh31:
الموضوع: SQL
SQL(S :stricture L :******** Q :query) لغة الاستعلامات البنيوية
وهي عبارة عن مجموعة من الاستعلامات المطبقة من اجل البحث عن معطيات في قواعد البيانات
LMD(L: ******** M: manipulation D: données) لغة استغلال البيانات
الصيغة العامة :
Select attr1,attr2,,,attrn أسماء الخصائص
From nom de table اسم قاعدة البيانات
Where condition الشرط
مثال1 : إليك قاعدة البيانات التالية : Travailleur (code,nom , prénom ,daten , age , adrs,salaire ,sex)
Code
Nom
Prénom
Daten
Age
Adresse
Salaire
sex
001
Bel hadi
bachir
02/11/1975
35
Rue 48
147000
H
002
Fadli
djamel
12/03/1975
35
Rue12
120000
H
003
ghadbane
doaa
10/07/1980
30
Rue h11
115000
F
004
Zaidi
Kamel
03/06/1976
34
Rue 48
175000
H
005
Laoubi
Adel
07/03/1983
27
Rue somam
175000
H
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H
007
Sadaoui
doaa
12/12/1975
35
Sidi aiche
70000
F
008
Khebal
Khemissi
10/11/1970
40
Rue ch-ben yattou
195000
H
009
Fadli
Mohamed
02/11/1975
35
Rue ch-ben yattou
230000
H
010
Nekbil
Kamel
10/10/1978
32
Rue 12
275000
H
Nom
Prénom
Bel hadi
bachir
Fadli
djamel
ghadbane
doaa
Zaidi
Kamel
Laoubi
Adel
Kouidri
Nourdine
Sadaoui
doaa
Khebal
Khemissi
Fadli
Mohamed
Nekbil
Kamel
-ما هي أسماء و ألقاب جميع العمال ؟
Select nom ,prénom
From travailleur
ما هي قائمة العمال الذين أجرهم القاعدي اكبر من 195000
Select *
From travailleur
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H
009
Fadli
Mohamed
02/11/1975
35
Rue ch-ben yattou
230000
H
010
Nekbil
Kamel
10/10/1978
32
Rue 12
275000
H
Where salaire >195000
أعط أسماء العمال الذين أجرهم القاعدي =7000
Select prénom
From travailleur
where salaire =70000
doaa
أعط القائمة الكاملة لجميع العاملات
Select *
From travailleur
003
ghadbane
doaa
10/07/1980
30
Rue h11
115000
F
007
Sadaoui
doaa
12/12/1975
35
Sidi aiche
70000
F
Where sex=’f’
ما هو اسم .لقب و عنوان العامل الذي رقمه = 005؟
Select adresse
From. travailleur
Where code =’005’
Code
Nom
Prénom
Adresse
005
Laoubi
Adel
Rue somam
أعط القائمة الاسمية للعمال الذين المولودين قبل بعد تاريخ :10/07/1980
Select *
From travailleur
Code
Nom
Prénom
Daten
Age
Adresse
Salaire
sex
005
Laoubi
Adel
07/03/1983
27
Rue somam
175000
H
006
Kouidri
Nourdine
06/07/1981
29
Rue 14
230000
H
Where daten >10/07/1980
التعامل مع SQL في دلفي :
-1 بواسطة برنامج :module de base de données
يسمح لك دلفي بالتعامل مع SQL وذلك بواسطة احد برامجه الفرعية module de base de données : الذي سبق وان تطرقنا إليه
كيف السبيل إلى ذلك ؟
1- لتسهيل مهمة التعامل مع SQL لابد من توفر بعض الشروط المهمة ز
1- وجود ALIAS
2- هندسة للقواعد البيانات تكون منطقية
3- ......
4- ......
آلية التنفيذ :
1- نفذ برنامج module de base données
2- قم بفتح القائمة fichier
3- اختر الأمر nouveau/ fiche SQL
تلاحظ ظهور محرر الأوامر الخاص ب SQL
6
5
4
3
2
1
x
x : شريط المركبات الخاص بمحرر SQL
1- تحديد alias مكان تواجد قواعد البيانات
2- البحث عن عبارة ة ما في محرر SQL
3-تنفيذ المساءلة SQL
4- عملية الصق coller
5-عملية النسخ copier
6- عملية القص couper
ملاحظة : لقد سبق وان شرحت آلية إنشاء alias في module base de données
لتكن alias التالية laoubi_adel و التي تحوي قاعدة البيانات السابقة –(travailleur)
لابد من تحديد الـalias قبل بداية العمل
آلية تحديد alias
1- انقر على القائمة SQL
2- اختر الآمر sélectionne un alias
3- قم بتحديد الــ alias التي أنشأتها مسبقا لاحتواء قواعد البيانات فعلى سبيل المثال :laoubi_adel
4- انقر على ok
أو انقر على المركبة ذات الدلالة (1) في الشكل (x)
لاحظ الرسومات التالية :
بعد تحديد alias العمل نبدأ في تحرير المساءلات السابقة
ما هي قائمة جميع العمال ؟
-ما هي أسماء و ألقاب جميع العمال ؟
ما هي قائمة العمال الذين أجرهم القاعدي اكبر من195000؟
أعط أسماء العمال الذين أجرهم القاعدي =7000 ؟
أعط القائمة الكاملة لجميع العاملات
ما هو الاسم الكامل و عنوان العامل الذي رقمه =005 ؟
أعط القائمة الاسمية للعمال الذين المولودين قبل بعد تاريخ :10/07/1980 ؟
بعض أوامر SQL
الأمر AND
يسمح لك الأمر السابق بدمج شرطين أو أكثر في علية البحث
مثال : أعط القائمة الاسمية للعمال الذين سنهم =35 وأجرهم القاعدي يفوق 20000
select *
from travailleur
where age=35 and salaire >20000
أعط القائمة الاسمية للعمال الذكور الذين سنهم =35 و أجرهم القاعدي اقل من 23000
الأمر BETWEEN يسمح لك هذا الأمر بالبحث عن مجموعة من البيانات وفق حصر شرط البحث بين قيمتين
إليك مثال :
1- أعط قائمة العمال الذين سنهم يتراوح بين 27و30 سنة
2- أعط قائمة العاملات اللائي أجرهم القاعدي محصور بين 175000 و 195000
الأمر NOT BETWEEN يعمل هذا الأمر عكس عمل الأمر السابق حيث يعطيك مجموعة قيم خارج مجال معين سنطبق هذا الاخير على المساءلتين السابقتين
3- أعط قائمة العمال الذين سنهم يتراوح خارج المجال ( 27...30) سنة
4- أعط قائمة العاملات اللائي أجرهم القاعدي الغير محصور بين 175000 و 195000
الأمر LIKE تسمح التعليمة السابقة بالبحث عن جزء من معلومة إن صح التعبير.
إليك المثالين التاليين :
1- ما هي قائمة العمال الذين اسمهم يبدأ بــ: d؟
2- ما هي قائمة العمال الذين يبدأ لقبهم بــ:f؟
3- ما هي قائمة العمال الذين يبدأ اسمهم بــ:a وطوله 4؟
ملاحظات : يستعمل الرمز% ) (←لا يهم عدد الأحرف
يستعمل _ (alt.+92) لتحديد عدد الأحرف
الأمر COUNT
لتحديد عدد السجلات الموجود وفق الشرط المطروح
إليك المثال التالي
ما هو عدد العمال الذين سنهم < 30 سنة؟
النتيجة تكون 6 أي عدد العمال الذين هم اكبر من سن 30 سنة هم ستة عمال
الدالة MAX تسمح لك الدالة السابقة بإعطاء اكبر قيمة في قواعد البيانات وفق شرط معين
أمثلة:
1- ما هو اكبر اجر قاعدي للعمال؟
2- ما هو اكبر سن للعمال؟
الدالة MINتسمح لك الدالة السابقة بإعطاء اصغر قيمة في قواعد البيانات وفق شرط معين
أمثلة:
1- ما هو اصغر اجر قاعدي للعمال؟
2- ما هو اصغر سن للعمال؟
الدالة AVG تسمح لك هذه الدالة بإعطاء متوسط معدل قيم - تقوم الدالة بتقريب القيمة إلى اقرب قيمة صحيحة لكون نوع المتغير age من نوح صحيح integer
مثال : ما هو معدل أعمار العمال ؟
تقوم الدالة بالعملية التاليةage/nbr travailleur ∑
الدالة SUM تقوم الدالة السابقة بإعطاء مجموع قيم حقل ما
مثال : ما هي قيمة الأجور الموجه للعاملات ؟
الدالة Ordre by تسمح لك الدالة السابقة بترتيب قيم جدول حسب حقل محدد
مثال : نريدعرض قائمة العمال الذين سنهم أكبرمن30بحيثيظهرترتيبالأسماءتصاعديًا
وإذا أردنا عرض قائمة العمال الذين سنهم أكبرمن30بحيثيظهرترتيبالأسماءتنازليا ..نستعمل الأمر desc
نريدعرض قائمة العمال الذين سنهم أكبرمن30بحيثيظهرترتيبالأسماء ثم الألقابتصاعديًا
-2إنشاء وتصميم قواعد البيانات بواسطة أوامر SQL
يمكن تصميم قواعد البيانات بلمسات برمجية دينامكية وأكثر سهولة ومرونة من تصميمها باستعمال برنامج متخصص
مفاهيم :
Prymary key : تسمح لك ها ته التعليمة بتحديد المفتاح الأساسي لقاعدة البيانات فبعوض استعمال الرمز (*) لتعين فهرسة البيانات حسب الحقل المحدد في module de base de donnée نستعمل التعليمة السابقة لتحديد الحقول التي يمكن البحث بواسطتها
الصيغة العامة :
CREATE TABLE "nom de table. extension " nom de champ1 paramètres , nom de champ2 paramètres… nom de champs paramètres
,primary key(noms des champs)
بعض أنواع المتغيرات :
1- CHAR متغير حرفي
2- NUMERIC متغير رقمي
3- DATE متغير من نوع تاريخ
4- TIME :متغير من نوع وقت
سنحاول تصميم قاعدة البيانات التالية :chauffeur (N- permis,nom,prénom,daten , adrss ,age ,type_p ,sex.)
Nom de champ
Type de champ
Taille
index
Num_permis
A :alphabétique → char
6
*
Nom
A :alphabétique → char
20
Prenom
A :alphabétique → char
20
daten
D:date
adress
A :alphabétique → char
30
age
I: numerique → numeric
10:deux hombre
sex
A :alphabétique → char
1
Type_p
A :alphabétique → char
15
CREATE TABLE "chauffeur"
(Num_permis CHAR(6),nom CHAR(15), prénom CHAR (20),daten DATE , adress CHAR (40),age NUMERIC(10), sex CHAR (1),type_p CHAR (15), PRIMARY KEY (Num_permis))
إذا أردت تحديد مكان قاعدة البيانات السابقة ستجدها في alias تحت اسم travail
أو قم بتتبع صيغة البلوغ التالية : C:\Program Files\Fichiers communs\Borland Shared\Data
ملاحظة :الفهرس الأب(C:/D:/E:/F:…) يختلف باختلاف مكان تنصيب برنامج :module de base de donnée
في هذه الحالة لقد قمنا بتصميم قاعدة البيانات chauffeur بواسطة استعمال أوامر SQL المتاحة
حاول فتح قاعدة البيانات السابقة chauffeur ولاحظ بنية حقولها :
لاحــظ الشكل التالي :
قم بحجز البيانات حسب الشكل التالي :
تصميم برنامج في دلفي لتنفيذ أوامر SQL ذاتيا
خطوات البرمجة :
1. فتح مشروعا جديدا
2. احضر المركبتينquery و tableمن شريط المكبات Access BD
3. إضافة المركبتين data source1 ,data source2
4. إضافة المركبتين dbgride1 ,dbgrid2
5. إضافة المركبة bouton
6. إضافة المركبة memo1
ملاحظات :سبق وان قمنا بإنشاء قاعدة البيانات chauffeur.db بواسطة module base de données وتم حفظها في الــ:alias التالية :laoubi_adel الآن سنقوم بعملية الربط الفيزيائية للمركبات الخاصة بالبيانات
1-ربط المركبة table1 بقاعدة البيانات الفيزيائية
آلية التنفيذ :
1- تحديد المركبة table1
2- تغيير الخاصية data base name بــ:alias --laoubi_adel
3- تحديد اسم قاعدة البيانات بواسطة الخاصية table name وذلك باختيار travailleur.db
4- تفعيل وفتح قاعدة البيانات بواسطة الخيار active :=true ;
2- ربط المركبة data source1 بـ table1
آلية التنفيذ:
1- تحديد المركبة data source1
2- تغيير الخاصية data set بــ table1
3-ربط المركبة dbgrid1 بالمركبة data source1
آلية التنفيذ
1- تحديد المركبة dbgrid1
2- تغيير الخاصية data source بــ :data source1
ملاحظة : ربط المركبة query1 بـنفس laoubi_adel …………alias
- ربط المركبة query1 مع المركبة data source2 بنفس الطريقة السابقة وكذلك بالنسبة لعملية الربط بين
Dbgrid2 و data source2
قم بمحو المحتوى memo1 الموجود في المركبة memo1 وذلك بواسطة الخاصية string
ربط المركبات برمجيا :
يمكنك ربط المركبات السابقة برمجيا وذلك بتحرير الأوامر التالية في المركبة botton1
Begin
Table1.databasename :=’laoubi_adel’;
Data source1.data set :=table1;
Dbgrid1.datasource:=datasource1;
Table1.active:=true;
Query1.databasename :=’laoubi_adel’;
Data source2.data set :=query1;
Dbgrid2.datasource:=datasource2;
End:
dbgrid1
Dbgrid2
Data base
name
- بعد عملية الربط الفيزيائية سنقوم الآن بعملية البرمجة
- قم بتسمية ماهية الزر bouton1 بــ :exécuté SQL وذلك بواسطة الخاصية :caption
انقر نقرا مزدوجا على المركبة bouton1 وحرر الأمر التالي :
Query1.sql :=memo1.lines ;
Query1.open ;
ملاحظات: البرنامج السابق ليس مكيف للعمل مع قاعدة البيانات chauffeur فقط. يمكن تطوير البرنامج وذلك بإضافة خيارات تحديد اسم قاعدة البيانات والــ: alias المتواجدة بها ..
الطباعة في دلفي :
يتيح لك دلفي إمكانية التعامل مع البيانات وطباعتها وذلك بتوفير مجموعة لا بأس بها من المركبات .سأحاول تقديم شرح لكيفية التعامل مع الطباعة من ناحية :
1- طباعة البيانات
2- طباعة الصور
3- ........
تعريف المركبة : QuickRep1 تسمح لك هذه المركبة بطباعة البيانات مع إضافة خيرات متعددة
يمكنك تحديد إيجاد المركبة السابقة في شريط المركبات Qreport
1
2
3
4
5
شرح بعض مركبات الشريط Qreport
1- المركبة
2- المركبة Qelabel
3- المركبة Qrdbtext
المركبة
التعيين
QuickRep1
صفحة العمل والعرض والطباعة
Qlabel
لتحديد العناوين والكتابة مثال رقم الهاتف .الاسم....
Qrdbtext
لعرض قيم الحقول
QRSysData1
لعرض أدوات النظام مثل الساعة التاريخ...رقم الصفحة ...
QRExpr1
لعرض تعليق أو عبارة
1
2
3
4
شرح الخاصية Bands
تسمح لك هذه الخاصية بعرض أجزاء ورقة العمل وذلك وفق الجدول التالي :
المركبة
الدلالة
1
لعرض عناوين الأعمدة
2
لعرض التفاصيل
3
لعرض ملخص الصفة
4
لعرض مقدمة محتوى الصفحة
تخطيط ورقة الطباعة وتصميمها :
سنحاول تصميم وتخطيط ورقة الطباعة حسب قاعدة البيانات chauffeur . db
chauffeur (N- permis,nom,prénom,daten , adrss ,age ,type_p ,sex.)
لدينا عدد الحقول =8 حقول هذا يعني انه يلزمنا:
1- إحضار14 مركبات من نوعQlabel
2- إحضار 8 مركبات من نوع Qrdbtext
إليك تصميم الصفحة المقترح :
أولا وقبل كل شيء قم بتصميم نافذة صارمة وذلك على نحو الشكل التالي لمزيد من المعلومات راجع الجزء الثاني من إصدار هذا الكتاب .
طباعة
بعد القيام بعملية التصميم سنحاول الآن تصميم صفحة الطباعة على النحو التالي :
La république algérienne démocratique et populaire
Ministre de transport
Direction de m’sila
Secteur de : ain el hadjel
Fiche conducteur
Numéro de permis :……………….
Nom :…………….. Prénom. :…………….
Date de naissance :…………….. sex. :…………
Adresse :…………………………………….
Type de permis :…………………age :……...
Dérecteur
Qrlabel
Qrlabe2
Qrlabe3
Qrlabe4
Qrlabe5
Qrlabe6. :……………….
QRLabel7 :………QRLabel8. :……………
QRLabel9:…………. QRLabel10:…………
QRLabel1:…………… ……………….
QRLabel2:……………… QRLabel3:……...
Qrlabel4
عند التمعن في تصميم الورقة نلاحظ ما يلي :
1- إن رأس الصفحة يحتوي على بيانات لا تتغير على الأقل مبدئيا وهذه المعلومات هي :
La république algérienne démocratique et populaire الدولة
Ministre de transport الوزارة الوصية
Direction de m’silaالمديرية
Secteur de : ain el hadjelالفرع
Fiche conducteur اسم الوثيقة
2-عناوين الحقول : وهي دلالات لتحديد ماهية المعلومة
Numéro de permis :………………رقم الرخصة.
Nom :………اللقب…….. Prénom. :……الاسم……….
Date de naissance :… …تاريخ الميلاد….. sex. :الجنس
Adresse :……العنوان……….
Type de permis :……نوع الرخصة……age :…السن…...
Dérecteur المدير
وهي دائما ثابتة ولا تتغير إلا في حالة تغير تصميم الورقة الإداري وهنا يقوم المبرمج بإعادة حل البرنامج وتغيير ما يجب تغييره
ملاحظات : نلاحظ إن عدد القيم المتغيرة في كل حالة هي :8 قيم وذلك راجع لعدد الحقول المراد طباعتها وفي حالتنا هذه لدينا 8 حقول و الخاصة بقاعدة البيانات(chauffeur) حيث انه لابد أن يكون عدد البيانات مراد عرضها متوافق مع عدد المركبة Qrdbtext المتخصصة في عرض قي التسجيلية الحالية
Numéro de permis :……………Qdbtext1.
Nom :… Qdbtext2. …….. Prénom. :…… Qdbtext3.
Date de naissance :…Qdbtext4. sex. : Qdbtext5.
Adresse :…… Qdbtext6.
Type de permis : … Qdbtext7.……age :… Qdbtext8.
لاحظ الشكل التالي :
-2- مخطط توضيحي لتنظيم تموقع المركبات Qdbtext
تطبيق التصميم على ورقة الطباعة : QuickRep1 في دلفي
في نفس المشروع السابق قم بما يلي :
1 - بإحضار المركبة QuickRep1 من شريط المركبات :Qerport
2 قم بتفعيل النطاق détail وذلك من خلال الخاصية bands
3 قم بتوسيع النطاق détail لكي يتناسب مع عدد بياناتك
4 قم بإحضار 14 مركبة من نوع Qrlabel
5 حاول تصميم ورقة الطباعة وذل بتوزيع المركبات السابقة في نطاق الورقة كما هو محدد في الشكل -2-
6 قم بتغيير محتوى المركبات بواسطة تحديد الخاصية Caption على النحو التالي :
- Qrlabel.caption :=( La république algérienne démocratique et populaire)
- Qrlabe2.caption :=( Ministre de transport)
- Qrlabe3.caption :=( Direction de m’sila)
- Qrlabe4.caption :=( Secteur de : ain el hadjel)
- Qrlabel5.caption :=( Fiche conducteur)
- Qrlabe6.caption :=(numéro de permis)
- Qrlabe7.caption :=(Nom)
- Qrlabe8.caption :=(Prénom)
- Qrlabe9.caption :=(Date de naissance)
- Qrlabel0.caption :=(Sex.)
- Qrlabel1.caption :=(type de permis)
- Qrlabel2.caption :=(age)
- Qrlabel3.caption :=(Nom)
- Qrlabel.caption :=(directeur)
بعد القيام بعملية توزيع المركبات
8-قم بإحضار 8 مركبات من نوع dbqrlabel من نفس شريط المركبات :Qerport
9-قم بتخصيص موقع هذه المركبات الثمانية بحسب تموقع عناوين الحقول وذلك حسب الشكل -2-
ربط المركبات Qrdbtext مع حقول قاعدة البيانات chauffeur
لنفرض أن مكان تواجد المركبة : QuickRep1في form1 أي أننا سنستعمل نفس المركبتين table1 وdata source1
وذلك من اجل إحضار البيانات وعرضه على ورقة الطباعة .
آلية الربط :
1- قم بتحديد المركبة Qrdbtext1
2- قم بتغيير محتوى الخاصية data set ب القيمة table1
3- قم بتحديد الحقل المراد عرضه من خلال تحديد قيمته من الخاصية data Field
ملاحظة : ان عملية ربط الحقول في ورقة الطباعة هي نفسها تقريبا عند ربط الحقول من اجل عملية عرض البيانات :
لاحظ الشكل التالي :
قم بتكرير نفس العملية مع باقي المركبات مع مراعاة عنوان الحقل (تحديد قيمة الحقل حسب دلالة العرض)
صفحة الطباعة بعد القيام بعملية الربط
1:-عنوان الحقل 2:-قيمة الحقل(بالنسبة للتسجيلة النشطة )
1
21
الآن لم يبق لنا إلا تحديد مكان لورقة الطباعة وذلك بالقيام بعملية إخفائها لكي لا تشوه هيئة البرنامج أثناء التنفيذ
ثم تحرير الأمر التالي : في الزر BOUTTON الذي يحمل الدلالة imprimer (on click)
begin
QuickRep1.preview;
end;
من المعروف أن عملية الطباعة تكون حسب المنهج التالي :
1- البحث عن البيانات المراد طباعتها
2- التأكد من المعلومة
3- عملية الطباعة
مثال : نريد طباعة بيانات السائق الذي يحمل رخصة السياقة رقم :001254
1- حجز قيمة رقم رخصته
2- البحث عن القيمة
3- طباعة البيانات في حالة وجودها
الشكل النهائي لورقة الطباعة
27
هناك عدة خيارات يمكن تطبيقها على ورقة الطباعة كرسم الجداول وإضافة دوال الحساب و الصور ....الخ
لكن نكتفي بهذا القدر .....:mh31::mh31::mh31::mh31::mh31::mh31: