SlideShare a Scribd company logo
1
Trường Đại học Công nghệ thông tin
Ôn thi cao học năm 2009
Đại số quan hệ và ngôn ngữ SQL
Relational Algebra & SQL
PGS.TS. Đỗ Phúc
Khoa Hệ thống thông tin
2
Năm phép toán cơ bản
• Selection ( σ ) : chọn.
• Projection ( π ) : chiếu.
• Descartes-product ( × ) tích Descartes.
• Set-difference ( — ) hiệu
• Union ( ∪ ) hợp.
3
sname rating
yuppy 9
lubber 8
guppy 5
rusty 10
Chiếu (projection)
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0
)2(
,
S
ratingsname
π
S2
age
35.0
55.5Ví dụ:
Chỉ giữ lại các thuộc tính được
chỉ định trong danh sách chiếu. πage S( )2
4
Chọn -selection (σ)
• Chọn các dòng thỏa điều kiện.
σrating
S
>8
2( )
sname rating
yuppy 9
rusty 10
π σsname rating rating
S
,
( ( ))
>8
2
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0
5
Hợp và hiệu
• Các phép toán này yêu cầu 2 quan hệ nhập phải
tương thích
– Cùng số thuộc tính.
– Cùng tên và kiểu.
6
Hợp- Union
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0
44 guppy 5 35.0
28 yuppy 9 35.0
S S1 2∪
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0
S1
S2
7
Hiệu- Set Difference
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0
S1
S2
sid sname rating age
22 dustin 7 45.0
S S1 2−
S2 – S1
sid sname rating age
28 yuppy 9 35.0
44 guppy 5 35.0
8
Toán tử giao ( Intersection)
• các quan hệ phải tương thích
• Có thể biểu diễn qua phép hợp và phép hiệu
R ∩ S = R − (R − S)
9
Giao - Intersection
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0
S1
S2
sid sname rating age
31 lubber 8 55.5
58 rusty 10 35.0
S S1 2∩
10
Tích Descartes
• Kết từng dòng của quan hệ đầu ( R ) với từng
dòng của quan hệ thứ hai (S):
R X S
11
Ví dụ về tích Descartes
Students Courses
stud# name course course# name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
300 Bob CM
Students X Courses =
stud# Students.name course course# Courses.name
100 Fred PH PH Pharmacy
100 Fred PH CM Computing
200 Dave CM PH Pharmacy
200 Dave CM CM Computing
300 Bob CM PH Pharmacy
300 Bob CM CM Computing
12
Theta kết
• Tích Descartes có áp dụng điều kiện:
R ⋈ <condition> S
13
Ví dụ về Theta kết
Students Courses
stud# name course course# name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
300 Bob CM
Students ⋈ stud# = 200 Courses
stud# Students.name course course# Courses.name
200 Dave CM PH Pharmacy
200 Dave CM CM Computing
14
Phép kết trong :Inner Join (Equijoin)
• Phép kết Theta với điều kiện <condition> là
bằng nhau (=) giữa khóa chính và khóa ngoại.
R ⋈ <R.primary_key = S.foreign_key> S
15
Ví dụ về Inner Join
Students Courses
stud# name course course# name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
300 Bob CM
Students ⋈ course = course# Courses
stud# Students.name course course# Courses.name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
300 Bob CM CM Computing
16
Phép kết tự nhiên ( natural join)
• Phép kết trong (inner join) sinh ra dữ liệu dư (trong ví dụ trước
ta có: course và course#). Để loại bỏ trường hợp trùng này, ta
dùng:
π < stud#, Students.name, course, Courses.name >
(Students ⋈ <course = course#> Courses)
hay
R1= Students ⋈ <course = course#> Courses
R2= π < stud#, Students.name, course, Courses.name > R1
Kết quả này được gọi là kết tự nhiên (natural join) giữa Students
và Courses
17
Ví dụ về kết tự nhiên (Natural Join)
Students Courses
stud# name course course# name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
300 Bob CM
R1= Students ⋈ <course = course#> Courses
R2= π < stud#, Students.name, course, Courses.name > R1
stud# Students.name course Courses.name
100 Fred PH Pharmacy
200 Dave CM Computing
300 Bob CM Computing
18
Phép kết ngoài (Outer Joins)
• Phép kết trong + các dòng của bảng không thỏa
<condition>.
• Phép kết ngoài trái: R <R.primary_key = S.foreign_key> S
Tất cả các dòng trong R được giữ lại và các dòng không thỏa của
S được dồn các trị NULL
• Phép kết ngoài phải: R <R.primary_key = S.foreign_key> S
Tất cả các dòng trong S được giữ lại và các dòng không thỏa của
R được dồn các trị NULL
19
Ví dụ về phép kết ngoài trái
Left Outer Join
Students Courses
stud# name course course# name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
400 Peter EN CH Chemistry
Students <course = course#> Courses
stud# Students.name course course# Courses.name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
400 Peter EN NULL NULL
20
Ví dụ về phép kết ngoài phải
Right Outer Join
Students Courses
stud# name course course# name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
400 Peter EN CH Chemistry
Students <course = course#> Courses
stud# Students.name course course# Courses.name
100 Fred PH PH Pharmacy
200 Dave CM CM Computing
NULL NULL NULL CH Chemistry
21
Phép chia: Division
• Dùng cho biểu thức “tất cả ” trong truy vấn sau:
Tìm mã thủy thủ (sids) đặt tất cả (all) các thuyền
(boats).
• Vd: cho A có 2 thuộc tính x và y; B chỉ có một
thuộc tính y:
A/B (chia) chứa tất cả các bộ (x) sao cho mọi
bộ y trong B đều có bộ xy trong A.
{ }),( AyxByxBA ∈∃∈∀=
22
Ví dụ phép chia A/B
sno pno
s1 p1
s1 p2
s1 p3
s1 p4
s2 p1
s2 p2
s3 p2
s4 p2
s4 p4
pno
p2
pno
p2
p4
pno
p1
p2
p4
sno
s1
s2
s3
s4
sno
s1
s4
A
B1
B2
A/B1 A/B2
B3
sno
s1
A/B3
23
Ví dụ về phép chia
• Tìm tất cả khách hàng có tài khoản tại tất cả chi
nhánh nằm ở ChVille
– Branch (bname, assets, bcity)
– Account (bname, acct#, cname, balance)
24
Ví dụ về phép chia
R1: Tìm tất cả các chi nhánh tại Chville
R2: Tìm cặp (bname, cname) từ Account
R3: Các khách của r2 có tài khoản tại tất cả chi nhánh có
tên trong r1
123
)(2
)(1
,
''
rrr
Accountr
r
cnamebname
Branch
Chvillebcitybname
÷=
=
=
=
π
σπ
25
Biểu diễn phép chia A/B dùng các toán tử cơ
bản
)))((( ABAxx −×ππ
26
Cơ sở dữ liệu
• Cho CSDL câu lạc bộ thuyền buồm
• Sailors(Sid,Sname, rating, age):thủy thủ
• Boat(Bid,color): thuyền
• Reserves(Sid,Bid,ReservedDate):đặt chỗ
27
Tìm tên thủy thủ (sailors) đặt thuyền có mã
(bid) #103
π σsname bid
serves Sailors(( Re ) )
=103
><• Solution 1:
• Solution 2: π σsname bid
serves Sailors( (Re ))
=103
><
Sailors(Sid,Sname, rating, age):thủy thủ
Boat(Bid,color): thuyền
Reserves(Sid,Bid,ReservedDate):đặt chỗ
28
Tìm tên thủy thủ (sailors) đặt thuyền màu
đỏ ( red boat)
• Thông tin về màu đỏ chỉ có trong quan hệ
Boats, ta cần thêm một phép kết:
π σsname color red
Boats serves Sailors((
' '
) Re )
=
>< ><
Giải pháp tốt hơn ( tối ưu truy vấn):
π π π σsname sid bid color red
Boats s Sailors( ((
' '
) Re ) )
=
>< ><
Sailors(Sid,Sname, rating, age):thủy thủ
Boat(Bid,color): thuyền
Reserves(Sid,Bid,ReservedDate):đặt chỗ
29
Tìm tên thủy thủ (sailors) đặt thuyền màu đỏ
và màu xanh lục
ρ π σ( , ((
' '
) Re ))Tempred
sid color red
Boats serves
=
><
π sname Tempred Tempgreen Sailors(( ) )∩ ><
ρ π σ( , ((
' '
) Re ))Tempgreen
sid color green
Boats serves
=
><
30
Tìm tên thủy thủ (sailors) đặt tất cả các
thuyền
• Phép chia:
ρ π π( , (
,
Re ) / ( ))Tempsids
sid bid
serves
bid
Boats
π sname Tempsids Sailors( )><
Sailors(Sid,Sname, rating, age):thủy thủ
Boat(Bid,color): thuyền
Reserves(Sid,Bid,ReservedDate):đặt chỗ
31
Chứng minh biểu thức đại số quan hệ
Cho q là quan hệ trên tập thuộc tính RS ( R∪S), chứng
minh: q ⊆ ∏R( q) ∏S(q)
Chứng minh:
Cho t ∈ q, theo đ/n của phép chiếu t[R] ∈ ∏R( q) và
t[S] ∈ ∏S(q)
Ta có theo định nghĩa của phép kết:
t[RS] ∈ ∏R( q) ∏S(q)
Do vậy t =t[RS] ∈ ∏R( q) ∏S(q)
32
Chứng minh biểu thức đại số quan hệ
• Cho quan hệ r(R) , A và B là hai thuộc tính của
quan hệ R, chứng minh:
σ A=a (σ B=b(r) ) = σ B=b (σ A=a(r) )
• Chứng minh:
σ A=a (σ B=b(r) ) = σ A=a ({t ∈r | t[B]=b})=
{t’ ∈ {t ∈ r | t[B]=b}| t’[A]=a }=
{t ∈r| t[A]=a ∧ t[B]=b }=
{t’ ∈ {t ∈ r | t[A]=a}| t’[B]=b }=
σ B=b (σ A=a(r) )
33
Chứng minh biểu thức đại số quan hệ
• Cho 2 quan hệ r, s , A là thuộc tính của quan hệ
R,S. Chứng minh:
σ A=a (r ∩ s) = σ A=a ( r) ∩ σ A=a(s) )
• Chứng minh:
σ A=a (r ∩ s) =σ A=a (t ∈ r ∧ t ∈ s) =
{ t’ ∈ {t|t ∈ r ∧ t ∈ s}| t[A]=a}=
{t|t ∈ r và t[A]=a} ∩ {t|t ∈ s và t[A]=a }
σ A=a ( r ) ∩ σ A=a ( s )
34
Đại số quan hệ và ngôn ngữ SQL
35
Toán tử một ngôi (unary operations)
Selection
σ course = ‘Computing’ Students
In SQL:
Select *
From Students
Where course = ‘Computing’;
Projection
π stud#, name Students
In SQL:
Select stud#, name
From Students;
Selection & Projection
π stud#, name (σ course = ‘Computing’ Students)
In SQL:
Select stud#, name
From students
Where course = ‘Computing’;
36
Toán tử hai ngôi/kết
Binary Operations/Joins
Tích Descartes: Students X Courses
In SQL:
Select *
From Students, Courses;
Theta kết: Students ⋈ <stud# =200> Courses
In SQL:
Select *
From Students, Courses
Where stud# = 200;
37
Toán tử hai ngôi/kết
Inner Join (Equijoin): Students ⋈ <course=course#> Courses
In SQL:
Select *
From Students, Courses
Where course=course#;
Natural Join:
R1= Students ⋈ <course = course#> Courses
R2= π < stud#, Students.name, course, Courses.name > R1
In SQL:
Select stud#, Students.name, course, Courses.name
From Students, Courses
Where course=course#;
38
Phép kết ngoài (Outer Joins)
Left Outer Join
Students <course = course#> Courses
In SQL:
Select *
From Students, Courses
Where course = course#(+)
Right Outer Join
Students <course = course#> Courses
In SQL:
Select *
From Students, Courses
Where course(+) = course#
39
Tổ hợp các phép toán một ngôi và hai ngôi
R1= Students ⋈ <course=course#> Courses
R2= σ <address=“Aberdeen”> R1
R3= π <Students.name, Course.name> R2
In SQL:
Select Students.name, Courses.name
From Students, Courses
Where course=course#
AND address=“Aberdeen”;
40
Các toán tử tập hợp
Union: R ∪ S
In SQL:
Select * From R
Union
Select * From S;
Intersection: R ∩ S
In SQL:
Select * From R
Intersect
Select * From S;
Difference: R - S
In SQL:
Select * From R
Minus
Select * From S;
41
Các toán tử trong SQL
Between, In, Like, Not
42
Các toán tử SQL
SELECT *
FROM Book
WHERE catno BETWEEN 200 AND 400;
SELECT *
FROM Product
WHERE prod_desc BETWEEN ‘C’ AND ‘S’;
SELECT *
FROM Book
WHERE catno NOT BETWEEN 200 AND 400;
43
Các toán tử SQL
SELECT Catno
FROM Loan
WHERE Date-Returned IS NULL;
SELECT Catno
FROM Loan
WHERE Date-Returned IS NOT NULL;
44
Các toán tử SQL
SELECT Name
FROM Member
WHERE memno IN (100, 200, 300, 400);
SELECT Name
FROM Member
WHERE memno NOT IN (100, 200, 300, 400);
45
Các toán tử SQL
SELECT Name
FROM Member
WHERE address NOT LIKE ‘%Aberdeen%’;
SELECT Name
FROM Member
WHERE Name LIKE ‘_ES%’;
Note: In MS Access, use * and # instead of % and _
46
Chọn giá trị phân biệt
Student
stud# name address
100Fred Aberdeen
200Dave Dundee
300Bob Aberdeen
SELECT Distinct address
FROM Student;
address
Aberdeen
Dundee
47
Các bài tập về SQL
48
Lược đồ CSDL
• Professor(ssn, profname, status, salary)
• Course(crscode, crsname, credits)
• Taught(crscode, semester, ssn)
Giá định (1) Mỗi khóa học chỉ có một giáo sư phụ trách
trong trong mỗi học kỳ; (2) tất cả giáo sư đều có lương
khác nhau; (3) tất cả giáo sư có tên khác nhau; (4) tất cả
khóa học có tên khác nhau; (5) thuộc tính status có thể
có các giá trị “Full”, “Associate”, và “Assistant”.
49
Truy vấn 1
Liệt kê tất cả giáo sư đã dạy khóa học
có mã ‘CSC6710’ nhưng không dạy
khóa học có mã ‘CSC7710’.
50
Lời giải ĐSQH
πssn(σcrscode=‘CSC6710’(Taught))-
πssn(σcrscode=‘CSC7710’(Taught))
51
Lời giải SQL
(SELECT ssn
From Taught
Where crscode = ‘CSC6710’)
EXCEPT
(SELECT ssn
From Taught
Where crscode = ‘CSC7710’))
52
Truy vấn 2
Liệt kê các giáo sư đã dạy các khóa học
có mã ‘CSC6710’ và ‘CSC7710’.
53
Đại số quan hệ
πssn(σcrscode=‘CSC6710’ ∧ crscode=‘CSC7710’
(Taught), SAI!
πssn(σcrscode=‘CSC6710’(Taught)) ∩
πssn(σcrscode=‘CSC7710’(Taught)), ĐÚNG!
54
SQL
SELECT T1.ssn
From Taught T1, Taught T2,
Where T1.crscode = ‘CSC6710’ AND T2.crscode=‘CSC7710’ AND
T1.ssn=T2.ssn
55
Truy vấn 3
Liệt kê các giáo sư không dạy môn có
mã số ‘CSC7710’.
56
Đại số quan hệ
πssn(σcrscode<>‘csc7710’(Taught)), SAI!
πssn(Professor)-πssn(σcrscode=‘csc7710’(Taught)),
ĐÚNG!
57
SQL
(SELECT ssn
From Professor)
EXCEPT
(SELECT ssn
From Taught T
Where T.crscode = ‘CSC7710’)
58
Truy vấn 4
Liệt kê các giáo sư đã dạy môn học có
mã ‘CSC6710’ và ‘CSC7710” trong
cùng một học kỳ
59
Đại số quan hệ
πssn(σcrscode1=‘CSC6710’(Taught[crscode1, ssn,
semester])
σcrscode2=‘CSC7710’(Taught[crscode2, ssn,
semester]))
60
SQL
SELECT T1.ssn
From Taught T1, Taught T2,
Where T1.crscode = ‘CSC6710’ AND T2.crscode=‘CSC7710’ AND
T1.ssn=T2.ssn AND T1.semester=T2.semester
61
Truy vấn 5
Liệt kê các giáo sư đã dạy môn có mã
‘CSC6710’ hay môn học có mã
‘CSC7710” nhưng không dạy cả hai
môn.
62
Đại số quan hệ
πssn(σcrscode=‘CSC6710’ ∨
crscode=‘CSC7710’(Taught))-
(πssn(σcrscode=‘CSC6710’(Taught)) ∩
πssn(σcrscode=‘CSC7710’(Taught)))
63
SQL
(SELECT ssn
FROM Taught T
WHERE T.crscode=‘CSC6710’ OR T.crscode=‘CSC7710’)
Except
(SELECT T1.ssn
From Taught T1, Taught T2,
Where T1.crscode = ‘CSC6710’) AND T2.crscode=‘CSC7710’ AND
T1.ssn=T2.ssn)
64
Truy vấn 6
Trả về các khóa học không bao giờ mở.
65
Đại số quan hệ
πcrscode(Course)-πcrscode(Taught)
66
SQL
(SELECT crscode
FROM Course)
EXCEPT
(SELECT crscode
FROM TAUGHT
)
67
Truy vấn 7
Liệt kê các khóa học được dạy tối thiểu
trong 2 học kỳ.
68
Đại số quan hệ
πcrscode(σ semester1 <> semester2(
Taught[crscode, ssn1, semester1]
Taught[crscode, ssn2, semester2]))
69
SQL
SELECT T1.crscode
FROM Taught T1, Taught T2
WHERE T1.crscode=T2.crscode AND T1.semester <> T2.semester
70
Truy vấn 8
Liệt kê các khóa học được dạy trong ít
nhất là 10 học kỳ.
71
SQL
SELECT crscode
FROM Taught
GROUP BY crscode
HAVING COUNT(*) >= 10
72
Truy vấn 9
Liệt kê các khóa học được dạy trong ít
nhất là 5 giáo sư khác nhau.
73
SQL
SELECT crscode
FROM (SELECT DISTINCT crscode, ssn FROM TAUGHT)
GROUP BY crscode
HAVING COUNT(*) >= 5
SELECT crscode
FROM Course C
WHERE (SELECT COUNT(DISTINCT *) FROM Taught T
WHERE T.crscode = C.crscode
) >=5.
74
Truy vấn 10
Liệt kê tên các giáo sư đã dạy khóa học
có mã ‘CSC6710’.
75
Đại số quan hệ
πprofname(σcrscode=‘CSC6710’(Taught)
Professor)
76
SQL
SELECT P.profname
FROM Professor P, Taught T
WHERE P.ssn = T.ssn AND T.crscode = ‘CSC6710’
77
Truy vấn 11
Liệt kê tên của các full professors đã
dạy môn học có mã ‘CSC6710’.
78
Đại số quan hệ
πprofname(σcrscode=‘csc6710’(Taught)
σstatus=‘full’(Professor))
79
SQL
SELECT P.profname
FROM Professor P, Taught T
WHERE P.status = ‘full’ AND P.ssn = T.ssn AND T.crscode = ‘CSC6710’
80
Truy vấn 12
Liệt kê tên của các full professors đã
dãy ít nhất là 2 khóa học trong một học
kỳ.
81
Đại số quan hệ
πprofname(πssn(σ crscode1 <> crscode2(
Taught[crscode1, ssn, semester]
Taught[crscode2, ssn, semester])))
σ status=‘full’(Professor))
82
SQL
SELECT P.profname
FROM Professor P, Taught T1, Taught T2
WHERE P.status = ‘Full’ AND P.ssn = T1.ssn AND T1.ssn = T2.ssn
AND T1.crscode <> T2.crscode AND T1.semester = T2.semester
83
SQL
SELECT P.profname
FROM Professor P
WHERE status = ‘Full’ AND ssn IN(
SELECT ssn
FROM Taught
GROUP BY ssn, semester
HAVING COUNT(*) >= 2
)
84
Truy vấn 13
Xóa các giáo sư không dạy khóa học
nào.
85
SQL
DELETE FROM Professor
WHERE ssn NOT IN
(SELECT ssn
FROM Taught
)
86
SQL
DELETE FROM Professor
WHERE ssn IN
(
(SELECT ssn FROM Professor)
EXCEPT
(SELECT ssn FROM Taught)
)
87
SQL
DELETE FROM Professor P
WHERE NOT EXISTS
(
SELECT * FROM Taught T
WHERE T.ssn = P.ssn
)
88
Truy vấn 14
Đổi tất cả tín chỉ (credits) sang 4 cho
các khóa học được giảng dạy trong học
kỳ mùa thu năm 2006 (f2006 semester).
89
SQL
UPDATE Course
SET credits = 4
WHERE crscode IN
(
SELECT crscode
FROM Taught
WHERE semester = ‘f2006’
)
90
Truy vấn 15
Liệt kê tên của các giáo sư đã dạy hơn
30 tín chỉ khóa học.
91
SQL
SELECT profname
FROM Professor
WHERE ssn IN
(
SELECT T.ssn
FROM Taught T, Course C
WHERE T.crscode = C.crscode
GROUP BY T.ssn
HAVING SUM(C.credits) > 30
)
92
Truy vấn 16
Liệt kê tên của các giáo sư đã dạy nhiều
khóa học nhất trong học kỳ mùa xuân
năm 2006 (S2006).
93
SQL
SELECT profname
FROM Professor
WHERE ssn IN(
SELECT ssn FROM Taught
WHERE semester = ‘S2006’
GROUP BY ssn
HAVING COUNT(*) =
(SELECT MAX(Num)
FROM
(SELECT ssn, COUNT(*) as Num
FROM Taught
WHERE semester = ‘S2006’
GROUP BY ssn)
)
)
94
Truy vấn 17
Liệt kê tên các khóa học mà giáo sư
‘Smith” đã dạy trong học kỳ mùa thu
năm 2007.
95
Đại số quan hệ
πcrsname(σprofname=‘Smith’(Professor)
σsemester=‘f2007’(Taught)
Course)
96
SQL
SELECT crsname
FROM Professor P, Taught T, Course C
WHERE P.profname = ‘Smith’ AND P.ssn = T.ssn AND
T.semester = ‘F2007’ AND T.crscode = C.crscode
97
Truy vấn 18
Hãy liệt kê theo thứ tự thời gian các
khóa học mà giáo sư có mã số ssn =
123456789 đã dạy trong từng học kỳ.
98
SQL
SELECT semester, COUNT(*)
FROM Taught
WHERE ssn = ‘123456789’
GROUP BY semester
ORDER BY semester ASC
99
Truy vấn 19
Hãy liệt kê theo thứ tự từ điển tên của
từng giáo sư và số các khóa học đã
giảng dạy.
100
SQL
SELECT P.profname, COUNT(*)
FROM Professor P, Taught T
WHERE P.ssn = T.ssn
GROUP BY P.ssn, P.profname
ORDER BY P.profname ASC
101
Truy vấn 20
Xóa các giáo sư đã dạy ít hơn 10 khóa
học.
102
SQL
DELETE FROM Professor
WHERE ssn IN(
SELECT ssn
FROM Taught
GROUP BY ssn
HAVING COUNT(*) < 10
)
103
Truy vấn 21
Xóa các giáo sư đã dạy ít hơn 40 tín
chỉ.
104
SQL
DELETE FROM Professor
WHERE ssn IN(
SELECT T.ssn
FROM Taught T, Course C
WHERE T.crscode = C.crscode
GROUP BY ssn
HAVING SUM(C.credits) < 40
)
105
Truy vấn 22
Liệt kê các giáo sư không dạy bất kỳ
khóa học nào trong 3 học kỳ (F2006,
W2007, F2007).
106
SQL
SELECT *
FROM Professor P
WHERE NOT EXISTS(
SELECT *
FROM Taught
WHERE P.ssn = T.ssn AND (T.semester = ‘F2006’ OR
T.semester = ‘W2007’ OR T.semester=‘F2007’))
)
107
Truy vấn 23
Liệt kê tên các khóa học mà giáo sư
Smith không dạy.
108
Đại số quan hệ
πcrsname(Course) -
πcrsname(σprofname=‘Smith’(Professor)
(Taught) Course)
109
SQL
SELECT crsname
FROM Course C
WHERE NOT EXISTS
SELECT *
FROM Professor P, Taught T
WHERE P.profname=‘Smith’ AND P.ssn = T.ssn AND
T.crscode = C.crscode
)
110
Truy vấn 24
Liệt kê tên các khóa học được giảng
dạy bởi tất cả giáo sư.
111
Đại số quan hệ
πcrscode, ssn(Taught)/ πssn(Professor)
112
SQL
SELECT crscode
FROM Taught T1
WHERE NOT EXISTS(
(SELECT ssn
FROM Professor)
EXCEPT
(SELECT ssn
FROM Taught T2
WHERE T2.crscode = T1.crscode)
)
113
Truy vấn 25
Liệt kê tên của các khóa học được
giảng dạy trong tất cả các học kỳ.
114
Đại số quan hệ
πcrscode, semester(Taught)/ πsemester(Taught)
115
SQL
SELECT crscode
FROM Taught T1
WHERE NOT EXISTS(
(SELECT semester
FROM Taught)
EXCEPT
(SELECT semester
FROM Taught T2
WHERE T2.crscode = T1.crscode)
)
116
Truy vấn 26
Liệt kê các khóa học CHỈ được giảng
dạy bởi các trợ lý giáo sư (assisitant)
professors.
117
Đại số quan hệ
πcrscode(Course) - πcrscode
(σstatus≠‘Assistant’(Professor) Taught)
118
SQL
SELECT crscode
FROM Course C
WHERE c.crscode NOT IN(
(SELECT crscode
FROM Taught T, Professor P
WHERE T.ssn = P.ssn AND P.status=‘Junior’
)
119
Truy vấn 27
Liệt kê tên của các giáo sư giảng dạy
nhiều khóa học nhất trong học kỳ Fall
2001.
120
SQL Solution
SELECT *
FROM Professor P1
WHERE Not EXISTS
(
SELECT *
FROM Professor P2
WHERE(
(SELECT COUNT(*)
FROM Taught
WHERE Taught.ssn = P2.ssn AND
Taught.semester=‘F2001’)
>
(SELECT COUNT(*)
FROM Taught
WHERE Taught.ssn = P1.ssn AND
Taught.semester=‘F2001’)
)
121
Truy vấn 28
Liệt kê tên của giáo sư có lương cao
nhất.
122
SQL Solution
SELECT *
FROM Professor
WHERE salary = (
(SELECT MAX(salary)
FROM Professor P
)
123
Truy vấn 29
Liệt kê tên của giáo sư có lương cao
xếp thứ nhì.
124
SQL Solution
SELECT *
FROM Professor P1
WHERE 1 = (
(SELECT COUNT(*)
FROM Professor P2
WHERE P2.salary > P1.salary
)

More Related Content

What's hot

Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uốngĐề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Dịch Vụ Viết Thuê Khóa Luận Zalo/Telegram 0917193864
 
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
BangNgoVanCong
 
Quản lý quan hệ khách hàng
Quản lý quan hệ khách hàngQuản lý quan hệ khách hàng
Quản lý quan hệ khách hàngAn Nguyen
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệutrieulongweb
 
Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu
Hoa Le
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Design
yht4ever
 
Dạy học dự án thcs
Dạy học dự án thcs Dạy học dự án thcs
Dạy học dự án thcs
Phú Nguyễn Ngọc
 
Bai tap-thuc-hanh-he-quan-tri-csdl
Bai tap-thuc-hanh-he-quan-tri-csdlBai tap-thuc-hanh-he-quan-tri-csdl
Bai tap-thuc-hanh-he-quan-tri-csdl
giang nguyen le
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
Thùy Linh
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
Hưởng Nguyễn
 
Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL
Hoa Le
 
Dai so quan he
Dai so quan heDai so quan he
Dai so quan hePhùng Duy
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
Trieu Nguyen
 
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTBài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
MasterCode.vn
 
Tóm tắt về track, sector, cluster, cylinder
Tóm tắt về track, sector, cluster, cylinderTóm tắt về track, sector, cluster, cylinder
Tóm tắt về track, sector, cluster, cylinder
hoamonkhach
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
AskSock Ngô Quang Đạo
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm
nataliej4
 
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
Tú Cao
 

What's hot (20)

Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uốngĐề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
 
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
 
Quản lý quan hệ khách hàng
Quản lý quan hệ khách hàngQuản lý quan hệ khách hàng
Quản lý quan hệ khách hàng
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
 
Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Design
 
Dạy học dự án thcs
Dạy học dự án thcs Dạy học dự án thcs
Dạy học dự án thcs
 
Bai tap-thuc-hanh-he-quan-tri-csdl
Bai tap-thuc-hanh-he-quan-tri-csdlBai tap-thuc-hanh-he-quan-tri-csdl
Bai tap-thuc-hanh-he-quan-tri-csdl
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
 
Chuong 6
Chuong 6Chuong 6
Chuong 6
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
 
Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL
 
Quản lý âm nhạc
Quản lý âm nhạcQuản lý âm nhạc
Quản lý âm nhạc
 
Dai so quan he
Dai so quan heDai so quan he
Dai so quan he
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
 
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTBài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
 
Tóm tắt về track, sector, cluster, cylinder
Tóm tắt về track, sector, cluster, cylinderTóm tắt về track, sector, cluster, cylinder
Tóm tắt về track, sector, cluster, cylinder
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm
 
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)
 

Viewers also liked

Ôn tập tuyển sinh cao học môn CSDL 2013
Ôn tập tuyển sinh cao học môn CSDL 2013Ôn tập tuyển sinh cao học môn CSDL 2013
Ôn tập tuyển sinh cao học môn CSDL 2013
anhhuycan83
 
Bao cao viem phuc mac ruot thua
Bao cao viem phuc mac ruot thuaBao cao viem phuc mac ruot thua
Bao cao viem phuc mac ruot thua
anhhuycan83
 
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuongSlide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
anhhuycan83
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
anhhuycan83
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql. .
 
Quoc
QuocQuoc
Writing case report
Writing case reportWriting case report
Writing case report
Hana Al-Sobayel
 
Cơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcCơ sở dữ liệu đại học
Cơ sở dữ liệu đại học
Chu TheKop
 
Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệuThành Luân
 
Nguyên tắc 5S và các loại lãng phí_BS.TS. Lý Quốc Trung
Nguyên tắc 5S và các loại lãng phí_BS.TS. Lý Quốc TrungNguyên tắc 5S và các loại lãng phí_BS.TS. Lý Quốc Trung
Nguyên tắc 5S và các loại lãng phí_BS.TS. Lý Quốc Trung
HA VO THI
 

Viewers also liked (12)

Ôn tập tuyển sinh cao học môn CSDL 2013
Ôn tập tuyển sinh cao học môn CSDL 2013Ôn tập tuyển sinh cao học môn CSDL 2013
Ôn tập tuyển sinh cao học môn CSDL 2013
 
Bao cao viem phuc mac ruot thua
Bao cao viem phuc mac ruot thuaBao cao viem phuc mac ruot thua
Bao cao viem phuc mac ruot thua
 
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuongSlide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
 
Quoc
QuocQuoc
Quoc
 
Access buoi 8
Access buoi 8Access buoi 8
Access buoi 8
 
17406 bai giang csdl nang cao
17406   bai giang csdl nang cao17406   bai giang csdl nang cao
17406 bai giang csdl nang cao
 
Writing case report
Writing case reportWriting case report
Writing case report
 
Cơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcCơ sở dữ liệu đại học
Cơ sở dữ liệu đại học
 
Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệu
 
Nguyên tắc 5S và các loại lãng phí_BS.TS. Lý Quốc Trung
Nguyên tắc 5S và các loại lãng phí_BS.TS. Lý Quốc TrungNguyên tắc 5S và các loại lãng phí_BS.TS. Lý Quốc Trung
Nguyên tắc 5S và các loại lãng phí_BS.TS. Lý Quốc Trung
 

Similar to Tsch csdl 01 - dhcntt

Cơ sở dữ liệu PTIT đại số quan hệ
Cơ sở dữ liệu PTIT đại số quan hệCơ sở dữ liệu PTIT đại số quan hệ
Cơ sở dữ liệu PTIT đại số quan hệ
NguynMinh294
 
Đề Thi HK2 Toán 8 - THCS Đinh Thiện Lý
Đề Thi HK2 Toán 8 - THCS Đinh Thiện LýĐề Thi HK2 Toán 8 - THCS Đinh Thiện Lý
Đề Thi HK2 Toán 8 - THCS Đinh Thiện Lý
Trung Tâm Gia Sư Việt Trí
 
Đề Thi HK2 Toán 9 - THCS Chu Văn An
Đề Thi HK2 Toán 9 - THCS  Chu Văn AnĐề Thi HK2 Toán 9 - THCS  Chu Văn An
Đề Thi HK2 Toán 9 - THCS Chu Văn An
Trung Tâm Gia Sư Việt Trí
 
Đề Thi HK2 Toán 9 - THCS Chu Văn An Quận 11
Đề Thi HK2 Toán 9 - THCS  Chu Văn An Quận 11Đề Thi HK2 Toán 9 - THCS  Chu Văn An Quận 11
Đề Thi HK2 Toán 9 - THCS Chu Văn An Quận 11
Trung Tâm Gia Sư Việt Trí
 
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duongDap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Linh Nguyễn
 
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duongDap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duongLinh Nguyễn
 
Định lý zsigmondy và Tính chất số học của đa thức.docx
Định lý zsigmondy và Tính chất số học của đa thức.docxĐịnh lý zsigmondy và Tính chất số học của đa thức.docx
Định lý zsigmondy và Tính chất số học của đa thức.docx
DV Viết Luận văn luanvanmaster.com ZALO 0973287149
 
Mathvn.com 11. toan tran phu lan 12014
Mathvn.com   11. toan tran phu lan 12014Mathvn.com   11. toan tran phu lan 12014
Mathvn.com 11. toan tran phu lan 12014
Miễn Cưỡng
 
Đề thi thử môn toán tốt nghiệp THPT Quốc Gia 2018 - Đề 14
Đề thi thử môn toán tốt nghiệp THPT Quốc Gia 2018 - Đề 14Đề thi thử môn toán tốt nghiệp THPT Quốc Gia 2018 - Đề 14
Đề thi thử môn toán tốt nghiệp THPT Quốc Gia 2018 - Đề 14
Nguyễn Thức
 
Thi hkii lop 6
Thi hkii lop 6Thi hkii lop 6
Thi hkii lop 6
Thu Trang NguyenTrangThu
 
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 118
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 118Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 118
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 118
mcbooksjsc
 
Đề Thi HK2 Toán 9 - THCS Bình Trị Đông A
Đề Thi HK2 Toán 9 - THCS  Bình Trị Đông AĐề Thi HK2 Toán 9 - THCS  Bình Trị Đông A
Đề Thi HK2 Toán 9 - THCS Bình Trị Đông A
Trung Tâm Gia Sư Việt Trí
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
Vo Oanh
 
TOÁN 9-CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL.pdf
TOÁN 9-CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL.pdfTOÁN 9-CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL.pdf
TOÁN 9-CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL.pdf
Blue.Sky Blue.Sky
 
Đề Thi HK2 Toán 9 - THCS Đống Đa
Đề Thi HK2 Toán 9 - THCS  Đống ĐaĐề Thi HK2 Toán 9 - THCS  Đống Đa
Đề Thi HK2 Toán 9 - THCS Đống Đa
Trung Tâm Gia Sư Việt Trí
 
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 124
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 124Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 124
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 124
mcbooksjsc
 
Tom tat-li-thuyet-va-cong-thuc-giai-nhanh-toan-12-tran-quoc-nghia
Tom tat-li-thuyet-va-cong-thuc-giai-nhanh-toan-12-tran-quoc-nghiaTom tat-li-thuyet-va-cong-thuc-giai-nhanh-toan-12-tran-quoc-nghia
Tom tat-li-thuyet-va-cong-thuc-giai-nhanh-toan-12-tran-quoc-nghia
BlogTi
 
De thi thu mon toan 2013
De thi thu mon toan 2013De thi thu mon toan 2013
De thi thu mon toan 2013adminseo
 

Similar to Tsch csdl 01 - dhcntt (20)

Cơ sở dữ liệu PTIT đại số quan hệ
Cơ sở dữ liệu PTIT đại số quan hệCơ sở dữ liệu PTIT đại số quan hệ
Cơ sở dữ liệu PTIT đại số quan hệ
 
Đề Thi HK2 Toán 8 - THCS Đinh Thiện Lý
Đề Thi HK2 Toán 8 - THCS Đinh Thiện LýĐề Thi HK2 Toán 8 - THCS Đinh Thiện Lý
Đề Thi HK2 Toán 8 - THCS Đinh Thiện Lý
 
Đề Thi HK2 Toán 9 - THCS Chu Văn An
Đề Thi HK2 Toán 9 - THCS  Chu Văn AnĐề Thi HK2 Toán 9 - THCS  Chu Văn An
Đề Thi HK2 Toán 9 - THCS Chu Văn An
 
Đề Thi HK2 Toán 9 - THCS Chu Văn An Quận 11
Đề Thi HK2 Toán 9 - THCS  Chu Văn An Quận 11Đề Thi HK2 Toán 9 - THCS  Chu Văn An Quận 11
Đề Thi HK2 Toán 9 - THCS Chu Văn An Quận 11
 
Phu luca ham
Phu luca hamPhu luca ham
Phu luca ham
 
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duongDap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
 
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duongDap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
Dap an-de-thi-mon-toan-vao-lop-10-chuyen-nam-2014-tinh-hai-duong
 
Định lý zsigmondy và Tính chất số học của đa thức.docx
Định lý zsigmondy và Tính chất số học của đa thức.docxĐịnh lý zsigmondy và Tính chất số học của đa thức.docx
Định lý zsigmondy và Tính chất số học của đa thức.docx
 
De thi giua hk1 toan 11
De thi giua hk1 toan 11De thi giua hk1 toan 11
De thi giua hk1 toan 11
 
Mathvn.com 11. toan tran phu lan 12014
Mathvn.com   11. toan tran phu lan 12014Mathvn.com   11. toan tran phu lan 12014
Mathvn.com 11. toan tran phu lan 12014
 
Đề thi thử môn toán tốt nghiệp THPT Quốc Gia 2018 - Đề 14
Đề thi thử môn toán tốt nghiệp THPT Quốc Gia 2018 - Đề 14Đề thi thử môn toán tốt nghiệp THPT Quốc Gia 2018 - Đề 14
Đề thi thử môn toán tốt nghiệp THPT Quốc Gia 2018 - Đề 14
 
Thi hkii lop 6
Thi hkii lop 6Thi hkii lop 6
Thi hkii lop 6
 
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 118
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 118Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 118
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 118
 
Đề Thi HK2 Toán 9 - THCS Bình Trị Đông A
Đề Thi HK2 Toán 9 - THCS  Bình Trị Đông AĐề Thi HK2 Toán 9 - THCS  Bình Trị Đông A
Đề Thi HK2 Toán 9 - THCS Bình Trị Đông A
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
 
TOÁN 9-CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL.pdf
TOÁN 9-CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL.pdfTOÁN 9-CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL.pdf
TOÁN 9-CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL.pdf
 
Đề Thi HK2 Toán 9 - THCS Đống Đa
Đề Thi HK2 Toán 9 - THCS  Đống ĐaĐề Thi HK2 Toán 9 - THCS  Đống Đa
Đề Thi HK2 Toán 9 - THCS Đống Đa
 
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 124
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 124Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 124
Đề thi môn Toán THPT Quốc Gia năm 2017 mã đề 124
 
Tom tat-li-thuyet-va-cong-thuc-giai-nhanh-toan-12-tran-quoc-nghia
Tom tat-li-thuyet-va-cong-thuc-giai-nhanh-toan-12-tran-quoc-nghiaTom tat-li-thuyet-va-cong-thuc-giai-nhanh-toan-12-tran-quoc-nghia
Tom tat-li-thuyet-va-cong-thuc-giai-nhanh-toan-12-tran-quoc-nghia
 
De thi thu mon toan 2013
De thi thu mon toan 2013De thi thu mon toan 2013
De thi thu mon toan 2013
 

Recently uploaded

30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
ngocnguyensp1
 
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
https://www.facebook.com/garmentspace
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
Nguyen Thanh Tu Collection
 
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptxDẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
nvlinhchi1612
 
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
duykhoacao
 
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nayẢnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
chinhkt50
 
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
Nguyen Thanh Tu Collection
 
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdfBAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
phamthuhoai20102005
 
AV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in englishAV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in english
Qucbo964093
 
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdfGIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
Điện Lạnh Bách Khoa Hà Nội
 

Recently uploaded (10)

30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
 
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
 
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptxDẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
 
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
 
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nayẢnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
 
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
 
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdfBAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
 
AV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in englishAV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in english
 
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdfGIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
 

Tsch csdl 01 - dhcntt

  • 1. 1 Trường Đại học Công nghệ thông tin Ôn thi cao học năm 2009 Đại số quan hệ và ngôn ngữ SQL Relational Algebra & SQL PGS.TS. Đỗ Phúc Khoa Hệ thống thông tin
  • 2. 2 Năm phép toán cơ bản • Selection ( σ ) : chọn. • Projection ( π ) : chiếu. • Descartes-product ( × ) tích Descartes. • Set-difference ( — ) hiệu • Union ( ∪ ) hợp.
  • 3. 3 sname rating yuppy 9 lubber 8 guppy 5 rusty 10 Chiếu (projection) sid sname rating age 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0 )2( , S ratingsname π S2 age 35.0 55.5Ví dụ: Chỉ giữ lại các thuộc tính được chỉ định trong danh sách chiếu. πage S( )2
  • 4. 4 Chọn -selection (σ) • Chọn các dòng thỏa điều kiện. σrating S >8 2( ) sname rating yuppy 9 rusty 10 π σsname rating rating S , ( ( )) >8 2 sid sname rating age 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0
  • 5. 5 Hợp và hiệu • Các phép toán này yêu cầu 2 quan hệ nhập phải tương thích – Cùng số thuộc tính. – Cùng tên và kiểu.
  • 6. 6 Hợp- Union sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0 44 guppy 5 35.0 28 yuppy 9 35.0 S S1 2∪ sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0 sid sname rating age 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0 S1 S2
  • 7. 7 Hiệu- Set Difference sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0 sid sname rating age 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0 S1 S2 sid sname rating age 22 dustin 7 45.0 S S1 2− S2 – S1 sid sname rating age 28 yuppy 9 35.0 44 guppy 5 35.0
  • 8. 8 Toán tử giao ( Intersection) • các quan hệ phải tương thích • Có thể biểu diễn qua phép hợp và phép hiệu R ∩ S = R − (R − S)
  • 9. 9 Giao - Intersection sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0 sid sname rating age 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0 S1 S2 sid sname rating age 31 lubber 8 55.5 58 rusty 10 35.0 S S1 2∩
  • 10. 10 Tích Descartes • Kết từng dòng của quan hệ đầu ( R ) với từng dòng của quan hệ thứ hai (S): R X S
  • 11. 11 Ví dụ về tích Descartes Students Courses stud# name course course# name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing 300 Bob CM Students X Courses = stud# Students.name course course# Courses.name 100 Fred PH PH Pharmacy 100 Fred PH CM Computing 200 Dave CM PH Pharmacy 200 Dave CM CM Computing 300 Bob CM PH Pharmacy 300 Bob CM CM Computing
  • 12. 12 Theta kết • Tích Descartes có áp dụng điều kiện: R ⋈ <condition> S
  • 13. 13 Ví dụ về Theta kết Students Courses stud# name course course# name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing 300 Bob CM Students ⋈ stud# = 200 Courses stud# Students.name course course# Courses.name 200 Dave CM PH Pharmacy 200 Dave CM CM Computing
  • 14. 14 Phép kết trong :Inner Join (Equijoin) • Phép kết Theta với điều kiện <condition> là bằng nhau (=) giữa khóa chính và khóa ngoại. R ⋈ <R.primary_key = S.foreign_key> S
  • 15. 15 Ví dụ về Inner Join Students Courses stud# name course course# name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing 300 Bob CM Students ⋈ course = course# Courses stud# Students.name course course# Courses.name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing 300 Bob CM CM Computing
  • 16. 16 Phép kết tự nhiên ( natural join) • Phép kết trong (inner join) sinh ra dữ liệu dư (trong ví dụ trước ta có: course và course#). Để loại bỏ trường hợp trùng này, ta dùng: π < stud#, Students.name, course, Courses.name > (Students ⋈ <course = course#> Courses) hay R1= Students ⋈ <course = course#> Courses R2= π < stud#, Students.name, course, Courses.name > R1 Kết quả này được gọi là kết tự nhiên (natural join) giữa Students và Courses
  • 17. 17 Ví dụ về kết tự nhiên (Natural Join) Students Courses stud# name course course# name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing 300 Bob CM R1= Students ⋈ <course = course#> Courses R2= π < stud#, Students.name, course, Courses.name > R1 stud# Students.name course Courses.name 100 Fred PH Pharmacy 200 Dave CM Computing 300 Bob CM Computing
  • 18. 18 Phép kết ngoài (Outer Joins) • Phép kết trong + các dòng của bảng không thỏa <condition>. • Phép kết ngoài trái: R <R.primary_key = S.foreign_key> S Tất cả các dòng trong R được giữ lại và các dòng không thỏa của S được dồn các trị NULL • Phép kết ngoài phải: R <R.primary_key = S.foreign_key> S Tất cả các dòng trong S được giữ lại và các dòng không thỏa của R được dồn các trị NULL
  • 19. 19 Ví dụ về phép kết ngoài trái Left Outer Join Students Courses stud# name course course# name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing 400 Peter EN CH Chemistry Students <course = course#> Courses stud# Students.name course course# Courses.name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing 400 Peter EN NULL NULL
  • 20. 20 Ví dụ về phép kết ngoài phải Right Outer Join Students Courses stud# name course course# name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing 400 Peter EN CH Chemistry Students <course = course#> Courses stud# Students.name course course# Courses.name 100 Fred PH PH Pharmacy 200 Dave CM CM Computing NULL NULL NULL CH Chemistry
  • 21. 21 Phép chia: Division • Dùng cho biểu thức “tất cả ” trong truy vấn sau: Tìm mã thủy thủ (sids) đặt tất cả (all) các thuyền (boats). • Vd: cho A có 2 thuộc tính x và y; B chỉ có một thuộc tính y: A/B (chia) chứa tất cả các bộ (x) sao cho mọi bộ y trong B đều có bộ xy trong A. { }),( AyxByxBA ∈∃∈∀=
  • 22. 22 Ví dụ phép chia A/B sno pno s1 p1 s1 p2 s1 p3 s1 p4 s2 p1 s2 p2 s3 p2 s4 p2 s4 p4 pno p2 pno p2 p4 pno p1 p2 p4 sno s1 s2 s3 s4 sno s1 s4 A B1 B2 A/B1 A/B2 B3 sno s1 A/B3
  • 23. 23 Ví dụ về phép chia • Tìm tất cả khách hàng có tài khoản tại tất cả chi nhánh nằm ở ChVille – Branch (bname, assets, bcity) – Account (bname, acct#, cname, balance)
  • 24. 24 Ví dụ về phép chia R1: Tìm tất cả các chi nhánh tại Chville R2: Tìm cặp (bname, cname) từ Account R3: Các khách của r2 có tài khoản tại tất cả chi nhánh có tên trong r1 123 )(2 )(1 , '' rrr Accountr r cnamebname Branch Chvillebcitybname ÷= = = = π σπ
  • 25. 25 Biểu diễn phép chia A/B dùng các toán tử cơ bản )))((( ABAxx −×ππ
  • 26. 26 Cơ sở dữ liệu • Cho CSDL câu lạc bộ thuyền buồm • Sailors(Sid,Sname, rating, age):thủy thủ • Boat(Bid,color): thuyền • Reserves(Sid,Bid,ReservedDate):đặt chỗ
  • 27. 27 Tìm tên thủy thủ (sailors) đặt thuyền có mã (bid) #103 π σsname bid serves Sailors(( Re ) ) =103 ><• Solution 1: • Solution 2: π σsname bid serves Sailors( (Re )) =103 >< Sailors(Sid,Sname, rating, age):thủy thủ Boat(Bid,color): thuyền Reserves(Sid,Bid,ReservedDate):đặt chỗ
  • 28. 28 Tìm tên thủy thủ (sailors) đặt thuyền màu đỏ ( red boat) • Thông tin về màu đỏ chỉ có trong quan hệ Boats, ta cần thêm một phép kết: π σsname color red Boats serves Sailors(( ' ' ) Re ) = >< >< Giải pháp tốt hơn ( tối ưu truy vấn): π π π σsname sid bid color red Boats s Sailors( (( ' ' ) Re ) ) = >< >< Sailors(Sid,Sname, rating, age):thủy thủ Boat(Bid,color): thuyền Reserves(Sid,Bid,ReservedDate):đặt chỗ
  • 29. 29 Tìm tên thủy thủ (sailors) đặt thuyền màu đỏ và màu xanh lục ρ π σ( , (( ' ' ) Re ))Tempred sid color red Boats serves = >< π sname Tempred Tempgreen Sailors(( ) )∩ >< ρ π σ( , (( ' ' ) Re ))Tempgreen sid color green Boats serves = ><
  • 30. 30 Tìm tên thủy thủ (sailors) đặt tất cả các thuyền • Phép chia: ρ π π( , ( , Re ) / ( ))Tempsids sid bid serves bid Boats π sname Tempsids Sailors( )>< Sailors(Sid,Sname, rating, age):thủy thủ Boat(Bid,color): thuyền Reserves(Sid,Bid,ReservedDate):đặt chỗ
  • 31. 31 Chứng minh biểu thức đại số quan hệ Cho q là quan hệ trên tập thuộc tính RS ( R∪S), chứng minh: q ⊆ ∏R( q) ∏S(q) Chứng minh: Cho t ∈ q, theo đ/n của phép chiếu t[R] ∈ ∏R( q) và t[S] ∈ ∏S(q) Ta có theo định nghĩa của phép kết: t[RS] ∈ ∏R( q) ∏S(q) Do vậy t =t[RS] ∈ ∏R( q) ∏S(q)
  • 32. 32 Chứng minh biểu thức đại số quan hệ • Cho quan hệ r(R) , A và B là hai thuộc tính của quan hệ R, chứng minh: σ A=a (σ B=b(r) ) = σ B=b (σ A=a(r) ) • Chứng minh: σ A=a (σ B=b(r) ) = σ A=a ({t ∈r | t[B]=b})= {t’ ∈ {t ∈ r | t[B]=b}| t’[A]=a }= {t ∈r| t[A]=a ∧ t[B]=b }= {t’ ∈ {t ∈ r | t[A]=a}| t’[B]=b }= σ B=b (σ A=a(r) )
  • 33. 33 Chứng minh biểu thức đại số quan hệ • Cho 2 quan hệ r, s , A là thuộc tính của quan hệ R,S. Chứng minh: σ A=a (r ∩ s) = σ A=a ( r) ∩ σ A=a(s) ) • Chứng minh: σ A=a (r ∩ s) =σ A=a (t ∈ r ∧ t ∈ s) = { t’ ∈ {t|t ∈ r ∧ t ∈ s}| t[A]=a}= {t|t ∈ r và t[A]=a} ∩ {t|t ∈ s và t[A]=a } σ A=a ( r ) ∩ σ A=a ( s )
  • 34. 34 Đại số quan hệ và ngôn ngữ SQL
  • 35. 35 Toán tử một ngôi (unary operations) Selection σ course = ‘Computing’ Students In SQL: Select * From Students Where course = ‘Computing’; Projection π stud#, name Students In SQL: Select stud#, name From Students; Selection & Projection π stud#, name (σ course = ‘Computing’ Students) In SQL: Select stud#, name From students Where course = ‘Computing’;
  • 36. 36 Toán tử hai ngôi/kết Binary Operations/Joins Tích Descartes: Students X Courses In SQL: Select * From Students, Courses; Theta kết: Students ⋈ <stud# =200> Courses In SQL: Select * From Students, Courses Where stud# = 200;
  • 37. 37 Toán tử hai ngôi/kết Inner Join (Equijoin): Students ⋈ <course=course#> Courses In SQL: Select * From Students, Courses Where course=course#; Natural Join: R1= Students ⋈ <course = course#> Courses R2= π < stud#, Students.name, course, Courses.name > R1 In SQL: Select stud#, Students.name, course, Courses.name From Students, Courses Where course=course#;
  • 38. 38 Phép kết ngoài (Outer Joins) Left Outer Join Students <course = course#> Courses In SQL: Select * From Students, Courses Where course = course#(+) Right Outer Join Students <course = course#> Courses In SQL: Select * From Students, Courses Where course(+) = course#
  • 39. 39 Tổ hợp các phép toán một ngôi và hai ngôi R1= Students ⋈ <course=course#> Courses R2= σ <address=“Aberdeen”> R1 R3= π <Students.name, Course.name> R2 In SQL: Select Students.name, Courses.name From Students, Courses Where course=course# AND address=“Aberdeen”;
  • 40. 40 Các toán tử tập hợp Union: R ∪ S In SQL: Select * From R Union Select * From S; Intersection: R ∩ S In SQL: Select * From R Intersect Select * From S; Difference: R - S In SQL: Select * From R Minus Select * From S;
  • 41. 41 Các toán tử trong SQL Between, In, Like, Not
  • 42. 42 Các toán tử SQL SELECT * FROM Book WHERE catno BETWEEN 200 AND 400; SELECT * FROM Product WHERE prod_desc BETWEEN ‘C’ AND ‘S’; SELECT * FROM Book WHERE catno NOT BETWEEN 200 AND 400;
  • 43. 43 Các toán tử SQL SELECT Catno FROM Loan WHERE Date-Returned IS NULL; SELECT Catno FROM Loan WHERE Date-Returned IS NOT NULL;
  • 44. 44 Các toán tử SQL SELECT Name FROM Member WHERE memno IN (100, 200, 300, 400); SELECT Name FROM Member WHERE memno NOT IN (100, 200, 300, 400);
  • 45. 45 Các toán tử SQL SELECT Name FROM Member WHERE address NOT LIKE ‘%Aberdeen%’; SELECT Name FROM Member WHERE Name LIKE ‘_ES%’; Note: In MS Access, use * and # instead of % and _
  • 46. 46 Chọn giá trị phân biệt Student stud# name address 100Fred Aberdeen 200Dave Dundee 300Bob Aberdeen SELECT Distinct address FROM Student; address Aberdeen Dundee
  • 47. 47 Các bài tập về SQL
  • 48. 48 Lược đồ CSDL • Professor(ssn, profname, status, salary) • Course(crscode, crsname, credits) • Taught(crscode, semester, ssn) Giá định (1) Mỗi khóa học chỉ có một giáo sư phụ trách trong trong mỗi học kỳ; (2) tất cả giáo sư đều có lương khác nhau; (3) tất cả giáo sư có tên khác nhau; (4) tất cả khóa học có tên khác nhau; (5) thuộc tính status có thể có các giá trị “Full”, “Associate”, và “Assistant”.
  • 49. 49 Truy vấn 1 Liệt kê tất cả giáo sư đã dạy khóa học có mã ‘CSC6710’ nhưng không dạy khóa học có mã ‘CSC7710’.
  • 51. 51 Lời giải SQL (SELECT ssn From Taught Where crscode = ‘CSC6710’) EXCEPT (SELECT ssn From Taught Where crscode = ‘CSC7710’))
  • 52. 52 Truy vấn 2 Liệt kê các giáo sư đã dạy các khóa học có mã ‘CSC6710’ và ‘CSC7710’.
  • 53. 53 Đại số quan hệ πssn(σcrscode=‘CSC6710’ ∧ crscode=‘CSC7710’ (Taught), SAI! πssn(σcrscode=‘CSC6710’(Taught)) ∩ πssn(σcrscode=‘CSC7710’(Taught)), ĐÚNG!
  • 54. 54 SQL SELECT T1.ssn From Taught T1, Taught T2, Where T1.crscode = ‘CSC6710’ AND T2.crscode=‘CSC7710’ AND T1.ssn=T2.ssn
  • 55. 55 Truy vấn 3 Liệt kê các giáo sư không dạy môn có mã số ‘CSC7710’.
  • 56. 56 Đại số quan hệ πssn(σcrscode<>‘csc7710’(Taught)), SAI! πssn(Professor)-πssn(σcrscode=‘csc7710’(Taught)), ĐÚNG!
  • 57. 57 SQL (SELECT ssn From Professor) EXCEPT (SELECT ssn From Taught T Where T.crscode = ‘CSC7710’)
  • 58. 58 Truy vấn 4 Liệt kê các giáo sư đã dạy môn học có mã ‘CSC6710’ và ‘CSC7710” trong cùng một học kỳ
  • 59. 59 Đại số quan hệ πssn(σcrscode1=‘CSC6710’(Taught[crscode1, ssn, semester]) σcrscode2=‘CSC7710’(Taught[crscode2, ssn, semester]))
  • 60. 60 SQL SELECT T1.ssn From Taught T1, Taught T2, Where T1.crscode = ‘CSC6710’ AND T2.crscode=‘CSC7710’ AND T1.ssn=T2.ssn AND T1.semester=T2.semester
  • 61. 61 Truy vấn 5 Liệt kê các giáo sư đã dạy môn có mã ‘CSC6710’ hay môn học có mã ‘CSC7710” nhưng không dạy cả hai môn.
  • 62. 62 Đại số quan hệ πssn(σcrscode=‘CSC6710’ ∨ crscode=‘CSC7710’(Taught))- (πssn(σcrscode=‘CSC6710’(Taught)) ∩ πssn(σcrscode=‘CSC7710’(Taught)))
  • 63. 63 SQL (SELECT ssn FROM Taught T WHERE T.crscode=‘CSC6710’ OR T.crscode=‘CSC7710’) Except (SELECT T1.ssn From Taught T1, Taught T2, Where T1.crscode = ‘CSC6710’) AND T2.crscode=‘CSC7710’ AND T1.ssn=T2.ssn)
  • 64. 64 Truy vấn 6 Trả về các khóa học không bao giờ mở.
  • 65. 65 Đại số quan hệ πcrscode(Course)-πcrscode(Taught)
  • 67. 67 Truy vấn 7 Liệt kê các khóa học được dạy tối thiểu trong 2 học kỳ.
  • 68. 68 Đại số quan hệ πcrscode(σ semester1 <> semester2( Taught[crscode, ssn1, semester1] Taught[crscode, ssn2, semester2]))
  • 69. 69 SQL SELECT T1.crscode FROM Taught T1, Taught T2 WHERE T1.crscode=T2.crscode AND T1.semester <> T2.semester
  • 70. 70 Truy vấn 8 Liệt kê các khóa học được dạy trong ít nhất là 10 học kỳ.
  • 71. 71 SQL SELECT crscode FROM Taught GROUP BY crscode HAVING COUNT(*) >= 10
  • 72. 72 Truy vấn 9 Liệt kê các khóa học được dạy trong ít nhất là 5 giáo sư khác nhau.
  • 73. 73 SQL SELECT crscode FROM (SELECT DISTINCT crscode, ssn FROM TAUGHT) GROUP BY crscode HAVING COUNT(*) >= 5 SELECT crscode FROM Course C WHERE (SELECT COUNT(DISTINCT *) FROM Taught T WHERE T.crscode = C.crscode ) >=5.
  • 74. 74 Truy vấn 10 Liệt kê tên các giáo sư đã dạy khóa học có mã ‘CSC6710’.
  • 75. 75 Đại số quan hệ πprofname(σcrscode=‘CSC6710’(Taught) Professor)
  • 76. 76 SQL SELECT P.profname FROM Professor P, Taught T WHERE P.ssn = T.ssn AND T.crscode = ‘CSC6710’
  • 77. 77 Truy vấn 11 Liệt kê tên của các full professors đã dạy môn học có mã ‘CSC6710’.
  • 78. 78 Đại số quan hệ πprofname(σcrscode=‘csc6710’(Taught) σstatus=‘full’(Professor))
  • 79. 79 SQL SELECT P.profname FROM Professor P, Taught T WHERE P.status = ‘full’ AND P.ssn = T.ssn AND T.crscode = ‘CSC6710’
  • 80. 80 Truy vấn 12 Liệt kê tên của các full professors đã dãy ít nhất là 2 khóa học trong một học kỳ.
  • 81. 81 Đại số quan hệ πprofname(πssn(σ crscode1 <> crscode2( Taught[crscode1, ssn, semester] Taught[crscode2, ssn, semester]))) σ status=‘full’(Professor))
  • 82. 82 SQL SELECT P.profname FROM Professor P, Taught T1, Taught T2 WHERE P.status = ‘Full’ AND P.ssn = T1.ssn AND T1.ssn = T2.ssn AND T1.crscode <> T2.crscode AND T1.semester = T2.semester
  • 83. 83 SQL SELECT P.profname FROM Professor P WHERE status = ‘Full’ AND ssn IN( SELECT ssn FROM Taught GROUP BY ssn, semester HAVING COUNT(*) >= 2 )
  • 84. 84 Truy vấn 13 Xóa các giáo sư không dạy khóa học nào.
  • 85. 85 SQL DELETE FROM Professor WHERE ssn NOT IN (SELECT ssn FROM Taught )
  • 86. 86 SQL DELETE FROM Professor WHERE ssn IN ( (SELECT ssn FROM Professor) EXCEPT (SELECT ssn FROM Taught) )
  • 87. 87 SQL DELETE FROM Professor P WHERE NOT EXISTS ( SELECT * FROM Taught T WHERE T.ssn = P.ssn )
  • 88. 88 Truy vấn 14 Đổi tất cả tín chỉ (credits) sang 4 cho các khóa học được giảng dạy trong học kỳ mùa thu năm 2006 (f2006 semester).
  • 89. 89 SQL UPDATE Course SET credits = 4 WHERE crscode IN ( SELECT crscode FROM Taught WHERE semester = ‘f2006’ )
  • 90. 90 Truy vấn 15 Liệt kê tên của các giáo sư đã dạy hơn 30 tín chỉ khóa học.
  • 91. 91 SQL SELECT profname FROM Professor WHERE ssn IN ( SELECT T.ssn FROM Taught T, Course C WHERE T.crscode = C.crscode GROUP BY T.ssn HAVING SUM(C.credits) > 30 )
  • 92. 92 Truy vấn 16 Liệt kê tên của các giáo sư đã dạy nhiều khóa học nhất trong học kỳ mùa xuân năm 2006 (S2006).
  • 93. 93 SQL SELECT profname FROM Professor WHERE ssn IN( SELECT ssn FROM Taught WHERE semester = ‘S2006’ GROUP BY ssn HAVING COUNT(*) = (SELECT MAX(Num) FROM (SELECT ssn, COUNT(*) as Num FROM Taught WHERE semester = ‘S2006’ GROUP BY ssn) ) )
  • 94. 94 Truy vấn 17 Liệt kê tên các khóa học mà giáo sư ‘Smith” đã dạy trong học kỳ mùa thu năm 2007.
  • 95. 95 Đại số quan hệ πcrsname(σprofname=‘Smith’(Professor) σsemester=‘f2007’(Taught) Course)
  • 96. 96 SQL SELECT crsname FROM Professor P, Taught T, Course C WHERE P.profname = ‘Smith’ AND P.ssn = T.ssn AND T.semester = ‘F2007’ AND T.crscode = C.crscode
  • 97. 97 Truy vấn 18 Hãy liệt kê theo thứ tự thời gian các khóa học mà giáo sư có mã số ssn = 123456789 đã dạy trong từng học kỳ.
  • 98. 98 SQL SELECT semester, COUNT(*) FROM Taught WHERE ssn = ‘123456789’ GROUP BY semester ORDER BY semester ASC
  • 99. 99 Truy vấn 19 Hãy liệt kê theo thứ tự từ điển tên của từng giáo sư và số các khóa học đã giảng dạy.
  • 100. 100 SQL SELECT P.profname, COUNT(*) FROM Professor P, Taught T WHERE P.ssn = T.ssn GROUP BY P.ssn, P.profname ORDER BY P.profname ASC
  • 101. 101 Truy vấn 20 Xóa các giáo sư đã dạy ít hơn 10 khóa học.
  • 102. 102 SQL DELETE FROM Professor WHERE ssn IN( SELECT ssn FROM Taught GROUP BY ssn HAVING COUNT(*) < 10 )
  • 103. 103 Truy vấn 21 Xóa các giáo sư đã dạy ít hơn 40 tín chỉ.
  • 104. 104 SQL DELETE FROM Professor WHERE ssn IN( SELECT T.ssn FROM Taught T, Course C WHERE T.crscode = C.crscode GROUP BY ssn HAVING SUM(C.credits) < 40 )
  • 105. 105 Truy vấn 22 Liệt kê các giáo sư không dạy bất kỳ khóa học nào trong 3 học kỳ (F2006, W2007, F2007).
  • 106. 106 SQL SELECT * FROM Professor P WHERE NOT EXISTS( SELECT * FROM Taught WHERE P.ssn = T.ssn AND (T.semester = ‘F2006’ OR T.semester = ‘W2007’ OR T.semester=‘F2007’)) )
  • 107. 107 Truy vấn 23 Liệt kê tên các khóa học mà giáo sư Smith không dạy.
  • 108. 108 Đại số quan hệ πcrsname(Course) - πcrsname(σprofname=‘Smith’(Professor) (Taught) Course)
  • 109. 109 SQL SELECT crsname FROM Course C WHERE NOT EXISTS SELECT * FROM Professor P, Taught T WHERE P.profname=‘Smith’ AND P.ssn = T.ssn AND T.crscode = C.crscode )
  • 110. 110 Truy vấn 24 Liệt kê tên các khóa học được giảng dạy bởi tất cả giáo sư.
  • 111. 111 Đại số quan hệ πcrscode, ssn(Taught)/ πssn(Professor)
  • 112. 112 SQL SELECT crscode FROM Taught T1 WHERE NOT EXISTS( (SELECT ssn FROM Professor) EXCEPT (SELECT ssn FROM Taught T2 WHERE T2.crscode = T1.crscode) )
  • 113. 113 Truy vấn 25 Liệt kê tên của các khóa học được giảng dạy trong tất cả các học kỳ.
  • 114. 114 Đại số quan hệ πcrscode, semester(Taught)/ πsemester(Taught)
  • 115. 115 SQL SELECT crscode FROM Taught T1 WHERE NOT EXISTS( (SELECT semester FROM Taught) EXCEPT (SELECT semester FROM Taught T2 WHERE T2.crscode = T1.crscode) )
  • 116. 116 Truy vấn 26 Liệt kê các khóa học CHỈ được giảng dạy bởi các trợ lý giáo sư (assisitant) professors.
  • 117. 117 Đại số quan hệ πcrscode(Course) - πcrscode (σstatus≠‘Assistant’(Professor) Taught)
  • 118. 118 SQL SELECT crscode FROM Course C WHERE c.crscode NOT IN( (SELECT crscode FROM Taught T, Professor P WHERE T.ssn = P.ssn AND P.status=‘Junior’ )
  • 119. 119 Truy vấn 27 Liệt kê tên của các giáo sư giảng dạy nhiều khóa học nhất trong học kỳ Fall 2001.
  • 120. 120 SQL Solution SELECT * FROM Professor P1 WHERE Not EXISTS ( SELECT * FROM Professor P2 WHERE( (SELECT COUNT(*) FROM Taught WHERE Taught.ssn = P2.ssn AND Taught.semester=‘F2001’) > (SELECT COUNT(*) FROM Taught WHERE Taught.ssn = P1.ssn AND Taught.semester=‘F2001’) )
  • 121. 121 Truy vấn 28 Liệt kê tên của giáo sư có lương cao nhất.
  • 122. 122 SQL Solution SELECT * FROM Professor WHERE salary = ( (SELECT MAX(salary) FROM Professor P )
  • 123. 123 Truy vấn 29 Liệt kê tên của giáo sư có lương cao xếp thứ nhì.
  • 124. 124 SQL Solution SELECT * FROM Professor P1 WHERE 1 = ( (SELECT COUNT(*) FROM Professor P2 WHERE P2.salary > P1.salary )