Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
210,65 KB
Nội dung
Ch ng Ngôn ng truy v n SQL N i dung trình bày ̇ Gi i thi u ̇ nh ngh a d li u ̇ C p nh t d li u ̇ Truy v n d li u Ngôn ng truy v n SQL Gi i thi u ̇ SQL (Structured Query Language) • Ngôn ng c p cao • 1970, phát tri n b i IBM • c chu n hóa b i ANSI ISO - SQL-86 - SQL-92 - SQL-99 ̇ G m • • • • Ngôn ng Ngôn ng Ngôn ng Ngôn ng đ nh ngh a d li u thao tác d li u đ nh ngh a khung nhìn phân quy n b o m t nh ngh a d li u ̇ Ngôn ng • • • • Mô t l c đ cho quan h Mô t mi n giá tr cho thu c tính Mô t ràng bu c toàn v n Ch m c m i quan h ̇ G m l nh • CREATE / DROP DATABASE • CREATE / DROP / ALTER TABLE • CREATE / DROP DOMAIN Ngôn ng truy v n SQL Ki u d li u (1) ̇S • S nguyên - INTEGER (INT) - SMALL INTEGER (SMALLINT) • S th c - FLOAT[n] - REAL - DOUBLE PRECISION • S th p phân - DECIMAL(p,n) Ki u d li u (2) ̇ Chu i ký t • Chu i có đ dài c đ nh - CHARACTER(n) (CHAR(n)) • Chu i có đ dài thay đ i - CHARACTER VARYING(n) (VARCHAR(n)) • Chu i ký t unicode - NATIONAL CHARACTER(n) - NATIONAL CHARACTER VARYING (n) • Giá tr m c đ nh n = ̇ Chu i Bit • BIT(n) • BIT VARYING(n) ̇ Ngày, gi • DATE • TIME • TIMESTAMP Ngôn ng truy v n SQL T o h y CSDL ̇ CREATE DATABASE • create database CsdlCongty ̇ DROP DATABASE [RESTRICT | CASCADE] • drop database CsdlCongty T o b ng (1) ̇ CREATE TABLE ( [], [], [] ) ̇ RBTV • • • • • • • Ngôn ng truy v n SQL NOT NULL NULL UNIQUE DEFAULT PRIMARY KEY FOREIGN KEY / REFERENCES CHECK T o b ng (2) ̇ Ví d create table NHANVIEN ( Ho Dem Ten MaNV Ngsinh Dchi GTinh Luong MaGSat MaPhong varchar(15) varchar(20), varchar(15) char(9) date, varchar(30), char, decimal(10,2), char(9), int not null, not null, not null, not null ) T o b ng (3) ̇ t tên cho RBTV • CONSTRAINT ̇ Ví d create table PHONGBAN ( Ten varchar(15) unique, MaPB int not null, TrPhong varchar(9) not null, NgNhanChuc date, constraint PB_PK primary key (MaPB), constraint PB_TrPh foreign key (TrPhong) references NHANVIEN (MaNV) on delete set null on update cascade ) Ngôn ng truy v n SQL Xóa b ng ̇ DROP TABLE [RESTRICT | CASCADE] ̇ DROP TABLE ̇ Ví d drop table PHONGBAN S a b ng (1) ̇ ALTER TABLE ADD COLUMN [] • Ví d alter table NHANVIEN add column DThoai char(10) ̇ ALTER TABLE DROP COLUMN • Ví d alter table NHANVIEN drop column DThoai ̇ ALTER TABLE ALTER COLUMN • Ví d alter table NHANVIEN alter column GTinh int Ngôn ng truy v n SQL S a b ng (2) ̇ ALTER TABLE ADD CONSTRAINT • Ví d alter table NHANVIEN add constraint NV_Luong check (Luong > 0) ̇ ALTER TABLE DROP CONSTRAINT • Ví d alter table NHANVIEN drop constraint NV_Luong T o xóa mi n giá tr ̇ CREATE DOMAIN AS • Ví d create domain Diachi as varchar(100) ̇ DROP DOMAIN Ngôn ng truy v n SQL C p nh t d li u (1) ̇ Chèn d li u • Chèn t ng dòng - INSERT INTO [()] VALUES () - Ví d + insert into DUAN (TenDA, MaDA, Diadiem, Phong) values ('San pham X',1,'Tan Binh',5) + insert into DUAN values ('San pham X',1,'Tan Binh',5) • Chèn nhi u dòng - INSERT INTO [()] C p nh t d li u (2) ̇ Xóa d li u • DELETE FROM [WHERE ] • Ví d - delete from NHANVIEN where MaPhong = - delete from NHANVIEN Ngôn ng truy v n SQL C p nh t d li u (3) PHONGBAN TenPB MaPB TrPhong NgNhanChuc Nghiên c u 888665555 19/06/1981 987987987 01/01/1995 i u hành DIADIEM_PHG DUAN MaPB Diadiem Tân Bình Th Phú Nhu n Gò V p TenDA MaDA Diadiem Phong S n ph m X Tân Bình null S n ph m Y Th null c c C p nh t d li u (4) ̇ S a d li u • UPDATE SET = , = , [WHERE ] • Ví d - update DUAN set Diadiem = ‘Hanoi’, Phong = where Maso=10 - update NHANVIEN set Luong = 1.1 * Luong Ngôn ng truy v n SQL Truy v n d li u ̇ Cú pháp • SELECT FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] ̇ K t qu c a l nh truy v n m t b ng ̇ B ng SQL có th ch a b trùng ̇ Trong • : danh sách thu c tính c a quan h k t qu • : danh sách b ng liên quan đ n câu truy v n • : u ki n đ ch n ho c ghép b • : danh sách thu c tính đ nhóm b • : u ki n ch n nhóm • : danh sách thu c tính th t s p x p t ng ng Phép toán quan h ̇ π(R) select from R ̇ σ(R) ̇ π(σ(R)) select from R where select * from R where ̇ R×S select * from R, S ̇ R S select * from R, S where Ngôn ng truy v n SQL 10 Ví d ̇ Tìm nhân viên làm vi c phòng s • σMaPB = 4(NHANVIEN) • select * from NHANVIEN where MaPB = ̇ Cho bi t h , tên, gi i tính m c l ng c a nhân viên • πHo, Ten, GTinh, Luong(NHANVIEN) • select Ho, Ten, GTinh, Luong from NHANVIEN ̇ Cho bi t tên tr ng phòng • πHo, Ten(PHONGBAN TrPhg=MaNV NHANVIEN) • select Ho, Ten from NHANVIEN, PHONGBAN where TrPhg = MaNV Phép toán t p h p ̇ SQL h tr phép toán • UNION (H i) • EXCEPT (Hi u) • INTERSECT (Giao) • c m ̇ ̇ - Các dòng gi ng b lo i b ng k t qu - Các b ng tham gia phép toán ph i có tính kh h p ̇ Gi l i dòng gi ng • UNION ALL • EXCEPT ALL • INTERSECT ALL Ngôn ng truy v n SQL ̇ (SELECT FROM WHERE ) UNION [ALL] (SELECT FROM WHERE ) (SELECT FROM WHERE ) EXCEPT [ALL] (SELECT FROM WHERE ) (SELECT FROM WHERE ) INTERSECT [ALL] (SELECT FROM WHERE ) 11 t tên t tên m nh đ SELECT: ̇ select count(*) as ‘Tong so nhan vien’ from NHANVIEN t tên m nh đ FROM: ̇ • t tên cho b ng select NV.Ho, PB.Ten PB.Ten select NV.Ten NV.Ho, NV.Ten from NHANVIEN, PHONGBAN from NHANVIEN as NV, PHONGBAN as PB where MaPB MaPB where=NV.MaPB = PB.MaPB • t tên cho b ng thu c tính select * from PHONGBAN AS PB(Ten, Maso, MaTrPhg, Ngay) Phép toán s h c ̇ +, –, *, / có th áp d ng cho giá tr s m nh đ SELECT select 1.1 * SUM(Luong) as ‘Luong moi’ from NHANVIEN NHANVIEN Luong Luong moi 40000 44000 30000 33000 38000 41800 25000 27500 ̇ +, - có th áp d ng cho giá tr ki u ngày gi select NgNhanChuc + 150 as ‘Cong Ngay’ from PHONGBAN Ngôn ng truy v n SQL 12 Phép toán so sánh lu n lý ̇ Dùng m nh đ WHERE ho c HAVING đ xây d ng u ki n ch n u ki n k t • =, , ≥, • BETWEEN AND • AND, OR, NOT ̇ Tìm nhân viên phòng s có l 40.000 ng gi a 30.000 • select * from NHANVIEN where (Luong >= 30000) and (Luong Gom nhóm b (4) DA.TenDA DA.MaDA TG.MaNV TG.MaDA S n ph m X 123456789 S n ph m X 453453453 S n ph m Y 123456789 S n ph m Y 453453453 S n ph m Y 333445555 Ngôn ng truy v n SQL DA.MaDA DA.TenDA So nhan vien S n ph m Y 16 S p x p k t qu ̇ ORDER BY • SELECT FROM [WHERE ] ORDER BY • : danh sách c p (tên thu c tính, th t s p x p) • Th t : - ASC - t ng d n - DESC - gi m d n - M c đ nh ASC Ví d ̇ V i m i nhân viên, cho bi t mã nhân viên mã d án mà nhân viên tham giá S p x p k t qu theo th t t ng d n c a mã nhân viên gi m d n c a mã d án • select MaNV, MaDA from THAMGIA order by MaNV, MaDA desc MaNV MaDA 123456789 123456789 333445555 20 333445555 10 333445555 333445555 Ngôn ng truy v n SQL 17 So sánh v i NULL ̇ Tìm nhân viên ng i giám sát ̇ NULL • Không bi t • Không s n sàng • Không th áp d ng ̇ Tính toán so sánh v i NULL • null + → null • null > → unknown select MaNV, Ho, Ten from NHANVIEN where MaNQL is null ̇ Tìm nhân viên có ng i giám sát select MaNV, Ho, Ten from NHANVIEN where MaNQL is not null ̇ SQL cung c p phép toán • IS NULL • IS NOT NULL Logic chân tr AND TRUE FALSE UNKNOWN TRUE TRUE FALSE UNKNOWN FALSE FALSE FALSE FALSE UNKNOWN UNKNOWN FALSE UNKNOWN OR TRUE FALSE UNKNOWN TRUE TRUE TRUE TRUE FALSE TRUE FALSE UNKNOWN UNKNOWN TRUE UNKNOWN UNKNOWN NOT TRUE FALSE FALSE TRUE UNKNOWN UNKNOWN Ngôn ng truy v n SQL 18 Truy v n l ng ̇ Truy v n s d ng giá tr c a truy v n khác u ki n so sánh Truy v n cha SELECT FROM WHERE ( SELECT Truy v n FROM WHERE ) ̇ Ch xu t hi n m nh đ WHERE So sánh t p h p (1) ̇ Phép toán • • • • IN - ki m tra s t n t i c a m t giá tr m t t p h p ALL - so sánh m t giá tr v i t t c giá tr c a t p h p ANY - so sánh m t giá tr v i m t giá tr c a t p h p ALL, ANY đ c k t h p v i phép toán so sánh {=, , ≥, } • EXISTS - ki m tra s t n t i c a k t qu c a m t câu truy v n ̇ Cú pháp • • • • Ngôn ng truy v n SQL IN ALL ANY EXISTS 19 Ví d ̇ Tìm nhân viên c a phòng s ̇ Tìm nhân viên c a phòng ‘Nghiên c u’ select * from NHANVIEN where MaPB in (2, 5) T ph pt select * from NHANVIEN where MaPB = ( select MaPB from PHONGBAN where TenPB = ‘Nghiên c u’) ng minh Truy v n vô h ng Ví d ̇ Cho bi t tên nhân viên có m c l ng l n h n l ng c a nhân viên phòng s select * from NHANVIEN where Luong > ALL ( select Luong from NHANVIEN where MaPB = 5) Ngôn ng truy v n SQL ̇ Cho bi t nhân viên không tham gia d án mà phòng s qu n lý select MaNV from THAMGIA where MaDA not in ( select MaNV from DUAN where Phg = 5) 20 Truy v n l ng phân c p (1) ̇ M nh đ WHERE c a truy v n không tham chi u đ n thu c tính c a b ng m nh đ FROM c a truy v n cha ̇ Truy v n đ c th c hi n tr c truy v n cha ̇ Ví d select * from NHANVIEN where Luong > ALL ( select Luong from NHANVIEN where MaPB = 5) Truy v n l ng phân c p (2) NHANVIEN MaNV Luong Luong 40000 888665555 55000 333445555 40000 123456789 30000 38000 666884444 38000 25000 453453453 25000 987654321 43000 999887777 25000 987987987 25000 > ALL MaNV Ngôn ng truy v n SQL 30000 Luong 888665555 55000 987654321 43000 21 Truy v n l ng t ng quan (1) ̇ M nh đ WHERE c a truy v n tham chi u đ n thu c tính c a b ng m nh đ FROM c a truy v n cha ̇ Truy v n đ c th c hi n nhi u l n, m i l n ng v i m t b c a truy v n cha ̇ Tìm nhân viên thân nhân select * from NHANVIEN as NV where not exists ( select * from THANNHAN as TN where TN.MaNV = NV.MaNV) Truy v n l ng t NHANVIEN MaNV ng quan (2) Luong THANNHAN MaNV Ten 888665555 55000 333445555 Anh 333445555 40000 333445555 The 123456789 30000 987654321 An 123456789 Minh 123456789 Anh MaNV Ten 333445555 Minh 123456789 Anh 333445555 Anh 123456789 The MaNV 888665555 Ngôn ng truy v n SQL Luong 55000 22 Truy v n l ng t A B α α α β β α 23 β β β β β β ng quan (3) C A B C D E α α α α α β 12 β α 23 23 β β 10 12 β α 23 β β 23 10 10 β β 12 S D E 12 πA,B,C( R) R÷S A B C α α β α 23 Truy v n l ng t ̇ Bi u di n b ng EXISTS SELECT R1.A, R1.B, R1.C FROM R as R1 WHERE NOT EXISTS ( SELECT * FROM S WHERE NOT EXISTS ( SELECT * FROM R as R2 WHERE R2.D = S.D AND R2.E = S.E AND R2.A = R1.A AND R2.B = R1.B AND R2.C = R1.C)) Ngôn ng truy v n SQL R ng quan (4) ̇ Tìm nhân viên tham gia t t c d án phòng s qu n lý select * from NHANVIEN as NV where not exists ( select * from DUAN as DA where DA.Phong = and not exists ( select * from THAMGIA as TG where TG.MaNV = NV.MaNV and TG.MaDA = DA.MaNV)) 23 Phép k t SQL ̇ JOIN, INNER JOIN • Dùng k t n i hai b ng m nh đ FROM • SELECT FROM ( JOIN ON ) ̇ Các phép k t m r ng: • LEFT OUTER JOIN, LEFT JOIN • RIGHT OUTER JOIN, RIGHT JOIN • FULL OUTER JOIN, FULL JOIN Ví d ̇ Cho bi t tên nhân viên c a phòng ‘Nghiên c u’ select NV.Ho, NV.Dem, NV.Ten from (NHANVIEN as NV join PHONGBAN as PB on NV.MaPB = PB.MaPB) where PB.Ten = ‘Nghiên c u’ Ngôn ng truy v n SQL ̇ Các phép k t có th l ng select DA.MaDA, PB.MaPB, NV.Ten from ((DUAN as DA join PHONGBAN as PB on DA.Phong = PB.Maso) join NHANVIEN on MaNQL = NV.MaNV) where Diadiem = ‘TpHCM’ 24 [...]... (2) Luong THANNHAN MaNV Ten 888665555 55000 333445555 Anh 333445555 40000 333445555 The 123 456789 30000 987654 321 An 123 456789 Minh 123 456789 Anh MaNV Ten 333445555 Minh 123 456789 Anh 333445555 Anh 123 456789 The MaNV 888665555 Ngôn ng truy v n SQL Luong 55000 22 Truy v n l ng t A B α α α β β α 23 β β 3 β β β β ng quan (3) C A B C D E 2 α α 1 7 2 5 α α 1 2 5 α β 12 7 2 β α 23 7 2 23 β β 3 1 10 12. .. 1 2 5 α β 12 7 2 β α 23 7 2 23 β β 3 1 10 12 β α 23 2 5 β β 23 10 10 β β 12 1 2 S D E 1 7 12 2 πA,B,C( R) R÷S A B C α α 1 β α 23 Truy v n l ng t ̇ Bi u di n b ng EXISTS SELECT R1.A, R1.B, R1.C FROM R as R1 WHERE NOT EXISTS ( SELECT * FROM S WHERE NOT EXISTS ( SELECT * FROM R as R2 WHERE R2.D = S.D AND R2.E = S.E AND R2.A = R1.A AND R2.B = R1.B AND R2.C = R1.C)) Ngôn ng truy v n SQL R ng quan (4) ̇... DA.MaDA=TG.MaDA group by DA.MaDA, DA.Ten having count(*) > 2 Gom nhóm các b (4) DA.TenDA DA.MaDA TG.MaNV TG.MaDA S n ph m X 1 123 456789 1 S n ph m X 1 453453453 1 S n ph m Y 2 123 456789 2 S n ph m Y 2 453453453 2 S n ph m Y 2 333445555 2 Ngôn ng truy v n SQL DA.MaDA DA.TenDA So nhan vien 2 S n ph m Y 3 16 S p x p k t qu ̇ ORDER BY • SELECT FROM [WHERE ] ORDER BY • ALL MaNV Ngôn ng truy v n SQL 30000 Luong 888665555 55000 987654 321 43000 21 Truy v n l ng t ng quan (1) ̇ M nh đ WHERE c a truy v n con tham chi u đ n thu c tính c a các b ng trong m nh đ FROM c a truy... nhân viên đó tham giá S p x p k t qu theo th t t ng d n c a mã nhân viên và gi m d n c a mã d án • select MaNV, MaDA from THAMGIA order by MaNV, MaDA desc MaNV MaDA 123 456789 2 123 456789 1 333445555 20 333445555 10 333445555 3 333445555 2 Ngôn ng truy v n SQL 17 So sánh v i NULL ̇ Tìm các nhân viên không có ng i giám sát ̇ NULL • Không bi t • Không s n sàng • Không th áp d ng ̇ Tính toán và so sánh... 5 3 S n ph m Y 2 Th 5 4 2 S n ph m Z 3 5 1 1 c Phú Nhu n Tin h c hóa 10 Gò V p 4 Phúc l i 30 Gò V p 4 Tái t ch c 20 Phú Nhu n 1 15 Ví d ̇ Cho bi t mã s , tên d án và s nhân viên tham gia đ i v i nh ng d án có nhi u h n 2 nhân viên tham gia select DA.MaDA, DA.Ten, count(*) as ‘So nhan vien’ from DUAN as DA, THAMGIA as TG WHERE DA.MaDA=TG.MaDA group by DA.MaDA, DA.Ten having count(*) > 2 Gom nhóm các... NHANVIEN ̇ SQL không t đ ng lo i các b trùng nhau • T n th i gian so sánh và s p x p • S d ng cho các truy v n th ng kê Luong 40000 30000 38000 ̇ select distinct Luong from NHANVIEN 25 000 43000 Luong 25 000 40000 25 000 30000 38000 25 000 43000 Các hàm t p h p ̇ SQL cung c p 5 hàm t p h p: • • • • • • SUM() - tính t ng các giá tr c a thu c tính MAX() - tìm giá tr l n nh t c a... where Phg = 5) 20 Truy v n l ng phân c p (1) ̇ M nh đ WHERE c a truy v n con không tham chi u đ n thu c tính c a các b ng trong m nh đ FROM c a truy v n cha ̇ Truy v n con đ c th c hi n tr c truy v n cha ̇ Ví d select * from NHANVIEN where Luong > ALL ( select Luong from NHANVIEN where MaPB = 5) Truy v n l ng phân c p (2) NHANVIEN MaNV Luong Luong 40000 888665555 55000 333445555 40000 123 456789 30000... trong m nh đ SELECT select 1.1 * SUM(Luong) as ‘Luong moi’ from NHANVIEN NHANVIEN Luong Luong moi 40000 44000 30000 33000 38000 41800 25 000 27 500 ̇ +, - có th áp d ng cho các giá tr ki u ngày gi select NgNhanChuc + 150 as ‘Cong Ngay’ from PHONGBAN Ngôn ng truy v n SQL 12 Phép toán so sánh và lu n lý ̇ Dùng trong m nh đ WHERE ho c HAVING đ xây d ng các đi u ki n ch n và đi u ki n k t • =, , ≥,... ALL ANY EXISTS 19 Ví d ̇ Tìm các nhân viên c a phòng s 2 và 5 ̇ Tìm các nhân viên c a phòng ‘Nghiên c u’ select * from NHANVIEN where MaPB in (2, 5) T ph pt select * from NHANVIEN where MaPB = ( select MaPB from PHONGBAN where TenPB = ‘Nghiên c u’) ng minh Truy v n con vô h ng Ví d ̇ Cho bi t tên nhân