لغة معالجة البيانات (DML)Data Manipulation Language

Download Report

Transcript لغة معالجة البيانات (DML)Data Manipulation Language

‫الجزء الثاني‬
‫ يمكننا اختيار بيانات أو سجالت من قاعدة البيانات بشرط أو عدة شروط‬
.WHERE cluse ‫وذلك باستخدام‬
:‫ الصيغة العامة لجملة االستعالم‬
SELECT [DISTINCT|ALL] { * |
column_expression | [table.] column1[As
alias] [,[ table.] column2[As aliase ]
[,..]]}
FROM table_name [, … ]
[WHERE condition]
[GROUP BY column_list]
[HAVING condition]
[ORDER BY column_list [ASC|DESC]];
‫‪ ‬في جملة ال(‪)WHERE‬يمكننا استخدام خمسة مفاهيم أساسية يمكننا من خاللها البحث‬
‫عن بيانات معينة وهي‪:‬‬
‫‪ -1‬المقارنة‪ :‬يمكننا مقارنة قيمة بأخرى وذلك باستخدام )>< ‪(= , <, >, <=, >=,‬‬
‫‪ -2‬المدى‪ :‬يمكننا البحث عن قيمة معينة تقع في مدى أو مجال معين وذلك باستخدام‬
‫)‪(BETWEEN/ NOT BETWEEN‬‬
‫‪ -3‬المجموعة‪ :‬يمكننا البحث عن مجموعة من القيم وذلك باستخدام (‪)IN/ NOT IN‬‬
‫‪ -4‬الشبه أو التطابق‪ :‬يمكننا البحث عن قيمة تشبه نموذج معين باستخدام ( ‪LIKE/ NOT‬‬
‫‪)LIKE‬‬
‫‪ :)NULL( -5‬أي نبحث عما إذا كان العمود يحتوي على قيمة (‪ )NULL‬أم ال وذلك‬
‫باستخدام(‪)IS NULL/ IS NOT NULL‬‬
‫‪‬‬
‫أدوات المقارنة هي ‪= , < , > , <= , >= , <> :‬‬
‫‪‬‬
‫الصيغة العامة ‪:‬‬
‫|‪SELECT [DISTINCT|ALL] {* | column‬‬
‫}]…‪[column_expression [AS new_name]] [,‬‬
‫‪FROM‬‬
‫‪table_name‬‬
‫;]‪[WHERE condition‬‬
‫‪ ‬مالحظات‪ :‬في قاعدة البيانات ‪Access‬‬
‫• القيم النصية توضح بين عالمتي تنصيص " " أو ’ ‘‬
‫• التواريخ توضع بين العالمتين ‪# #‬‬
:‫ مثال‬
STAFF(sno, fname, lname, position, sex, dob, salary,
bno)
‫ إليجاد الموظفين الذين رواتبهم أكثر من‬SQL ‫المطلوب كتابة جملة‬
.‫ وعرض أرقامهم وأسماءهم وراتب كل منهم‬10000
:‫ الحل‬
SELECT sno, fname, lname, salary
FROM staff
WHERE salary > 10000;
Sno
FName
LName
Salary
SL21
John
White
30000
SG37
Ann
Beech
12000
SG14
David
Ford
18000
SG5
Susan
Brand
24000
‫‪ ‬مثال‪:‬‬
‫‪Student(std_id,std_name,bdate,std_national,dept_no,std_city,‬‬
‫)‪std_phone,std_password,nots‬‬
‫‪ ‬من العالقة السابقة المطلوب‪:‬‬
‫‪ -1‬كتابة استعالم يظهر أسماء الطالب الذين ولدوا قبل عام ‪1/1/1980‬‬
‫‪ ‬الحل‪:‬‬
‫‪ -2‬كتابة استعالم يظهر كل الطلبة معدا الطالب ذوالرقم ‪259090‬‬
‫‪ ‬الحل‪:‬‬
‫‪‬‬
‫‪‬‬
‫يمكننا استخدام الروابط المنطقية في جملة (‪ )WHERE‬لربط أكثر من شرط‪.‬‬
‫‪ ‬الروابط المنطقية هي‪:‬‬
‫‪ AND‬يعني و‪.‬‬
‫‪ OR‬يعني أو‪.‬‬
‫‪ NOT‬يعني النفي‪.‬‬
‫‪ ‬التنفيذ دائما يجري من اليسار إلى اليمين‪.‬‬
‫‪ ‬أولوية التنفيذ في جملة الشرط‪:‬‬
‫‪ ‬إذا كان في الجملة أقواس فإنه ينفذ ما بداخل األقواس‪.‬‬
‫‪NOT ‬‬
‫‪AND ‬‬
‫‪OR ‬‬
‫( ) يعني مابداخل القوسين‪.‬‬
:‫ مثال‬

STAFF(sno, fname, lname, position, sex, dob, salary, bno)
” ‫“ أو مساعد‬Manager“‫المطلوب إيجاد الموظفين الذين مرتبتهم الوظيفية مدير‬
.‫“ وعرض أرقامهم وأسماءهم والمرتبة‬Assistant
:‫ الحل‬
SELECT sno, fname, lname, position
FROM staff
WHERE position = ‘Manager’ OR position =
‘Assistant’;
Sno
FName
LName
position
SL21
John
White
Manager
SG37
Ann
Beech
Assistant
SA9
Mary
Howe
Assistant
SG5
Susan
Brand
Manager
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ BETWEEN‬تقوم بالبحث عن القيمة داخل مجال أو مدى معين محصور بين قيمتين‪.‬‬
‫‪ NOT BETWEEN‬تقوم بالبحث عن القيمة خارج مدى معين محصور بين قيمتين‪.‬‬
‫يمكن استخدام ‪ NOT BETWEEN‬ان اردنا الحصول على كافة السجالت باستثناء الجزء المحدد‬
‫نعتبر هذا االستعالم باستخدام ‪ BETWEEN‬بديال عن الربط بين قيمتين باستخدام ‪AND‬‬
‫‪‬‬
‫غالبا نستخدم (‪ )BETWEEN/ NOT BETWEEN‬مع األعمدة الرقمية وأعمدة التاريخ‬
‫‪‬‬
‫مثال‪:‬‬
‫)‪STAFF(sno, fname, lname, position, sex, dob, salary, bno‬‬
‫المطلوب إيجاد الموظفين الذين رواتبهم بين ‪20000‬و‪30000‬‬
‫‪‬‬
‫‪‬‬
‫الحل‪:‬‬
‫‪SELECT sno, fname, lname, salary‬‬
‫‪FROM staff‬‬
‫;‪WHERE salary BETWEEN 20000 AND 30000‬‬
‫أو‬
‫‪SELECT sno, fname, lname, salary‬‬
‫‪FROM staff‬‬
‫;‪WHERE salary >= 20000 AND salary <= 30000‬‬
Sno
FName
LName
Salary
SL21
John
White
30000
SG5
Susan
Brand
24000
:‫ مثال‬

User (id ,firstName,lastName,DOB,email,city)
‫المطلوب كتابة استعالم يظهر أسماء المستخدمين الذين تاريخ ميالدهم بين‬
1982/1/1 ‫ و بين‬1980/1/1
:‫ الحل‬
SELECT firstName, lastName
FROM User
WHERE DOB BETWEEN #1/1/1980 # AND
#1/1/1982#;
.‫ تعني الـبحث عن القيمة داخل مجموعة مكونة من عدة قيم‬IN
.‫ تعني البحث عن القيمة خارج المجموعة‬NOT IN
.OR ‫ بديل للرابط‬IN ‫نستطيع ان نقول ان معامل‬



:‫ مثال‬
STAFF(sno, fname, lname, position, sex, dob, salary, bno)
.‫المطلوب إيجاد عرض أرقام الموظفين المدراء أو المساعدين مع أسماؤهم ومراتبهم‬
:‫ الحل‬
SELECT sno, fname, lname, position
FROM staff
WHERE
position IN (‘Manager’, ‘Assistant’);

‫أو‬
SELECT sno, fname, lname, position
FROM staff
WHERE
position = ‘Manager’ OR position =
’Assistant’;
Sno
FName
LName
position
SL21
John
White
Manager
SG37
Ann
Beech
Assistant
SA9
Mary
Howe
Assistant
SG5
Susan
Brand
Manager
‫‪ ‬مثال‪:‬‬
‫‪Student(std_id,std_name,bdate,std_national,dept_no,std_city,‬‬
‫)‪std_phone,std_password,nots‬‬
‫‪‬‬
‫المطلوب كتابة استعالم يظهر أسماء الطالب الذين أرقامهم ‪ 221010‬أو‬
‫‪ 259090‬أو ‪269020‬‬
‫‪ ‬الحل‪:‬‬
‫(الحل يمكن أن يكون بطريقتين)‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫نستخدم )‪ (LIKE/ NOT LIKE‬وذلك للمقارنة والبحث عن قيم تشبه أو تطابق نموذج معين‪.‬‬
‫في قاعدة البيانات ‪ Access‬نستخدم التالي‪:‬‬
‫الرمز‬
‫?‬
‫ما يستعيض عنه‬
‫للتعويض مكان حرف واحد‬
‫*‬
‫للتعويض مكان أكثر من حرف‬
‫‪#‬‬
‫للتعويض مكان أي رقم (‪)9-0‬‬
‫[قائمة حروف ]‬
‫أي حرف مفرد موجود بهذه القائمه‬
‫[قائمة حروف !]‬
‫أي حرف مفرد غير موجود بهذه القائمه‬
‫مالحظات‪:‬‬
‫القيم النصية توضع بين عالمتي تنصيص " "‬
‫عالمات االستفهام البد أن تكون على الشكل االنجليزي ? وليس العربي ؟ حتى يتم االستعالم‬
‫بشكل صحيح‬
‫قائمة الحروف تكتب على الشكل التالي ]‪ [a-m‬و تعني أي حرف من ‪ a‬إلى ‪m‬‬
‫أذا اردنا البحث عن أحد الرموز المستدخدمه * ‪ ? #‬نضعها بين أقواس مربعة [] ‪ ،‬مثال عند‬
‫البحث عن الرم نجمه نستخدم ]*[‬
:‫ مثال‬

STAFF(sno, fname, lname, position, sex, dob, salary, address, bno)
“ Glasgow” ‫من العالقة السابقة المطلوب استرجاع أعضاء الطاقم الذين تحتوي عناوينهم على‬
.‫بحيث يتم عرض أرقامهم وأسماءهم وعناوينهم‬
:‫ الحل‬
SELECT sno, fname, lname, address
FROM staff
WHERE
address LIKE ‘*Glasgow*’;
Sno
FName
LName
address
SL21
John
White
Achray St,Glasgow G32 9DX
SG37
Ann
Beech
Well St, Glasgow G42
‫‪ ‬مثال‪:‬‬
‫‪Student(std_id,std_name,bdate,std_national,dept_no,std_city,‬‬
‫)‪std_phone,std_password,nots‬‬
‫‪ ‬من العالقة السابقة المطلوب‪:‬‬
‫‪ -1‬كتابة استعالم يظهر اسماء الطالب اللذين يبدأ اسمهم بحرف "م"‬
‫‪ ‬الحل‪:‬‬
‫‪ -2‬كتابة استعالم يظهر اسماء الطالب اللذين يبدأ اسمهم بحرف "م" و‬
‫االسم مكون من ‪ 13‬خانة‪.‬‬
‫‪ ‬الحل‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫(‪ )NULL‬تمثل قيمة غير معرفة‪.‬‬
‫(‪ )NULL‬ال تمثل صفر أو مسافة في الجمل‪.‬‬
‫عندما نقارن قيمة ما ب(‪ )NULL‬ال يمكن استخدام = أو <>‬
‫‪ ‬مثال‪:‬‬
‫‪Student(std_id,std_name,bdate,std_national,dept_no,std_city,std‬‬
‫)‪_phone,std_password,nots‬‬
‫‪‬‬
‫المطلوب استعراض أسماء الطالب الذين ال توجد لديهم أرقام هواتف والمالحظات لديهم ”نقل من‬
‫الخارج“‬
‫‪ ‬الحل‪:‬‬
‫‪SELECT std_name‬‬
‫‪FROM student‬‬
‫;‪” And std_phone Is Null‬نقل من الخارج “= ‪WHERE nots‬‬