Ôn tập cơ sở dữ liệu tuyển sinh cao học ĐHCNTT. Giáo trình của thầy PGS.TS. Đỗ Phúc. Khoa Hệ thống thông tin
Phần 1: Đại số quan hệ và ngôn ngữ SQL (Relational Algebra & SQL) 2009
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng phần mềm quản lý quán cà phê, cho các bạn có thể tham khảo
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverMasterCode.vn
Các quy định của công việc trong thực tế
• Trong thực tế mỗi công việc đều có những quy định phải tuân theo
− Mỗi quy định trở thành một hay nhiều ràng buộc trong CSDL
− Một số quy định đơn giản, mặc nhiên thấy cũng phải mô tả trong CSDL
• Ví dụ quản lý đơn đặt hàng
− Số lượng đặt hàng phải lớn hơn 0
− Các số hoá đơn giao hàng không được trùng nhau
− Ngày dự kiến nhận hàng phải sau ngày đặt hàng
− Một đơn đặt hàng phải do một khách hành lập ra
− Mỗi một mặt hàng phải có nhà cung cấp (mỗi mặt hàng phải có xuất xứ)
− Số lượng mặt hàng giao cho khách phải nhỏ hơn hay tối đa bằng với số lượng đặt
− Hai nhà cung cấp có thể trùng tên nhưng là hai nhà cung cấp khác nhau
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng phần mềm quản lý quán cà phê, cho các bạn có thể tham khảo
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverMasterCode.vn
Các quy định của công việc trong thực tế
• Trong thực tế mỗi công việc đều có những quy định phải tuân theo
− Mỗi quy định trở thành một hay nhiều ràng buộc trong CSDL
− Một số quy định đơn giản, mặc nhiên thấy cũng phải mô tả trong CSDL
• Ví dụ quản lý đơn đặt hàng
− Số lượng đặt hàng phải lớn hơn 0
− Các số hoá đơn giao hàng không được trùng nhau
− Ngày dự kiến nhận hàng phải sau ngày đặt hàng
− Một đơn đặt hàng phải do một khách hành lập ra
− Mỗi một mặt hàng phải có nhà cung cấp (mỗi mặt hàng phải có xuất xứ)
− Số lượng mặt hàng giao cho khách phải nhỏ hơn hay tối đa bằng với số lượng đặt
− Hai nhà cung cấp có thể trùng tên nhưng là hai nhà cung cấp khác nhau
Chương 4. Chuẩn hóa cơ sở dữ liệu
4.1 Các bất thường khi cập nhật dữ liệu
4.2 Sự cần thiết phải chuẩn hóa CSDL
4.3 Tìm hiểu một số khái niệm
4.4 Quy trình chuẩn hóa CSDL
4.5 Khái niệm Khử chuẩn
Chương 2. Các khái niệm trong CSDL
2.1 Các bước thiết kế CSDL quan hệ
2.2 Các thành phần dữ liệu mức khái niệm
2.3 Các khái niệm mức vật lý
2.4 Hệ quản trị CSDL Microsoft Access
2.5 Mô hình thực thể liên kết
Trước đây, chúng ta mới chỉ biết đến dữ liệu có cấu trúc (structure data), ngày nay, với sự kết hợp của dữ liệu và internet, đã xuất hiện một dạng khác của dữ liệu - Big
data (dịch là “dữ liệu lớn”). Dữ liệu này có thể từ các nguồn như: hồ sơ hành chính,giao dịch điện tử, dòng trạng thái (status), chia sẻ hình ảnh, bình luận, nhắn tin...của chính
chúng ta, nói cách khác chúng là dữ liệu được sản sinh qua quá trình chia sẻ thông tin trực tuyến liên tục của người sử dụng. Để cung cấp cái nhìn tổng quan, chúng tôi xin giới thiệu tóm tắt những nét chính về dữ liệu lớn cũng như những cơ hội và thách thức mà dữ liệu lớn mang lại.
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)Tú Cao
Slide báo cáo tổng quan về Dos (DDOS) - HTTP POST DOS cách hoạt động, demo tấn công đánh giá hệ thống và cách phòng tránh HTTP POST DOS cho APACHE và IIS.
Nguyễn Cao Tú . (nguyencaotu.com)
Chương 4. Chuẩn hóa cơ sở dữ liệu
4.1 Các bất thường khi cập nhật dữ liệu
4.2 Sự cần thiết phải chuẩn hóa CSDL
4.3 Tìm hiểu một số khái niệm
4.4 Quy trình chuẩn hóa CSDL
4.5 Khái niệm Khử chuẩn
Chương 2. Các khái niệm trong CSDL
2.1 Các bước thiết kế CSDL quan hệ
2.2 Các thành phần dữ liệu mức khái niệm
2.3 Các khái niệm mức vật lý
2.4 Hệ quản trị CSDL Microsoft Access
2.5 Mô hình thực thể liên kết
Trước đây, chúng ta mới chỉ biết đến dữ liệu có cấu trúc (structure data), ngày nay, với sự kết hợp của dữ liệu và internet, đã xuất hiện một dạng khác của dữ liệu - Big
data (dịch là “dữ liệu lớn”). Dữ liệu này có thể từ các nguồn như: hồ sơ hành chính,giao dịch điện tử, dòng trạng thái (status), chia sẻ hình ảnh, bình luận, nhắn tin...của chính
chúng ta, nói cách khác chúng là dữ liệu được sản sinh qua quá trình chia sẻ thông tin trực tuyến liên tục của người sử dụng. Để cung cấp cái nhìn tổng quan, chúng tôi xin giới thiệu tóm tắt những nét chính về dữ liệu lớn cũng như những cơ hội và thách thức mà dữ liệu lớn mang lại.
HTTP POST DOS (Denial Of Service) (Demo tấn công DOS, phòng chống)Tú Cao
Slide báo cáo tổng quan về Dos (DDOS) - HTTP POST DOS cách hoạt động, demo tấn công đánh giá hệ thống và cách phòng tránh HTTP POST DOS cho APACHE và IIS.
Nguyễn Cao Tú . (nguyencaotu.com)
Phụ thuộc hàm và các dạng chuẩn - dhcnttanhhuycan83
Ôn tập cơ sở dữ liệu tuyển sinh cao học ĐHCNTT. Giáo trình của thầy PGS.TS. Đỗ Phúc. Khoa Hệ thống thông tin
Phần 2: Phụ thuộc hàm và các dạng chuẩn
( Functional Dependency and Normal Forms) - 2009
Luận văn Định lý zsigmondy và Tính chất số học của đa thức.docx,các bạn có thể tham khảo thêm nhiều tài liệu và luận văn ,bài mẫu điểm cao tại teamluanvan.com
Tài liệu dành cho lớp 9 " NẮM TRỌN CHUYÊN ĐỀ HÀM SỐ BẬC NHẤT VÀ PARABOL" thường là câu 3b trong đề thi. Có phân chia dạng cụ thể và bài tập tự luyện. Tài liệu gồm 79 trang với hệ thống câu hỏi, bài tập đa dạng được trích dẫn từ khoảng 500 đề thi chính thức và thi thử của các Sở, các trường trong toàn quốc kèm đáp án chi tiết. Tài liệu rất hay để các em tham khảo
Để xem full tài liệu Xin vui long liên hệ page để được hỗ trợ
:
https://www.facebook.com/garmentspace/
https://www.facebook.com/thuvienluanvan01
HOẶC
https://www.facebook.com/thuvienluanvan01
https://www.facebook.com/thuvienluanvan01
tai lieu tong hop, thu vien luan van, luan van tong hop, do an chuyen nganh
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
https://dienlanhbachkhoa.net.vn
Hotline/Zalo: 0338580000
Địa chỉ: Số 108 Trần Phú, Hà Đông, Hà Nội
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
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
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 ∈∃∈∀=
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 )
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;
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
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!
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)
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.
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
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ỳ.
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’))
)
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
)
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’)
)