لغة معالجة البيانات (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