پایگاه داده ها یکی از دروسی است که دانشجویان رشته کامپیوتر باید در مقطع کارشناسی بگذرانند. در این مجموعه ابتدا مفاهیم اولیه در پایگاه داده تدریس می شود. سپس در فصل دوم مدل رابطه ای و در فصل سوم نمودار ER تدریس می شود.
سرفصل هایی که در این آموزش به آن پرداخته شده است:
درس یکم: تعاریف اولیه سیستم پایگاه داده
درس دوم: ساختار داده ای رابطه ای
درس سوم: مدل ER
درس چهارم: جبر رابطه ایی
...
برای توضیحات بیشتر و تهیه این آموزش لطفا به لینک زیر مراجعه بفرمائید:
http://faradars.org/courses/fvsft105
11. داده پایگاهها
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
20. داده پایگاهها
faradars.org/fvsft105
بارابطه دو به توجهR(a,b)وS(c,d)دستورات از یک هر ای رابطه جبر معادل ،SQLدر شده دادهمقابل
است شده آورده آن:
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
21. داده پایگاهها
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
22. داده پایگاهها
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
23. داده پایگاهها
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
24. داده پایگاهها
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
25. داده پایگاهها
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
26. داده پایگاهها
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
27. داده پایگاهها
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
28. داده پایگاهها
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
29. داده پایگاهها
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
30. داده پایگاهها
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
31. داده پایگاهها
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
32. داده پایگاهها
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
33. داده پایگاهها
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
34. داده پایگاهها
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
35. داده پایگاهها
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
36. داده پایگاهها
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
37. داده پایگاهها
faradars.org/fvsft105
SELECT ID, NAME, AMOUNT
FROM 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
38. داده پایگاهها
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
43. داده پایگاهها
faradars.org/fvsft105
قطعه که بیابید را کنندگانی تهیه نامP2کنند می تهیه را.
SELECT SNAME
FROM S
WHERE S# IN ( SELECT S#
FROM SP
WHERE P# = 'P2'
);
مثال
43
سرداﺮﻓ
FaraDars.org
44. داده پایگاهها
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
45. داده پایگاهها
faradars.org/fvsft105
باشد شده تهیه ،کننده تهیه یک از بیش توسط که بیابید را قطعاتی شماره.
SELECT P#
FROM SP
GROUP BY P#
HAVING COUNT(*) > 1;
مثال
45
سرداﺮﻓ
FaraDars.org
78. داده پایگاهها
faradars.org/fvsft105
جدول در درج مجوز اعطایSکاربر بهali:
GRANT INSERT
ON S
TO ali ;
بااستفادهازعبارتWITH GRANT OPTIONدرانتهایدستور،باالاینامکانبهکاربرALIداده
میشودکهبتواندمجوزخودشرابهکاربراندیگرنیزبدهد.
مثال
78
سرداﺮﻓ
FaraDars.org
79. داده پایگاهها
faradars.org/fvsft105
جدول در درج مجوز گرفتن پسSازکاربرALI:
REVOKE INSERT
ON S
FROM ali;
اگرازعبارتCascadeدرانتهایدستورباالاستفاده،شودلغومجوزبهصورتآبشاریخواهد
بود.
یعنیاگربهطورنمونهدرگراف،مجوزaliپدرکاربریمانندsaraباشد،آنگاهمجوزsaraنیزلغو
میشود.
مثال
79
سرداﺮﻓ
FaraDars.org
82. داده پایگاهها
faradars.org/fvsft105
نام به دید یک تعریفV1جدول رویS:CREATE VIEW V1 (A,B,C ) AS
SELECT S # , STATUS , CITY
FROM S
WHERE STATUSE > 15 ;
دید
82
سرداﺮﻓ
FaraDars.org
83. داده پایگاهها
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
85. داده پایگاهها
faradars.org/fvsft105
دیدV1کنیم می تعریف زیر صورت به را:CREATE VIEW V1 AS
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