Bài giảng Cơ sở dữ liệu: Chương 3 - Nguyễn Hồng Phương
lượt xem 4
download
Bài giảng "Cơ sở dữ liệu - Chương 3: Ngôn ngữ định nghĩa và thao tác dữ liệu đối với mô hình quan hệ" cung cấp cho người học các kiến thức: Các cách tiếp cận đối với thiết kế ngôn ngữ của CSDL quan hệ, một số ngôn ngữ dữ liệu mức cao. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cơ sở dữ liệu: Chương 3 - Nguyễn Hồng Phương
- 1/30/2012 Nội dung Ngôn ngữ định nghĩa • Các cách tiếp cận đối với thiết kế và thao tác dữ liệu đối ngôn ngữ của CSDL quan hệ với mô hình quan hệ – Giới thiệu một số ngôn ngữ và phân loại So sánh và đánh giá Nguyễn Hồng Phương • Một số ngôn ngữ dữ liệu mức cao phuongnh@soict.hut.edu.vn http://is.hut.edu.vn/~phuongnh – QBE (Query By Example) – SQL (Structured Query Language) Bộ môn Hệ thống thông tin Viện Công nghệ thông tin và Truyền thông • Kết luận Đại học Bách Khoa Hà Nội 1 2 CSDL ví dụ 1 CSDL ví dụ 2 Supplier SID SNAME SIZE CITY Student Takes Enrol S1 Dustin 100 London SupplyProduct Id Name Suburb SID SNO SID Course S2 Rusty 70 Paris SID PID QUANTITY 1108 Robert Kew 1108 21 3936 101 S3 Lubber 120 London S1 P1 500 3936 Glen Bundoora 1108 23 1108 113 S4 M&M 60 NewYork S1 P2 400 S5 MBI 1000 NewOrlean 8507 Norman o a Bundoora u doo a 8507 23 8507 101 S1 P4 100 S6 Panda 150 London 8452 Mary Balwyn 8507 29 S2 P3 250 S2 P4 50 Course Subject Product S3 P1 300 PID PNAME COLOR S3 P2 350 No Name Dept No Name Dept P1 Screw red S3 P6 200 113 BCS CSCE 21 Systems CSCE P2 Screw green S4 P1 10 101 MCS CSCE 23 Database CSCE P3 Nut red S5 P2 200 29 VB CSCE P4 Bolt blue 18 Algebra Maths P5 Plier green 3 4 P6 Scissors blue Đặt vấn đề: các câu hỏi Câu hỏi (tiếp) Student Id Name Suburb • Tìm tên của các sinh Student • Tìm các sinh viên 1108 Robert Kew viên nào sống ở đăng ký khoá học 3936 Glen Bundoora Id Name Suburb Bundoora 1108 Robert Kew có mã số 113 8507 Norman Bundoora 8452 y Mary Balwyn y – Tì Tìm các á bộ của ủ bảbảng 3936 Gl Glen B d Bundoora – Tìm các giá trị SID Enrol Student có Suburb = 8507 Norman Bundoora trong bảng Enrol có SID Course Bundoora 8452 Mary Balwyn Course tương ứng 3936 101 là 113 1108 113 – Đưa ra các giá trị của – Đưa các bộ của 8507 101 thuộc tính Name của các bộ này bảng Student có Course SID trong các giá No Name Dept trị tìm thấy ở trên 113 BCS CSCE 5 101 MCS CSCE 6 1 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Phân loại các ngôn ngữ truy vấn • Ngôn ngữ đại số – 1 câu hỏi = 1 tập các phép toán trên các quan hệ – Được biểu diễn bởi một biểu thức đại số (quan hệ) Ngôn g ngữ g đại ạ số q quan hệ ệ • Ngôn N ô ngữ ữ tính tí h toán t á vịị từ – 1 câu hỏi = 1 mô tả của các bộ mong muốn – Được đặc tả bởi một vị từ mà các bộ phải thoả mãn – Phân biệt 2 lớp: • ngôn ngữ tính toán vị từ biến bộ • ngôn ngữ tính toán vị từ biến miền 7 8 Phân loại các phép toán đại số quan hệ Tổng quan • Gồm các phép toán tương ứng với các • Phép toán quan hệ thao tác trên các quan hệ – Phép chiếu (projection) • Mỗi phép toán – Phép chọn (selection) – Đầu vào: một hay nhiều quan hệ – Phép kết nối (join) – Đầu ra: một quan hệ – Phép chia (division) • Biểu thức đại số quan hệ = chuỗi các • Phép toán tập hợp phép toán – Phép hợp (union) • Kết quả thực hiện một biểu thức đại số là – Phép giao (intersection) một quan hệ – Phép trừ (difference) • Được cài đặt trong phần lớn các hệ CSDL – Phép tích đề-các (cartesian product) hiện nay 9 10 Phép toán tập hợp Phép hợp • Đ/n: gồm các bộ thuộc ít nhất 1 trong 2 • Định nghĩa: Quan hệ khả hợp quan hệ đầu vào – 2 quan hệ r và s được gọi là khả hợp • 2 quan hệ đầu vào phải là khả hợp nếu chúng được xác định trên cùng 1 • Cú pháp: R = R1 R2 miền ề ggiá á ttrịị R1 R1 R2 R2 – r xác định trên D1x D2 x…x Dn Subject1 Kết quả Subject2 – s xác định trên D’1x D’2 x…x D’m Name Course Name Course Systems BCS – Di = D’i và n=m Systems BCS Name Course Database BCS DataMining MCS Database Database BCS MCS Writing BCS Database MCS Algebra MCS Algebra MCS DataMining MCS 11 Writing 12 BCS 2 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Phép giao Phép trừ • Đ/n: gồm các bộ thuộc cả hai quan • Đ/n: gồm các bộ thuộc quan hệ thứ nhất nhưng hệ đầu vào không thuộc quan hệ thứ hai – 2 quan hệ phải là khả hợp • Cú pháp: R1 R2 • Cú pháp: R1 \ R2 hoặc R1 - R2 R1 R2 R1 R1 \ R2 R1 R2 R2 Subject1 Subject2 Subject1 Subject2 Name Course Name Course Kết quả Kết quả Name Course Name Course Systems BCS DataMining MCS Name Course Name Course Systems BCS DataMining MCS Database BCS Database MCS Systems BCS Database BCS \ Database MCS Database BCS Database MCS Systems BCS Database MCS Algebra MCS Database MCS Systems BCS Algebra MCS Writing BCS Algebra MCS Writing BCS 13 14 Phép tích Đề- Đề-các Ví dụ phép tích Đề- Đề-các Student Sport • Đ/n: là kết nối giữa từng bộ của Id Name Suburb SportID Sport quan hệ thứ nhất với mỗi bộ của 1108 Robert Kew X 05 Swimming quan hệ thứ hai 3936 Glen Bundoora 09 Dancing 8507 Norman Bundoora • Cú pháp: R = R1 x R2 8452 Mary Balwyn Student_Sport p Id Name Suburb SportID Sport a x 1108 Robert Kew 05 Swimming a a y 3936 Glen Bundoora 05 Swimming x b x b c X y b y 8507 Norman Bundoora 05 Swimming d c c x 8452 Mary Balwyn 05 Swimming y d x 1108 Robert Kew 09 Dancing d y 3936 Glen Bundoora 09 Dancing 8507 Norman Bundoora 09 Dancing 15 8452 Mary Balwyn 09 Dancing 16 Phép chiếu Phép chọn • Đ/n: Lựa chọn các bộ trong một quan hệ thoả mãn điều kiện cho trước. • Đ/n: Lựa chọn một số thuộc tính từ một quan hệ. • Cú pháp: A1, A2,... ( R ) • Cú pháp: condition (R ) R1 R2 R2 C1 C2 C3 C4 C5 C2 C5 R3 R3 R4 Ví dụ: đưa ra danh sách tên của tất cả các sinh • Ví dụ: đưa ra danh sách những sinh viên viên sống ở Bundoora Student suburb"Bundoora ( Student ) Student name (Student ) Id Name Suburb Id Name Suburb Name Id Name Suburb 1108 Robert Kew Robert 1108 Robert Kew 3936 Glen Bundoora 3936 Glen Bundoora Glen 3936 Glen Bundoora 8507 Norman Bundoora 8507 Norman Bundoora Norman 8507 Norman Bundoora 8452 Mary Balwyn Mary 8452 Mary Balwyn 17 18 3 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Phép chọn - Điều kiện ? Ví dụ: chọn và chiếu • Điều kiện chọn còn gọi là biểu thức • Đưa ra tên của các sinh viên sống ở chọn. Bundoora • Biểu thức chọn F: một tổ hợp logic của các toán hạng. ạ g Mỗi toán hạngạ g là name ( suburb "Bundoora Student ) một phép so sánh đơn giản giữa 2 Student biến là hai thuộc tính hoặc giữa 1 Id Name Suburb biến là 1 thuộc tính và 1 giá trị hằng. 1108 Robert Kew Name 3936 Glen Bundoora Glen – Các phép so sánh trong F: , , ,, , 8507 Norman Bundoora Norman – Các phép toán logic trong F: , , 8452 Mary Balwyn 19 20 Phép kết nối (join) 2 quan hệ r và s Phép kết nối - Ví dụ: • Khái niệm ghép bộ: u = (a1,..,an);v=(b1,..,bm) • Đưa ra danh sách các sinh viên và (u,v) = (a1,..,an,b1,..,bm) mã khoá học mà sinh viên đó tham • Phép kết nối 2 quan hệ thực chất là phép ghép các cặp bộ của 2 quan hệ thỏa mãn 1 điều kiện nào đó gia Student Id SID Enrol Student Enrol trên chúng. Id Name Suburb SID Course • Biểu thức kết nối là phép hội của các toán hạng, hạng 1108 R b t Robert K Kew 3936 101 Id=SID mỗi toán hạng là 1 phép so sánh đơn giản giữa 1 3936 Glen Bundoora 1108 113 thuộc tính của quan hệ r và 1 thuộc tính của quan 8507 Norman Bundoora 8507 101 hệ s. 8452 Mary Balwyn • Cú pháp: R1 join _ condition R 2 Kết quả SID Id Name Suburb Course 1108 1108 Robert Kew 113 a r r x a r x 3936 3936 Glen Bundoora 101 b r s y b r x 8507 8507 Norman Bundoora 101 21 22 c v t z Phép kết nối bằng- bằng-kết nối tự nhiên Phép kết nối tự nhiên - Ví dụ: • Định nghĩa: Nếu phép so sánh trong điều kiện kết nối là phép so sánh bằng thì kết nối gọi là kết nối bằng • Định nghĩa: Phép kết nối bằng trên Takes Enrol các thuộc tính cùng tên của 2 quan SID SNO SID Course S SID S O SNO C Course hệ và sau khi kết nối 1 thuộc tính 1108 21 113 * 1108 21 3936 101 trong 1 cặp thuộc tính trùng tên đó 1108 23 1108 113 1108 8507 23 23 113 101 8507 23 8507 101 sẽ bị loại khỏi quan hệ kết quả thì 8507 29 8507 29 101 phép kết nối gọi là kết nối tự nhiên • Cú pháp phép kết nối tự nhiên: R1 * R2 23 24 4 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Ví dụ: chọn, chiếu, kết nối Phép kết nối ngoài • Đưa ra tên của các sinh viên sống ở Bundoora và mã khoá học mà sinh viên đó • Phép kết nối ngoài trái đăng ký: a r r x name ,Course ( suburb "Bundoo ( Student Id SID Enrol )) b r s y a r x b r x c v t z c v null St d t Student Id N Name S b b Suburb 1108 Robert Kew 3936 Glen Bundoora Kết quả • Phép kết nối ngoài phải 8507 Norman Bundoora Name Course 8452 Mary Balwyn Glen 101 a r r x a r x Enrol SID Course Norman 101 b r s y b r x 3936 101 c v t z null s y null t z 1108 113 8507 101 25 26 Phép kết nối ngoài - Ví dụ: Phép chia • Đưa ra danh sách các sinh viên và mã • Định nghĩa: Phép chia giữa 1 quan khoá học mà sinh viên đó đăng ký nếu có hệ r bậc n và quan hệ s bậc m Student (m
- 1/30/2012 Luyện tập Luyện tập • Phép giao (intersection) • Phép trừ (minus) Ví dụ: Ví dụ: 31 32 Luyện tập Luyện tập • Phép tích Đề - Các (Cartesian Product) • Phép chiếu (Projection) Ví dụ: Ví dụ: 33 34 Luyện tập Luyện tập • Phép chọn (Selection) • Phép kết nối (join) Ví dụ: Ví dụ: 35 36 6 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Luyện tập Luyện tập • Phép chia (Division) • Kết nối tự nhiên (natural join) Ví dụ: 37 38 Bài tập Yêu cầu của bài tập • Cho CSDL gồm 3 quan hệ sau: S(Các hãng cung ứng), P (các mặt hàng), SP(các sự cung ứng). • Biểu diễn các truy vấn sau bằng đại số quan hệ: – Đưa ra danh sách các mặt hàng màu đỏ – Cho biết S# của các hãng cung ứng mặt hàng 'P1' P1 hoặc 'P2' P2 – Liệt kê S# của các hãng cung ứng cả hai mặt hàng 'P1' và 'P2' – Đưa ra S# của các hãng cung ứng ít nhất một mặt hàng màu đỏ – Đưa ra S# của các hãng cung ứng tất cả các mặt hàng. 39 40 Lời giải của bài tập Bài tập về nhà • Cho các quan hệ sau: Supplier SupplyProduct sid sname size city sid pid quantity S1 Dustin 100 London S1 P1 500 S2 Rusty 70 Paris S1 P2 400 S3 Lubber 120 London S1 P3 100 S2 P2 200 Product S3 P4 100 pid pname colour S2 P3 155 P1 Screw red P2 Screw green P3 Nut red P4 Bolt blue 41 42 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Bài tập về nhà Bài tập về nhà • Biểu diễn các truy vấn sau bằng biểu thức đại số quan hệ: – Đưa ra {sid} của các hãng cung ứng tất cả các mặt hàng màu đỏ – Đưa ra {sid,sname,size,city} của các Supplier có trụ sở tại London – Đưa ra {sname} của các hãng cung ứng ít nhất một mặt hàng màu đỏ hoặc màu – Đưa ra {p{pname} } của tất cả các mặt ặ xanh hàng – Đưa ra {sname} của các hãng cung ứng – Đưa ra {sid} của các Supplier cung cấp ít nhất 1 mặt hàng màu đỏ và một mặt mặt hàng P1 hoặc P2 hàng màu xanh – Đưa ra {sname} của các Supplier cung – Đưa ra {sid} của các hãng không cung cấp mặt hàng P3 ứng mặt hàng nào – Đưa ra {sname} của các hãng cung ứng ít nhất một mặt hàng màu đỏ 43 44 Ngôn ngữ QBE 45 46 QBE (Query (Query--By- By-Example) Example) Truy vấn trên một quan hệ • Là một ngôn ngữ truy vấn dữ liệu • P.~ Print • Các câu truy vấn được thiết lập bởi một Student ID Name Suburb giao diện đồ hoạ P._x Bundoora • Phù hợp với các câu truy vấn đơn giản, tham chiếu đến ít bảng • Biểu thức đại số quan hệ tương đương • Một số sản phẩm: IBM (IBM Query Management Facility), Paradox, MS. suburb"Bundoora ( Student ) Access, ... 47 48 8 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Truy vấn trên một quan hệ (tiếp) Truy vấn trên nhiều quan hệ • Lựa chọn tất cả các cột • Đưa ra tên của các sinh viên có đăng Student ID Name Suburb ký ít nhất một khoá học P. Bundoora Student ID Name Suburb Enrol SID Course _id P._name _id • Sắp xếp • Đưa ra tên các sinh viên không đăng Student ID Name Suburb ký một khoá học nào P.AO(1) P.AO(2) Student ID Name Suburb Enrol SID Course _id P._name _id • AO: sắp xếp tăng dần • DO: sắp xếp giảm dần 49 50 Các tính toán tập hợp Hộp điều kiện • Các phép toán: AVG, COUNT, MAX, MIN, • Được sử dụng để biểu diễn SUM – Điều kiện trên nhiều hơn 1 thuộc tính – Điều kiện trên các trường tính toán tập hợp • Ví dụ: đưa ra tên các thành phố và số lượng sinh viên đến từ thành phố đó • Ví dụ: ụ đưa ra danh sách các thành phố có nhiều hơn 5 sinh viên Student ID Name Suburb _id G.P. P.COUNT._id Student ID Name Suburb Condition _id G.P. COUNT._id > 5 • G. ~ Grouping 51 52 Các thao tác thay đổi dữ liệu Tính đầy đủ của QBE • Xóa Student ID Name Suburb • Có thể biểu diễn cả 5 phép toán đại D. 1108 số cơ sở (,,,\,x) • Thêm Student ID Name Suburb I. 1179 David Evry • Sửa Student ID Name Suburb 1179 U.Paris 53 54 9 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Định nghĩa dữ liệu trong QBE Định nghĩa dữ liệu trong QBE (tiếp) • sử dụng cùng qui cách và giao diện • Các khung nhìn đồ họa như đối với truy vấn. I.View V I. ID Name Course I _id I. id _name name _course course I.Student I. ID Name Suburb KEY I. Y N N TYPE I. CHAR(5) CHAR(30) CHAR(30) Student ID Name Suburb Enrol SID Course DOMAIN I. Sid SName Surb _id _name _id _course INVERSION I. Y N N 55 56 SQL (Structured Query Language) • 1975: SEQUEL – System-R • 1976: SEQUEL2 Ngôn ngữ SQL • 1978/79: SQL – System-R • 1986: chuẩn SQL-86 • 1989: chuẩn SQL-89 • 1992: chuẩn SQL-92 • 1996: chuẩn SQL-96 57 58 Các thành phần của SQL Ngôn ngữ định nghĩa dữ liệu • Ngôn ngữ định nghĩa dữ liệu (Data Definition Language) • Các thông tin được định nghĩa bao gồm – Cấu trúc các bảng CSDL – Sơ đồ quan hệ – Các mối liên hệ của dữ liệu – Kiểu dữ liệu hay miền giá trị của mỗi thuộc – Quy tắc, ràng buộc áp đặt lên dữ liệu tính • Ngôn N ô ngữ ữ thao th tá dữ liệu tác liệ (Data Manipulation l Language) – Các ràng buộc toàn vẹn – Thêm, xoá, sửa dữ liệu trong CSDL – Các chỉ số đối với mỗi bảng – Truy vấn dữ liệu – Thông tin an toàn và ủy quyền đối với mỗi • Ngôn ngữ điều khiển dữ liệu (Data Control Language) bảng – Khai báo bảo mật thông tin – Cấu trúc lưu trữ vật lý của mỗi bảng trên đĩa – Quyền hạn của người dùng trong khai thác CSDL Được biểu diễn bởi các lệnh định nghĩa dữ 59 liệu 60 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Quy ước đặt tên và và kiểu kiểu dữ li liệu ệu Cú pháp • Quy ước đặt tên • Tạo bảng – 32 ký tự: chữ cái, số, dấu _ CREATE TABLE tab( • Kiểu dữ liệu (SQL-92) col1 type1(size1)[NOT NULL], ..., – CHAR(n) col2 type2(size2)[NOT NULL], ..., – VARCHAR(n) ..... – Int [CONSTRAINT clause] – Numeric(p,d) ... – Real, double ); – float(n) – Date • Xoá bảng – time DROP TABLE tab 61 62 Tạo bảng - Ví dụ: Tạo bảng - Ví dụ (tiếp) CREATE TABLE SupplyProduct( CREATE TABLE Supplier( sid char(4) NOT NULL, sid char(4) NOT NULL, pid char(4) NOT NULL, sname varchar(30) NOT NULL, quantity smallint, size i smallint, lli primary key(sid,pid), city varchar(20), foreign key(sid) references Supplier(sid), CONSTRAINT KhoachinhS primary key(sid) foreign key(pid) references Product(pid), check(quantity >0) ); ); 63 64 Kiểu ràng buộc Thê Thêm/xoá m/xoá/sửa c cột ột của các bảng • Ràng buộc toàn vẹn (RBTV) về giá • Thêm trị miền ALTER TABLE ADD COLUMN [NOT NULL]; CONSTRAINT • Xoá CHECK diti ALTER TABLE DROP COLUMN ; • RBTV về khoá ngoại hay phụ thuộc • Sửa tồn tại ALTER TABLE CONSTRAINT FOREIGN KEY (fk1,fk2,…) CHANGE COLUMN TO ; REFERENCES tab(k1,k2); 65 66 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Ví dụ: Thê Th êm/xóa c các ác ràng buộc buộc • ALTER TABLE SupplyProduct ADD • Thêm COLUMN price real NOT NULL; ALTER TABLE • ALTER TABLE SupplyProduct DROP ADD CONSTRAINT COLUMN price; • ALTER TABLE Supplier CHANGE COLUMN sname TO varchar(20); • Xóa ALTER TABLE DROP CONSTRAINT 67 68 Truy vấn không điều kiện Ngôn ngữ truy vấn dữ liệu trên một bảng • Cú pháp câu lệnh SQL: • Tìm thông tin từ các cột của bảng SELECT ColumnName, ColumnName, ... FROM TableName; SELECT [DISTINCT] |*|| SELECT * FROM FROM TableName;; [WHERE ] • Ví dụ [GROUP BY [HAVING ]] SELECT Name [ORDER BY [ASC|DESC]] FROM Student; Student [UNION |INTERSECT| MINUS ] Id Name Suburb name (Student ) Name 1108 Robert Kew Robert 3936 Glen Bundoora Glen 8507 Norman Bundoora Norman 69 70 8452 Mary Balwyn Mary Truy vấn không điều kiện trên một bảng Truy vấn có điều kiện trên 1 bảng Một số ví dụ khác: • Chọn các bản ghi (dòng) • Đưa ra tên của các mặt hàng SELECT ColumnName,ColumnName, ... SELECT pname FROM Product; FROM TableName WHERE condition_expression; • Đưa ra tên khác nhau của các mặt hàng SELECT DISTINCT pname FROM Product; • Ví dụ SELECT * • Đưa ra toàn bộ thông tin về các hãng cung ứng SELECT * FROM Supplier; FROM Student WHERE suburb=‘‘Bundoora’’ ; • Đưa ra mã số hãng cung ứng, mã mặt hàng được Student cung ứng và 10 lần số lượng mặt hàng đã được suburb"Bundoora ( Student ) Id Name Suburb cung ứng 1108 Robert Kew Id Name Suburb SELECT sid, pid, quantity*10 3936 Glen Bundoora 3936 Glen Bundoora FROM SupplyProduct; 8507 Norman Bundoora 8507 Norman Bundoora 71 8452 Mary Balwyn 72 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Truy vấn có điều kiện trên 1 bảng Biểu diễn điều kiện lựa chọn Một số ví dụ khác: • Đưa ra tên của các hãng cung ứng có • Các phép toán quan hệ: =, !=, , = trụ sở tại London • Các phép toán logic: NOT, AND, OR SELECT sname FROM Supplier • Phép toán phạm vi: BETWEEN, IN, LIKE WHERE city y = ‘London’;; – Kiểu dữ liệu số • Đưa ra mã số và tên của các hãng • attr BETWEEN val1 AND val2 ( (attr>=val1) and (attr 75; _,? (thay thế cho 1 ký tự bất kỳ), * hay % (thay thế cho 1 xâu ký tự bất kỳ) 73 74 Biểu diễn điều kiện lựa chọn - Biểu diễn điều kiện lựa chọn - Ví dụ: Ví dụ (tiếp) • Đưa ra thông tin của các hãng cung ứng có số • Đưa ra thông tin của hãng sản xuất nhân viên trong khoảng từ 100 đến 150 SELECT * FROM Supplier có trụ sở đặt tại thành phố bắt đầu WHERE size BETWEEN 100 AND 150; bằng chữ New • Đưa ra mã số của hãng cung ứng mặt hàng P1 h ặ P2 hoặc SELECT * FROM SUPPLIER – Cách 1: WHERE city LIKE ‘New%’; SELECT sid FROM SupplyProduct WHERE pid = ‘P1’ OR pid = ‘P2’; – Cách 2: SELECT sid FROM SupplyProduct WHERE pid IN (‘P1’, ‘P2’); 75 76 Truy vấn có sử dụng phép toán đổi tên Truy vấn phức tạp trên nhiều bảng • SQL cho phép đổi tên các bảng và các cột trong một câu truy vấn (sau mệnh đề • Điều kiện kết nối SELECT và FROM) sử dụng cấu trúc: SELECT T1.C1,T1.C2,T2.C1,T2.C4, ... • AS FROM T1, T2 – Đưa ra tên và số nhân viên của các hãng WHERE condition_expression cung ứng ở Paris • Ví dụ: đưa ra danh sách mã sinh vien (Id), SELECT sname AS HangOParis, size AS SoNhanVien tên sinh viên (Name), thành phố (Suburb), FROM Supplier mã khoá học (Course) mà các sinh viên đã WHERE city = ‘Paris’; đăng ký SELECT SID , Stud.Name as SName, SELECT Id, Name, Suburb,Course Sub.Name as Subject FROM Student,Enrol FROM Student as Stud,Takes, WHERE Id=SID Subject as Sub WHERE (Id=SID) and (SNO = No) 77 78 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Truy vấn phức tạp trên nhiều bảng Loại trừ các bản ghi trùng nhau Một số ví dụ khác: • Đưa ra tên của hãng có cung ứng mặt • Từ khoá DISTINCT hàng P1 SELECT DISTINCT , , … SELECT sname FROM ,, … FROM Supplier S, SupplyProduct SP WHERE S.sid S sid = SP.sid SP sid AND SP.pid SP pid = ‘P1’; P1 ; • Ví dụ: đưa ra danh sách tên các khoa • Đưa ra tên và mã số của hãng cung ứng ít (dept) tương ứng với các khoá học nhất một mặt hàng màu đỏ (Course). Mỗi giá trị chỉ hiện thị một SELECT sname, sid lần FROM Supplier S, SupplyProduct SP, Product P SELECT DISTINCT Dept WHERE S.sid = SP.sid AND P.pid = SP.pid AND P.colour = ‘red’; FROM Course 79 80 Tìm kiếm có sắp xếp Phâ Phân nhóm nhóm các bản ghi kết qu quả ả • Phân nhóm các bản ghi kết quả theo giá trị của 1 • Sắp xếp các bản ghi kết quả theo một thứ hoặc nhiều thuộc tính SELECT , , … tự cho trước FROM ,, … SELECT , , … [WHERE ] FROM ,, … [GROUP BY , , …] [WHERE ] • Cột được đượ chỉhỉ ra trong t mệnh ệ h đề GroupBy G B được đượ sử ử ORDER BY | [ASC|DESC] dụng làm cơ sở để chia nhóm. Cột này cũng bắt • Ví dụ: đưa ra danh sách tên các sinh viên buộc phải được chỉ ra trong mệnh đề Select • Ví dụ đưa ra tên các sinh viên nhóm theo thành theo thứ tự tăng dần phố của sinh viên đó SELECT Name SELECT SELECT Suburb, FROM Student Count(Id) Suburb, Name ORDER BY Name ASC FROM FROM Student Student 81 GROUP BY GROUP BY 82 Suburb Suburb Điều kiện kiện hiển hiển thị thị các bản ghi kết kết qu quảả Các phép phép toán toán tập hợp hợp:: UNION, MINUS, INTERSECT • Lựa chọn các bản ghi kết quả để hiển thị • Ví dụ: đưa ra danh sách tên các môn học không có sinh viên nào tham dự SELECT , , … SELECT DISTINCT Subject.Name FROM ,, … FROM Subject MINUS [WHERE ] SELECT DISTINCT Subject.Name HAVING FROM Student, Takes, Subject WHERE Student.Id S d d = Takes.SID k S and d Takes.SNO k S O = Subject.No S bj • Ví dụ: đưa ra tên các thành phố có nhiều • Tìm sid của hãng cung ứng đồng thời 2 mặt hàng hơn 3 sinh viên P1 và P2 SELECT Suburb, COUNT(ID) SELECT sid FROM SupplyProduct WHERE pid = ‘P1’ INTERSECT FROM Student SELECT sid FROM SupplyProduct WHERE pid = ‘P2’ GROUP BY Suburb • Tìm mã số của hãng không cung ứng mặt hàng HAVING COUNT(ID) > 3 nào SELECT sid FROM Supplier MINUS SELECT sid FROM SupplyProduct 83 84 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Các câu truy v vấn ấn lồng nhau Các câu truy v vấn ấn lồng nhau (tiếp) • Kiểm tra thành viên tập hợp với IN • Là trường hợp các câu truy vấn (con) được viết và NOT IN: lồng nhau • Thường được sử dụng để – Đưa ra mã số của các hãng cung ứng – Kiểm tra thành viên tập hợp (IN, NOT IN) đồng thời 2 mặt hàng P1 và P2: – So sánh tập hợp (>ALL, >=ALL,
- 1/30/2012 Một số ví dụ với các hàm thư viện Một số truy vấn phức tạp • Đưa ra tên của hãng S1 và tổng số mặt hàng mà hãng đó cung ứng SELECT sname, SUM(quantity) • Có bao nhiêu mặt hàng khác nhau được cung ứng FROM Supplier S, SupplyProduct SP SELECT COUNT(DISTINCT pid) FROM SupplyProduct; WHERE S.sid = SP.sid AND S.sid = ‘S1’ • Có tổng cộng bao nhiêu nhân viên làm cho các GROUP BY sname; hãng ở Paris • Đưa ra mã số các hãng cung ứng và số lượng trung bình các mặt SELECT SUM(size) FROM Supplier hàng được cung ứng bởi từng hãng WHERE city = ‘Paris’; SELECT sid, AVG(quantity) FROM SupplyProduct • Đưa ra số lượng mặt hàng trung bình mà hãng S1 cung ứng GROUP BY sid; SELECT AVG(quantity) • Đưa ra mã số các hãng cung ứng mà số lượng mặt hàng trung FROM SupplyProduct bình được cung cấp bởi hãng đó là trong khoảng từ 75 đến 100 WHERE sid = ‘S1’; SELECT sid, AVG(quantity) FROM SupplyProduct 91 GROUP BY sid HAVING AVG(quantity) BETWEEN 75 AND 100 92 Các câu lệnh cập nhật dữ liệu Các câu lệnh cập nhật dữ liệu • Thêm • Xóa dữ liệu: INSERT INTO table[(col1,col2,…)] DELETE FROM VALUES (exp1,exp2,…) INSERT INTO table[(col1,col2,…)] WHERE ; SELECT col1 col2 … col1,col2, • Ví dụ: d FROM tab1, tab2, … DELETE FROM SupplyProduct WHERE WHERE sid = ‘S4’; • Ví dụ DELETE FROM Student INSERT INTO Student(Id, Name, Suburb) WHERE Suburb = ‘‘Bundoora’’; VALUES (‘‘1179’’,‘‘David’’,‘‘Evr’’) 93 94 Các câu lệnh cập nhật dữ liệu • Sửa đổi dữ liệu: – UPDATE SET ( = Giá trị mới , …) [WHERE ]; • Ví dụ: – Hãng S1 chuyển tới Milan UPDATE SSupplier li SET city i = ‘Milan’ ‘Mil ’ WHERE sid = ‘S1’; – Tất cả các mặt hàng được cung cấp với số lượng nhỏ hơn 100 đều tăng số lượng lên 1.5 lần UPDATE SupplyProduct SET quantity = quantity * 1.5 WHERE quantity < 100; 95 96 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1/30/2012 Lời hay ý đẹp "Người kém thông minh nhưng say sưa với công việc, tiến mạnh và xa hơn người cực thông minh mà lãnh đạm với công việc". J. Deval 97 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cơ sở dữ liệu đất đai
49 p | 637 | 79
-
Bài giảng Cơ sở dữ liệu - Nguyễn Quỳnh Chi
189 p | 267 | 51
-
Bài giảng Cơ sở dữ liệu: Chương 1 - Tổng quan về cơ sở dữ liệu
21 p | 181 | 31
-
Bài giảng Cơ sở dữ liệu: Bài 1 - ĐH CNTT
15 p | 607 | 30
-
Bài giảng Cơ sở dữ liệu - Bài 2: Mô hình cơ sở dữ liệu quan hệ
43 p | 221 | 18
-
Bài giảng Cơ sở dữ liệu: Chương 2 - ThS. Hoàng Mạnh Hà
68 p | 151 | 12
-
Bài giảng Cơ sở dữ liệu (Database): Chương 4 - TS. Đặng Thị Thu Hiền
82 p | 40 | 8
-
Bài giảng Cơ sở dữ liệu - Chương 4: Chuẩn hóa cơ sở dữ liệu
30 p | 134 | 8
-
Bài giảng Cơ sở dữ liệu nâng cao - Chương 2: Toàn vẹn và cơ sở dữ liệu active
50 p | 82 | 8
-
Bài giảng Cơ sở dữ liệu (Database): Chương 1 - TS. Đặng Thị Thu Hiền
53 p | 49 | 7
-
Bài giảng Cơ sở dữ liệu: Phần 1 – Nguyễn Hải Châu
54 p | 122 | 6
-
Bài giảng Cơ sở dữ liệu: Mở đầu - ThS. Lương Thị Ngọc Khánh
11 p | 170 | 6
-
Bài giảng Cơ sở dữ liệu nâng cao: Bài 1.1 - PGS.TS. Đỗ Phúc
25 p | 90 | 6
-
Bài giảng Cơ sở dữ liệu: Chương 1 - Th.S Thiều Quang Trung
40 p | 93 | 5
-
Bài giảng Cơ sở dữ liệu - Bài 1: Thiết kế Cơ sở dữ liệu với Management Studio
10 p | 62 | 5
-
Bài giảng Cơ sở dữ liệu nâng cao: Bài 2 - PGS.TS. Đỗ Phúc
55 p | 66 | 4
-
Bài giảng Cơ sở dữ liệu: Chương 1 - GV. Đỗ Thị Kim Thành
21 p | 104 | 4
-
Bài giảng Cơ sở dữ liệu (Database) - Chương 1: Các khái niệm cơ bản về hệ cơ sở dữ liệu
34 p | 69 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn