Upload
faradars
View
48
Download
7
Embed Size (px)
Citation preview
هاپایگاه داده
faradars.org/fvsft105
:مدرسفرشید شیرافکن
دکتری دانشگاه تهران دانشجوی (بیو انفورماتیک: دکتری( )کامپیوتر نرم افزار: کارشناسی و کارشناسی ارشد )
پایگاه داده هاSQL: فصل پنجم
1
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
(بیانی)زبانی غیر رویه ای -1
دارای عملگرهای بسیار قوی -2
تامین کننده استقالل داده ای -3
تمام داده های استاندارد شامل -4
ه به صورت مستقل و هم به صورت ادغام شدقابل استفاده هم -5
2
SQLهایویژگی
Structured Query Language
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
3
SQLانواع داده ها در
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
(+,-,*,/,%)محاسباتی-1
( =! ,=<,=>,>,<,=)رابطه ای -2
(AND,OR,NOT)منطقی-3
(~,&,|,^)بیتی-4
(=)انتساب-5
(IN,BETWEEN,ALL,ANY,LIKE)ویژه-6
4
SQLانواع عملگرها در
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
CREATE TABLE Student
(
ID smallint PRIMARY KEY ,
Name Char (20)
);
5
(CREATE TABLE)ایجاد جدول
ID NAME
:با فیلد های شماره دانشجویی و نام دانشجوایجاد جدول دانشجو
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
INSERT INTO Student (ID,Name)
VALUES ( 1 , 'Ali' );
6
درج
ID NAME
1 ALI
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
:تکرارینام دانشجویان بدون نمایش نام های بازیابی
7
بازیابی
SELECT DISTINCT
Name FROM Student;
ID NAME
1 ALI
7 SARA
3 ALI
NAME
ALI
SARA
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
:1حذف دانشجو به شماره
8
حذف
DELETE
FROM Student
WHERE ID=1;
ID NAME
1 ALI
7 SARA
3 ALI
ID NAME
7 SARA
3 ALI
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
: 5به 1دانشجویی تغییر شماره
9
سازیبهنگام
UPDATE Student
SET ID=5
WHERE ID=1;
ID NAME
1 ALI
7 SARA
3 ALI
ID NAME
5 ALI
7 SARA
3 ALI
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
ORDERامکانتوسط BYصعودیصورتبهستونیکازبیشیایکبرحسبراجوابجدولتوانمی
(ASC)نزولییا(DESC)کردمرتب.(ASCاستفرضپیش).
10
سازیمرتب
SELECT *
FROM Student
ORDER BY ID DESC;
ID NAME
1 ALI
7 SARA
3 ALI
ID NAME
7 SARA
3 ALI
1 ALI
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT COUNT(*)
FROM Student;
11
( Aggregate Functions)جمعیتوابع
COUNT , MAX , MIN , SUM , AVG
:پرس و جویی که تعداد دانشجویان را بر می گرداند: مثال
ID NAME
1 ALI
7 SARA
3 ALI
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
ظرنموردشرایطباکاراکترجستجوینشانونداساسبررابازیابیعملتوانمیSQLدرامکاناینتوسط
.خیریاداردقرارفیلدازقسمتیدرایرشتهآیاکهکندمیمشخصعبارتیبه.دادانجام
12
LIKEعملگر
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SARA.مانندباشد،Aآنهانامدردومحرفواستحرفی4آنهانامکهبدهیدرادانشجویانیمشخصات
SELECT * FROM StudentWHERE Name LIKE '-A--';
.گیردقرارکاراکترتعدادیتواندمی%کاراکترجایبهوکاراکتریکتواندمی–کاراکترجایبه:تذکر
13
ID NAME
1 ALI
7 SARA
3 ALI
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.شروع شود Aکاراکتردانشجویانی را بدهید که نام آنها با مشخصات
14
ID NAME
1 ALI
7 SARA
3 ALI
SELECT *
FROM Student
WHERE Name LIKE 'A%';
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
کاراکترهایازیکیاول،حرفواستحرفی3آنهانامکهبدهیدرادانشجویانیمشخصات
A,B,C,Dباشد.
SELECT *
FROM Student
WHERE Name LIKE ' [A-D]- - ';
15
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
A,B,Cکاراکترهایازیکیاولحرفواستحرفی4آنهانامکهبدهیدرادانشجویانیمشخصات
:نباشد
SELECT *
FROM Student
WHERE Name LIKE '[^A-C] - - - ';
16
ID NAME
1 ALI
7 SARA
3 ALI
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
DROP TABLE Student;
.شودمیخارجکاتالوگازجدولتعریفشود، حذفجدولیوقتی
17
(DROP TABLE)حذف جدول
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
بهردکبندیگروهستونیکمقادیربرحسبراجدولیکسطرهایتوانمیبندی،گروهامکانتوسط
.باشدیکسانستونآنمقدارگروههردرکهنحوی
18
اطالعاتگروه بندی
SELECT * FROM R GROUP BY Y;
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
مثال
19
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
مقابل داده شده در SQL، معادل جبر رابطه ای هر یک از دستورات S(c,d)و R(a,b)توجه به دو رابطه با
:آن آورده شده است
SELECT a FROM R;
SELECT * FROM R WHERE a=2;
SELECT a FROM R WHERE b=5;
SELECT * FROM R,S;
SELECT b,d FROM R,S WHERE a=c;
a(R)
a 2(R)
a b 5( (R))
R S
b,d a c( (R S))
20
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
CREATE TABLE A(
ID INT NOT NULL,
NAME CHAR (20) NOT NULL,
AGE INT NOT NULL,
SALARY INT,
PRIMARY KEY (ID)
);
(A)ایجاد جدول مشتری
ID NAME AGE SALARY
.
.
.
.
.
.
.
.
.
.
.
.
21
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
INSERT INTO A (ID,NAME,AGE,SALARY)
VALUES (1, ‘ALI', 32, 2000 );
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
22
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT *
FROM A
WHERE SALARY >= 6500;
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
23
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT *
FROM A
WHERE AGE BETWEEN 25 AND 27 ; ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
24
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT ID, NAME, SALARY
FROM A
WHERE SALARY > 2000 OR age < 25;
ID NAME SALARY
3 TAHA 2000
4 FARSHID 6500
5 ARMAN 8500
6 SETAYESH 4500
7 MARYAM 10000
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
25
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT *
FROM A
WHERE SALARY LIKE '200%'; ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
26
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT COUNT(*) AS “K"
FROM A;
K
7
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
27
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT DISTINCT SALARY
FROM A
ORDER BY SALARY;
SALARY
1500
2000
4500
6500
8500
10000
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
28
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT NAME, SUM(SALARY)
FROM A
GROUP BY NAME;
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 SAMAN 27 8500
6 ALI 22 4500
7 MARYAM 24 10000
NAME SALARY
ALI 6500
FARSHID 6500
MARYAM 10000
SAMAN 8500
SARA 1500
TAHA 2000
29
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT *
FROM A
WHERE AGE > ALL ( SELECT AGE FROM A
WHERE SALARY > 7000);
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
30
مثال
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT *
FROM A
WHERE AGE > ANY (SELECT AGE FROM A
WHERE SALARY > 7000);
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
31
مثال
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
CREATE TABLE SALARY AS
SELECT ID, SALARY FROM A;
ID SALARY
1 2000
2 1500
3 2000
4 6500
5 8500
6 4500
7 10000
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
32
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT *
FROM A
WHERE ID IN ( SELECT ID FROM A
WHERE SALARY > 4500 ) ;
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000 33
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
CREATE TABLE B (
OID INT NOT NULL,
CID INT References A(ID),
AMOUNT double,
PRIMARY KEY (OID)
);
(B)ایجاد جدول سفارش
OID CID AMOUNT
102 3 3000
100 3 1500
101 2 1560
103 4 2060
34
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT ID, NAME, AMOUNT
FROM A, B
WHERE A.ID = B.CID;
ID NAME AMOUNT
2 SARA 1560
3 TAHA 3000
3 TAHA 1500
4 FARSHID 2060
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
OID CID AMOUNT
102 3 3000
100 3 1500
101 2 1560
103 4 2060
35
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT ID, NAME, AMOUNT
FROM A, B
WHERE A.ID = B.CID;
معادل
36
SELECT ID, NAME, AMOUNT
FROM A INNER JOIN B
ON A.ID = B.CID;
SELECT x.ID, x.NAME , y.AMOUNT
FROM A AS x, B AS y
WHERE x.ID = y.CID;
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT ID, NAME, AMOUNTFROM A LEFT JOIN B
ON A.ID = B.CID;
ID NAME AMOUNT
2 SARA 1560
3 TAHA 3000
3 TAHA 1500
4 FARSHID 2060
1 ALI NULL
5 ARMAN NULL
6 SETAYESH NULL
7 MARYAM NULL
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
OID CID AMOUNT
102 3 3000
100 3 1500
101 2 1560
103 4 2060
37
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT ID, NAME, AMOUNT
FROM A RIGHT JOIN B
ON A.ID = B.CID;
OID CID AMOUNT
102 3 3000
100 3 1500
101 2 1560
103 4 2060
ID NAME AGE SALARY
1 ALI 32 2000
2 SARA 25 1500
3 TAHA 23 2000
4 FARSHID 25 6500
5 ARMAN 27 8500
6 SETAYESH 22 4500
7 MARYAM 24 10000
38
ID NAME AMOUNT
2 SARA 1560
3 TAHA 1500
3 TAHA 1500
4 FARSHID 2060
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT ID, NAME, AMOUNT
FROM A FULL JOIN B
ON A.ID = B.CID;
تمرین
39
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
40
پایگاه داده "قطعه-تهیه کننده " فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
"قطعه-تهیه کننده "پایگاه داده
41
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.داردراشرطدوهریااستشدهتهیهS2توسطیاباشد16ازبیشترآنهاوزنیاکهبیابیدراقطعاتیشماره
SELECT P# FROM P WHERE WEIGHT > 16
UNION
SELECT P# FROM SP WHERE S# = 'S2' ;
مثال
42
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.را تهیه می کنندP2نام تهیه کنندگانی را بیابید که قطعه
SELECT SNAME FROM S WHERE S# IN ( SELECT S#
FROM SP WHERE P# = 'P2'
);
مثال
43
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.می کنندتهیه آبی نام تهیه کنندگانی را بیابید که اقالً یک قطعه به رنگ
SELECT SNAME FROM S WHERE S# IN ( SELECT S# FROM SP
WHERE P# IN ( SELECT P# FROM P WHERE COLOR = BLUE' ();
مثال
44
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.شماره قطعاتی را بیابید که توسط بیش از یک تهیه کننده، تهیه شده باشد
SELECT P# FROM SP GROUP BY P# HAVING COUNT(*) > 1;
مثال
45
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.حداکثر مقدار تهیه شده از هر قطعه را بیابید
SELECT P# , MAX(QTY) FROM SP GROUP BY P#;
مثال
46
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
پایگاه داده دانشگاه
47
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
clg#moadelcitysnames#
10117hamedanAli6
10016tehransara2
10218hamedantaha5
10314ahvazarman9
10019tabrizfarshid3
clg#degreeesppname
100doctracomputershirafkan
100doctracomputermohamadi
102doctrariazihasani
101doctrazabanrasti
102doctrariaziamini
scorepnametermc#s#sec#
15hasani941226502
16rasti931232501
17shirafkan921206500
18hasani942223502
14shirafkan912215505
15amini932229505
Clg#unitcnamec#
1023riazi22
1004C++21
1003algorithm20
1012zaban23
pnamecityclgnameclg#
shirafkantehrancomputer100
rastishirazzaban101
aminihamedanriazi102
course college
student prof
section
48
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
49
مثال
courseایجاد جدول
clg#unitcnamec#
CREATE TABLE course( c# char(5) NOT NULL,
cname char(30) NOT NULL,unit smallint NOT NULL,clg# smallint,PRIMARY KEY(c#),UNIQUE(cname),FOREIGN KEY(clg#) REFRENCE[ON DELETE CASCADE][ON UPDATE CASCADE]CHECK(unit >0 AND unit<5 )
);
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
50
تعداد سطرهای جدول دانشجوSELECT COUNT(*)FROM student;
clg#moadelcitysnames#
10117hamedanAli6
10016tehransara2
10218hamedantaha5
10314ahvazarman9
10019tabrizfarshid3
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
51
تعداد دانشجویان همدانی
SELECT COUNT(S#) FROM studentWhere city=“hamedan”;
clg#moadelcitysnames#
10117hamedanAli6
10016tehransara2
10218hamedantaha5
10314ahvazarman9
10019tabrizfarshid3
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
52
اطالعات کامل دانشجویان همدانی در دانشکده ریاضی
SELECT * FROM studentWhere city=“hamedan” AND clg#=102;
clg#moadelcitysnames#
10117hamedanAli6
10016tehransara2
10218hamedantaha5
10314ahvazarman9
10019tabrizfarshid3
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
53
تعداد تخصص های موجودSELECT COUNT(DISTINCT esp) AS kFROM prof;
clg#degreeesppname
100doctracomputershirafkan
100doctracomputermohamadi
102doctrariazihasani
101doctrazabanrasti
102doctrariaziamini
k
3
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
54
.دانشکده هایی واقع در شهرهای تهران و همدانSELECT *FROM collegeWHERE city IN(“hamedan” , ”tehran”);
pnamecityclgnameclg#
shirafkantehrancomputer100
rastishirazzaban101
aminihamedanriazi102
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
55
نام و شماره درس و نمره دانشجویان در دروس مختلف
clg#moadelcitysnames#
10117hamedanAli6
10016tehransara2
10218hamedantaha5
10314ahvazarman9
10019tabrizfarshid3
scorepnametermc#s#sec#
15hasani941226502
16rasti931232501
17shirafkan921206500
18hasani942223502
14shirafkan912215505
15amini932229505
SELECT sname , c# , scoreFROM student , sectionWHERE student.s# = section.s#
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
56
.ارائه شده است1394درس و نام درسی که بعد از ترم اول سال شماره
SELECT course.c# , cnameFROM course , sectionWHERE course.c# = section.c# AND term > 941 ;
scorepnametermc#s#sec#
15hasani941226502
16rasti931232501
17shirafkan921206500
18hasani942223502
14shirafkan912215505
15amini932229505
Clg#unitcnamec#
1023riazi22
1004C++21
1003algorithm20
1012zaban23
cnamec#
riazi22
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
57
ماکزیمم و مینیمم میانگین دانشجویان در هر دانشکده
SELECT clg# , MAX(moadel) , MIN(moadel)FROM studentGROUP BY clg#;
clg#moadelcitysnames#
10117hamedanAli6
10016tehransara2
10218hamedantaha5
10314ahvazarman9
10019tabrizfarshid3
clg#
1717101
1619100
1818102
1414103
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
58
.شماره دانشکده هایی که تعداد اساتید آنها بیش از یک نفر استSELECT clg#FROM profGROUP BY clg# HAVING COUNT (pname)>1;
clg#degreeesppname
100doctracomputershirafkan
100doctracomputermohamadi
102doctrariazihasani
101doctrazabanrasti
102doctrariaziamini
مثال
clg#degreeesppname
100doctracomputershirafkan
100doctracomputermohamadi
102doctrariazihasani
102doctrariaziamini
101doctrazabanrasti
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
59
.شماره دانشجویانی که همه درس ها را گرفته اندSELECT s#FROM sectionGROUP BY s#HAVING COUNT(DISTINCT c#) = (SELECT COUNT(c#) FROM course);
scorepnametermc#s#sec#
15hasani941226502
17shirafkan921206500
16rasti931232501
18hasani942223502
14shirafkan912215505
15amini932229505
Clg#unitcnamec#
1023riazi22
1004C++21
1003algorithm20
1012zaban23
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
60
.نام و میانگین نمرات دانشجویانی که معدل آنها از میانگین همه معدل ها بیشتر است
clg#moadelcitysnames#
10117hamedanAli6
10016tehransara2
10218hamedantaha5
10314ahvazarman9
10019tabrizfarshid3
SELECT sname,moadelFROM studentWHERE moadel> (SELECT AVG(moadel) FROM student);
moadelsname
17Ali
18taha
19farshid
.(است 16.8برابر moadelمیانگین ستون )
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
61
.بیشتر است( 100)دانشجویانی که معدل آنها از همه دانشجویان دانشکده کامپیوتر
clg#moadelcitysnames#
10120hamedanAli6
10016tehransara2
10218hamedantaha5
10314ahvazarman9
10019tabrizfarshid3
SELECT *FROM studentWHERE moadel > ALL ( SELECT moadel FROM student WHERE clg#=100);
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
62
.ترم هایی که دانشکده کامپیوتر درس ارائه داده استSELECT termFROM section , college, courseWHERE section.c# =course.c# AND college.clg#=course.clg# AND college.clgname=“computer”;
scorepnametermc#s#sec#
15hasani941226502
16rasti931232501
17shirafkan921206500
18hasani942223502
14shirafkan912215505
15amini932229505
Clg#unitcnamec#
1023riazi22
1004C++21
1003algorithm20
1012zaban23
pnamecityclgnameclg#
shirafkantehrancomputer100
rastishirazzaban101
aminihamedanriazi102
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
بانک اطالعاتی شرکت-کارمند
63
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
cityname
hamedanali
tehranfarshid
hamedantaha
ahvazmohamad
tehransara
comp
citycname
hamedanansar
tehrantabesh
hamedanfaradars
ahvazansar
emp
salarycnamename
1000000ansarmohamad
2000000tabeshfarshid
1000000ansarali
3000000ansartaha
2000000faradarssara
2000000faradarsali
work
مثال
64
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.کارکنانی که بیشترین حقوق را دریافت می کنند
cityname
hamedanali
tehranfarshid
hamedantaha
ahvazmohamad
tehransara
salarycnamename
1000000ansarmohamad
2000000tabeshfarshid
1000000ansarali
3000000ansartaha
2000000faradarssara
2000000faradarsali
SELECT *FROM EmpWHERE name IN ( SELECT name FROM work
WHERE salary = ( SELECT MAX(salary) FROM work) );
مثال
65
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
66
.زندگی می کنندansarکارکنانی که در یکی از شهرهای محل شرکت
SELECT *FROM EmpWHERE city IN ( SELECT city FROM comp
WHERE cname=“ansar” );
cityname
hamedanali
tehranfarshid
hamedantaha
ahvazmohamad
tehransara
citycname
hamedanansar
tehrantabesh
hamedanfaradars
ahvazansar
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
67
SELECTکارکنان بومی و نام شرکت آنها emp.name , emp.city , comp.cnameFROM emp , work , compWHERE emp.name = work.name AND
work.cname = comp.cname ANDemp.city = comp.city;
salarycnamename
1000000ansarmohamad
2000000tabeshfarshid
1000000ansarali
3000000ansartaha
2000000faradarssara
2000000faradarsali
cityname
hamedanali
tehranfarshid
hamedantaha
ahvazmohamad
tehransara
citycname
hamedanansar
tehrantabesh
hamedanfaradars
ahvazansar
SELECT emp.name , emp.city , comp.cnameFROM emp Natural Join work Natural Join comp;
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
. هیچ کس نباید کمتر از یک میلیون تومان حقوق بگیرد
(قید جامعیت)مثال
salarycnamename
1000000ansarmohamad
2000000tabeshfarshid
1000000ansarali
3000000ansartaha
2000000faradarssara
2000000faradarsali
CREATE ASSERTION mCHECK (NOT EXISTS ( SELECT salary FROM work
WHERE salary<1000000));
68
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
69
omidبه کاربری به نام empروی جدول nameو cityدادن حق به روز نگه داشتن یا تغییر دو ستون
GRANT UPDATE (name , city) ON empTO omid;
cityname
hamedanali
tehranfarshid
hamedantaha
ahvazmohamad
tehransara
مثال
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
بانک اطالعاتی پروژه-قطعه -تهیه کننده
70
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
"پروژه–قطعه -تهیه کننده "پایگاه داده
S ( S# , SNAME , STATUS , CITY )
P ( P# , PNAME , COLOR , WEIGHT , CITY )
J ( J# , JNAME , CITY )
SPJ ( S# , P# , J# , QTY )
71
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
72
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.دباشالفباترتیببهشهراولینپروژه،آنشهرکهکنیدمشخصراهاییپروژهشماره
SELECT J.J# FROM J WHERE J.CITY = ( SELECT MIN(J.CITY) FROM J );
مثال
73
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
.شوندمیپشتیبانیS1توسطکاملطوربهکنیدکهمشخصراهاییپروژهشماره
SELECT J.J# FROM J WHERE NOT EXISTS ( SELECT * FROM SPJ
WHERE SPJ.J# = J.J# AND NOT ( SPJ.S# = 'S1' )
);
مثال
74
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
رادومشهردرایپروژهاول،شهردرایکنندهعرضهکهکنیدمشخصراشهرهانامازهاییجفتتمام.کندپشتیبانی
SELECT DISTINCT S.CITY AS A , J.CITY AS B FROM S , J WHERE EXISTS ( SELECT * FROM SPJ
WHERE SPJ.S# = S.S# AND SPJ.J# =J.J# );
مثال
75
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SELECT DISTINCT SPJ.P# FROM SPJ GROUP BY SPJ.P# , SPJ.J# HAVING AVG ( SPJ.QTY )> 300 ;
تمرین
76
SELECT S.S# , P.P# FROM S CROSS JOIN P EXCEPTSELECT SPJ.S# , SPJ.P# FROM SPJ;
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
مجوز
77
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
:aliبه کاربرSاعطای مجوز درج در جدول
GRANT INSERT ON STO ali ;
WITHعبارتازاستفادهبا GRANT OPTIONکاربربهامکاناینباال،دستورانتهایدرALIداده.بدهدنیزدیگرکاربرانبهراخودشمجوزبتواندکهشودمی
مثال
78
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
:ALIکاربراز Sپس گرفتن مجوز درج در جدول
REVOKE INSERT ON SFROM ali;
دخواهآبشاریصورتبهمجوزلغوشود،استفادهباالدستورانتهایدرCascadeعبارتازاگر.بود
لغونیزsaraمجوزآنگاه،باشدsaraمانندکاربریپدرaliمجوز،گرافدرنمونهطوربهاگریعنی.شودمی
مثال
79
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SNAMEفیلدهایآوردندرروزبهوهاستونانتخابمجوزاعطای , CITYجدولSکاربربهsara:
GRANT SELECT , UPDATE(SNAME,CITY)
ON S
TO sara;
مثال
80
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
دید
81
(VIEW) فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
S :CREATEروی جدول V1تعریف یک دید به نام VIEW V1 (A,B,C ) ASSELECT S # , STATUS , CITY FROM S WHERE STATUSE > 15 ;
دید
82
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
V1 :CREATE VIEWتعریف یک دید روی دید V2 (M,N,P) AS
SELECT A,B,C
FROM V1
WHERE P < > 'London' ;
DROPدستور VIEW V1 CASCADEدیدحذفموجبV1وV2تعریفدیدهایتمامپایه،جدولحذفبایعنی.شدخواهد.شوندمیحذفنیزآنرویشده
مثال
83
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
SP :CREATE VIEWروی جدول PQتعریف دید PQ ( P# , TQ) ASSELECT P# , SUM (QTY) FROM SP
GROUP BY P#;
مثال
84
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
CREATE VIEW V1 AS: را به صورت زیر تعریف می کنیم V1دیدSELECT S # , STATUS , CITY
FROM S WHERE STATUS > 15 ;
: حال اگر کاربری، حکم بازیابی زیر را صادر کندSELECT *
FROM V1
WHERE CITY = 'PARIS';:این حکم بعد از تبدیل به صورت زیر در می آید
SELECT S # , STATUS , CITY
FROM S
WHERE CITY = 'PARIS' AND STATUS > 15;
مثال
85
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
پایان فصل پنجم
86
فرادرس
FaraDars.org
هاپایگاه داده
faradars.org/fvsft105
این اسالید ها بر مبنای نکات مطرح شده در فرادرس« پایگاه داده ها»
.شده استتهیه
برای کسب اطالعات بیشتر در مورد این آموزش به لینک زیر مراجعه نمایید
faradars.org/fvsft105
هاپایگاه داده
faradars.org/fvsft105
فرادرس
FaraDars.org