Professional Documents
Culture Documents
DHCNTT OnthiCaoHoc Bai 1-2-2009
DHCNTT OnthiCaoHoc Bai 1-2-2009
Nm php ton c bn
Selection ( Projection
) ()
: chn. : chiu.
sname
rating
9 8 5 10
Chiu (projection)
sid 28 31 44 58 sname rating age yuppy 9 35.0 lubber 8 55.5 guppy 5 35.0 rusty 10 35.0
S2
sname,rating (S 2)
age
35.0 55.5
age(S2)
Chn -selection ()
Chn cc dng tha iu kin.
sid 28 31 44 58
sname rating age yuppy 9 35.0 lubber 8 55.5 guppy 5 35.0 rusty 10 35.0
rating 9 10
Hp v hiu
Cc php ton ny yu cu 2 quan h nhp phi tng thch Cng s thuc tnh. Cng tn v kiu.
Hp- Union
sid 22 31 58
sid 28 31 44 58
sid
22 31 58 44 28
sname rating age yuppy 9 35.0 lubber 8 55.5 guppy 5 35.0 rusty 10 35.0
S2
S1 S 2
sid 22
sname dustin
S1 S2
sname rating age yuppy 9 35.0 lubber 8 55.5 guppy 5 35.0 rusty 10 35.0
S2
S2 S1
7
R S = R (R S)
Giao - Intersection
sid 22 31 58
sid 28 31 44 58
sname rating age yuppy 9 35.0 lubber 8 55.5 guppy 5 35.0 rusty 10 35.0
S2
sid 31 58
S1 S 2
9
Tch Descartes
Kt tng dng ca quan h u ( R ) vi tng dng ca quan h th hai (S): R X S
10
V d v tch Descartes
Students Courses
stud#
100 200 300
name
Fred Dave Bob
course
PH CM CM
course#
PH CM
name
Pharmacy Computing
Students X Courses =
stud#
100 100 200 200 300 300
Students.name
Fred Fred Dave Dave Bob Bob
course
PH PH CM CM CM CM
course#
PH CM PH CM PH CM
Courses.name
Pharmacy Computing Pharmacy Computing Pharmacy Computing
11
Theta kt
Tch Descartes c p dng iu kin: R <condition> S
12
V d v Theta kt
Students Courses
stud# name
100 200 300 Fred Dave Bob
course
PH CM CM
course#
PH CM
name
Pharmacy Computing
Students
stud#
stud# = 200
Courses
course course# Courses.name
Students.name
200 200
Dave Dave
CM CM
PH CM
Pharmacy Computing
13
14
V d v Inner Join
Students Courses
stud# name
100 200 300 Fred Dave Bob
course
PH CM CM
course#
PH CM
name
Pharmacy Computing
Students
stud#
course = course#
Courses
course course# Courses.name
Students.name
PH CM CM
PH CM CM
15
16
stud# name
100 200 300 Fred Dave Bob
course
PH CM CM
course#
PH CM
name
Pharmacy Computing
R1= Students <course = course#> Courses R2= < stud#, Students.name, course, Courses.name > R1
stud# Students.name course Courses.name
PH CM CM
17
<R.primary_key = S.foreign_key>
18
stud# name
100 200 400 Fred Dave Peter
course
PH CM EN
course#
PH CM CH
name
Pharmacy Computing Chemistry
Students
stud#
<course = course#>
Courses
course# Courses.name
Students.name
course
PH CM EN
PH CM NULL
19
stud# name
100 200 400 Fred Dave Peter
course
PH CM EN
course#
PH CM CH
name
Pharmacy Computing Chemistry
Students
stud#
<course = course#>
Courses
course# Courses.name
Students.name
course
PH CM NULL
PH CM CH
20
{x y
B( x, y A)
21
B1
sno s1 s2 s3 s4
pno p2 p4
B2
sno s1 s4
pno p1 p2 p4
B3
A/B1
A/B2
A/B3
22
sno s1
V d v php chia
Tm tt c khch hng c ti khon ti tt c chi nhnh nm ChVille
23
V d v php chia
R1: Tm tt c cc chi nhnh ti Chville R2: Tm cp (bname, cname) t Account R3: Cc khch ca r2 c ti khon ti tt c chi nhnh c tn trong r1
r1= r 2 =
bname
Branch )
r 3 = r 2 r1
bname , cname
( Account )
24
x (( x( A)B) A)
25
C s d liu
Cho CSDL cu lc b thuyn bum Sailors(Sid,Sname, rating, age):thy th Boat(Bid,color): thuyn Reserves(Sid,Bid,ReservedDate):t ch
26
Tm tn thy th (sailors) t thuyn c m (bid) #103 Solution 1: sname(( Reserves) > < Sailors) bid =103
sname (
bid = 103 (Re serves > < Sailors))
Solution 2:
27
sname (( Boats) > < Re serves > < Sailors) color =' red '
sname ( (( Boats) > < Re s) > < Sailors) sid bid color =' red '
Sailors(Sid,Sname, rating, age):thy th Boat(Bid,color): thuyn Reserves(Sid,Bid,ReservedDate):t ch
28
sid
(Tempgreen,
sid
((
(Tempsids, (
sid, bid
Re serves) / (
bid
Boats))
31
33
34
Projection
In SQL:
Select stud#, name From students Where course = Computing;
35
In SQL:
Select * From Students, Courses;
In SQL:
Select * From Students, Courses Where stud# = 200;
36
In SQL:
Select * From Students, Courses Where course=course#;
<course = course#>
Courses
In SQL:
Select stud#, Students.name, course, Courses.name From Students, Courses Where course=course#;
37
In SQL:
Select * From Students, Courses Where course = course#(+)
In SQL:
Select * From Students, Courses Where course(+) = course#
38
In SQL:
Select Students.name, Courses.name From Students, Courses Where course=course# AND address=Aberdeen;
39
Cc ton t tp hp
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;
40
41
Cc ton 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;
42
Cc ton t SQL
SELECT Catno FROM Loan WHERE Date-Returned IS NULL; SELECT Catno FROM Loan WHERE Date-Returned IS NOT NULL;
43
Cc ton 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);
44
Cc ton 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 _
45
stud#
name
address
46
Cc bi tp v SQL
47
Lc CSDL
Professor(ssn, profname, status, salary) Course(crscode, crsname, credits) Taught(crscode, semester, ssn)
Gi nh (1) Mi kha hc ch c mt gio s ph trch trong trong mi hc k; (2) tt c gio s u c lng khc nhau; (3) tt c gio s c tn khc nhau; (4) tt c kha hc c tn khc nhau; (5) thuc tnh status c th c cc gi tr Full, Associate, v Assistant.
48
Truy vn 1
49
Li gii SQH
ssn(crscode=CSC6710(Taught))ssn(crscode=CSC7710(Taught))
50
Li gii SQL
(SELECT ssn From Taught Where crscode = CSC6710) EXCEPT (SELECT ssn From Taught Where crscode = CSC7710))
51
Truy vn 2
52
i s quan h
53
SQL
SELECT T1.ssn From Taught T1, Taught T2, Where T1.crscode = CSC6710 AND T2.crscode=CSC7710 AND T1.ssn=T2.ssn
54
Truy vn 3
55
i s quan h
SQL
(SELECT ssn From Professor) EXCEPT (SELECT ssn From Taught T Where T.crscode = CSC7710)
57
Truy vn 4
58
i s quan h
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
60
Truy vn 5
i s quan h
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)
63
Truy vn 6
64
i s quan h
crscode(Course)-crscode(Taught)
65
SQL
66
Truy vn 7
67
i s quan h
crscode( semester1 <> semester2( Taught[crscode, ssn1, semester1] Taught[crscode, ssn2, semester2]))
68
SQL
SELECT T1.crscode FROM Taught T1, Taught T2 WHERE T1.crscode=T2.crscode AND T1.semester <> T2.semester
69
Truy vn 8
70
SQL
71
Truy vn 9
72
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.
73
Truy vn 10
74
i s quan h
profname(crscode=CSC6710(Taught) Professor)
75
SQL
SELECT P.profname FROM Professor P, Taught T WHERE P.ssn = T.ssn AND T.crscode = CSC6710
76
Truy vn 11
77
i s quan h
profname(crscode=csc6710(Taught) status=full(Professor))
78
SQL
SELECT P.profname FROM Professor P, Taught T WHERE P.status = full AND P.ssn = T.ssn AND T.crscode = CSC6710
79
Truy vn 12
80
i s quan h
profname(ssn( crscode1 <> crscode2( Taught[crscode1, ssn, semester] Taught[crscode2, ssn, semester]))) status=full(Professor))
81
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
82
SQL
SELECT P.profname FROM Professor P WHERE status = Full AND ssn IN( SELECT ssn FROM Taught GROUP BY ssn, semester HAVING COUNT(*) >= 2 )
83
Truy vn 13
84
SQL
DELETE FROM Professor WHERE ssn NOT IN (SELECT ssn FROM Taught )
85
SQL
DELETE FROM Professor WHERE ssn IN ( (SELECT ssn FROM Professor) EXCEPT (SELECT ssn FROM Taught) )
86
SQL
DELETE FROM Professor P WHERE NOT EXISTS ( SELECT * FROM Taught T WHERE T.ssn = P.ssn )
87
Truy vn 14
i tt c tn ch (credits) sang 4 cho cc kha hc c ging dy trong hc k ma thu nm 2006 (f2006 semester).
88
SQL
UPDATE Course SET credits = 4 WHERE crscode IN ( SELECT crscode FROM Taught WHERE semester = f2006 )
89
Truy vn 15
90
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 )
91
Truy vn 16
92
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) ) )
93
Truy vn 17
94
i s quan h
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
96
Truy vn 18
Hy lit k theo th t thi gian cc kha hc m gio s c m s ssn = 123456789 dy trong tng hc k.
97
SQL
SELECT semester, COUNT(*) FROM Taught WHERE ssn = 123456789 GROUP BY semester ORDER BY semester ASC
98
Truy vn 19
99
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
100
Truy vn 20
101
SQL
DELETE FROM Professor WHERE ssn IN( SELECT ssn FROM Taught GROUP BY ssn HAVING COUNT(*) < 10 )
102
Truy vn 21
Xa cc gio s dy t hn 40 tn ch.
103
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 )
104
Truy vn 22
105
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)) )
106
Truy vn 23
107
i s quan h
108
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 )
109
Truy vn 24
110
i s quan h
111
SQL
SELECT crscode FROM Taught T1 WHERE NOT EXISTS( (SELECT ssn FROM Professor) EXCEPT (SELECT ssn FROM Taught T2 WHERE T2.crscode = T1.crscode) )
112
Truy vn 25
113
i s quan h
114
SQL
SELECT crscode FROM Taught T1 WHERE NOT EXISTS( (SELECT semester FROM Taught) EXCEPT (SELECT semester FROM Taught T2 WHERE T2.crscode = T1.crscode) )
115
Truy vn 26
116
i s quan h
Taught)
117
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 )
118
Truy vn 27
119
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) )
120
Truy vn 28
121
SQL Solution
122
Truy vn 29
123
SQL Solution
SELECT * FROM Professor P1 WHERE 1 = ( (SELECT COUNT(*) FROM Professor P2 WHERE P2.salary > P1.salary )
124