Giới thiệu Định nghĩa dữ liệu Truy vấn dữ liệu Cập nhật dữ liệu Khung nhìn (view) Chỉ mục (index) Ngôn ngữ ĐSQH Cách thức truy vấn dữ liệu Khó khăn cho ngƣời sử dụng SQL (Structured Query Language) Ngôn ngữ cấp cao Ngƣời sử dụng chỉ cần đƣa ra nội dung cần truy vấn Đƣợc phát triển bởi IBM (1970s) Đƣợc gọi là SEQUEL Đƣợc ANSI công nhận và phát triển thành chuẩn SQL86 SQL92 SQL99 3 ĐỊNH NGHĨA DỮ LIỆU Là ngôn ngữ mô tả Lƣợc đồ cho mỗi quan hệ Miền giá trị tƣơng ứng của từng thuộc tính Ràng buộc toàn vẹn Chỉ mục trên mỗi quan hệ Gồm CREATE TABLE (tạo bảng) DROP TABLE (xóa bảng) ALTER TABLE (sửa bảng) CREATE DOMAIN (tạo miền giá trị) CREATE DATABASE
Trang 1CHƯƠNG 5
Trang 2NOI DUNG CHI TIET © Giới thiệu
© Định nghĩa dữ liệu © Truy vân dữ liệu
6 Cập nhật dữ liệu
o Khung nhìn (view)
o Chi muc (index)
Trang 3GIỚI THIỆU
s Ngôn ngữ ĐSQH
-_ Cách thức truy van dữ liệu
e Kho khăn cho người sử dụng
o SQL (Structured Query Language) - Ngôn ngữ cấp cao
-_ Người sử dụng chỉ cần đưa ra nội dung cân truy vẫn Được phát triển bởi IBM (19703)
Được gọi là SEQUEL
Được ANSI công nhận và phát triển thành chuẩn
o SQL-86 o SQL-92 o SQL-99
Trang 4GIỚI THIỆU (TT)
s SQL gồm
s _ Định nghĩa dữ liệu (DDL) Thao tác dữ liệu (DML)
Định nghĩa khung nhìn e Rang bu6éc toan ven
e Phan quyén va bao mat -_ Điều khién giao tác
o SQL su dụng thuật ngữ
e Bang ~ quan hệ
Trang 5NOI DUNG CHI TIET o Gio’ thiệu
o Dinh nghia dv liệu e Kiéu d@ liéu
e Cac lénh dinh nghia dt liéu
o Truy vân dữ liệu
o Cập nhật dữ liệu
ư Khung nhìn (view)
o Chi muc (index)
Trang 6ĐINH NGHĨA DU’ LIEU
Là ngôn ngữ mô tả
- Lược đồ cho mỗi quan hệ
-_ Miền giá trị tương ứng của từng thuộc tính e Rang bu6éc toan ven
-_ Chỉ mục trên mỗi quan hệ s Gỗm
e CREATE TABLE (tao bang) DROP TABLE (x6éa bang) ALTER TABLE (sua bang)
CREATE DOMAIN (tao mién gia tri)
CREATE DATABASE
Trang 7KIEU DU’ LIEU o S6 (numeric)
e INTEGER e SMALLINT
» NUMERIC, NUMERIC(p), NUMERIC(p,s) » DECIMAL, DECIMAL(p), DECIMAL(p,s)
e REAL
e DOUBLE PRECISION
» FLOAT, FLOAT(p)
Trang 8KIÊU DỮ LIỆU (TT)
© Chuỗi ký tự (character string)
» CHARACTER, CHARACTER(n) » CHARACTER VARYING(x)
o Chuéi bit (bit string)
» BIT, BIT(x)
» BIT VARYING(x)
o Ngay gio’ (datetime)
° DATE gém ngay, thang va nam ° TIME gồm giờ, phút và giây ° TIMESTAMP gém ngày và giờ
Trang 9LENH TAO BANG
o Bé dinh nghia mét bang
e Tén bang se Các thuộc tính so Tên thuộc tính 6 Kiêu dữ liệu 6 Các RBTV trên thuộc tính o Cu phap
CREATE TABLE <Tén_bang> (
<Tên_cột> <Kiểu dữ liệu> [<RBTV>], <Tên_cột> <Kiểu dữ liệu> [<RBTV>],
[<RBTV>]
Trang 10
Vi DU - TAO BANG
Trang 11LỆNH TẠO BẢNG (TT) 6 <FRBITV> e NOT NULL e NULL e UNIQUE e DEFAULT e PRIMARY KEY
e FOREIGN KEY / REFERENCES e CHECK
o Dat ten cho RBTV
CONSTRAINT <Ten_RBTV> <RBTIV>
Trang 12
VÍ DỤ - HBTV
CREATE TABLE NHANVIEN (
HONV VARCHAR(10) NOT NULL, TENLOT VARCHAR(20) NOT NULL, TENNV VARCHAR(10) NOT NULL,
MANV CHAR(9) PRIMARY KEY, NGSINH DATETIME,
DCHI VARCHAR(50),
PHAI CHAR(3) CHECK (PHAI IN (‘Nam’, ‘Nu’)), LUONG INT DEFAULT (10000),
MA_NQL CHAR(9), PHG INT
Trang 13VÍ DỤ - HBTV
CREATE TABLE PHONGBAN (
TENPB VARCHAR(20) UNIQUE, MAPHG INT NOT NULL,
TRPHG CHAR(9),
NG_NHANCHUC DATETIME DEFAULT (GETDATE())
)
CREATE TABLE PHANCONG (
MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN) REFERENCES NHANVIEN(MANV),
SODA INT REFERENCES DEAN(MADA), THOIGIAN DECIMAL(3,1)
Trang 14Vi DU - DAT TEN CHO RBTV
CREATE TABLE NHANVIEN (
HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL, TENLOT VARCHAR(20) NOT NULL,
TENNV VARCHAR(10) NOT NULL,
MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY, NGSINH DATETIME,
DCHI VARCHAR(50),
PHAI CHAR(3) CONSTRAINT NV_PHAI CHK CHECK (PHAI IN (‘Nam’, ‘Nu’)),
LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (10000), MA_NQL CHAR(9),
PHG INT
Trang 15Vi DU - DAT TEN CHO RBTV
CREATE TABLE PHANCONG ( MA_NVIEN CHAR(9), SODA INT,
THOIGIAN DECIMAL(3,1),
CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA), CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA) REFERENCES DEAN(MADA)
)
©
Trang 16LENH SU’A BANG o Duoc dung dé
° Thay ddi cau trúc bang
- Thay đổi RBTV
o Them cot ALTER TABLE <Tén_bang> ADD
<Tên_cột> <Kiểu dữ liệu> [<RBTV>]
© Xóa cột
ALTER TABLE <Tén_bang> DROP COLUMN <Tén_cot>
Mở rộng cột
ALTER TABLE <Tén_bang> ALTER COLUMN <Tên_ cột> <Kiểu_ dữ liệu _mới>
©
Trang 17
LỆNH SỬA BẢNG (TT)
o Them RBTV
ALTER TABLE <Tén_bang> ADD
CONSTRAINT <Ten_RBIV> <RBIV>, CONSTRAINT <Ten_RBIV> <RBIV>,
o X0a RBTV
ALTER TABLE <Tén_bang> DROP <Tén_RBTV>
Trang 18
VÍ DỤ - THAY ĐÔI CÂU TRÚC BẢNG
ALTER TABLE NHANVIEN ADD NGHENGHIEP CHAR(20)
ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP CHAR(50)
Trang 19VÍ DỤ - THAY ĐI RBTV
CREATE TABLE PHONGBAN ( TENPB VARCHAR(20),
MAPHG INT NOT NULL, TRPHG CHAR(9),
NG_NHANCHUC DATETIME
)
ALTER TABLE PHONGBAN ADD
CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG), CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE())
FOR (NG_NHANCHUC), ©
CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)
Trang 20LENH XOA BANG
o Duoc dùng đề xóa câu trúc bảng e Tat cả dữ liệu của bảng cũng bị xóa
wT wT
o Cu phap
DROP TABLE <Tén_bang>
o Vi du
DROP TABLE NHANVIEN DROP TABLE PHONGBAN DROP TABLE PHANCONG
Trang 21LENH XOA BANG (TT)
NHANVIEN
HONV
TENLOT TENNV MANV | NGSI
CHI PHAI LUONG MA_NQL PHG
Trang 22LỆNH TẠO MIỄN GIÁ TRỊ
o Tao ra mot kiểu dữ liệu mới kế thừa những kiểu dữ liệu
có sẵn
o Cu phap
CREATE DOMAIN <Tén_kdl_mdi> AS <Kiéu_dir_liéu>
o Vi du
CREATE DOMAIN Kieu_Ten AS VARCHAR(30)
Trang 23NOI DUNG CHI TIET ©o Giới thiệu
©o Định nghĩa dữ liệu
© Truy vẫn dữ liệu
-_ Truy vận cơ bản
° Tap hợp, so sánh tập hợp và truy vẫn lông
se Hàm kêt hợp và gom nhóm
-_ Một số kiểu truy vẫn khác
o Cập nhật dữ liệu
ư Khung nhìn (view)
o Chi muc (index)
Trang 24TRUY VẤN DU’ LIEU
s Là ngôn ngữ rút trích dữ liệu thỏa một số điều kiện nao
đó
© Dựa trên
Phép toán ĐSQH |_ + Một số bổ sung
- Cho phép 1 bảng có nhiêu dòng trùng nhau
e Bang la bag # quan hé la set
Trang 25
TRUY VÂN CƠ BẢN
s Gồm 3 mệnh đề
SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điêu kiện>
se <danh sách các cột>
o Tên các cột cần được hiễn thị trong kết quả truy vẫn
se <danh sách các bảng>
o Tên các bảng liên quan đến câu truy van e <diéu kién>
o Biểu thức boolean xác định dòng nào sẽ được rút trích o Nối các biểu thức: AND, OR, và NOT
o Phép toan:<,>,<,2,#,=, LIKE va BETWEEN
Trang 26TRUY VẤN CƠ BẢN (TT) o SQL va DSQH
'|'ểÊLECT <danh sách các cột>
oan nnn ‘PROM <danh sach cac bang>
WOERE <diéu kién>
Trang 27VÍ DỤ Lấy tất cả các cột của quan hệ kết quả SELECT * FROM NHANVIEN WHERE PHG=5
MANV | HONV | TENLOT | TENNV |_ NGSINH DCHI | PHAI | LUONG | MA_NQL | PHG
333445555 | Nguyen | Thanh Tung 12/08/1955 | 638 NVC Q5] Nam 40000 | 888665555 5 987987987 | Nguyen} Manh Hung | 09/15/1962 | Ba Ria VT Nam 38000 | 333445555 5
Obsuc-sapnar=wam (NHANVTEN) ©
Trang 28MENH DE SELECT
SELECT MANV, HONV, TENLOT, TENNV FROM NHANVIEN
WHERE PHG=5 AND PHAI='"Nam’
MANV | HONV | TENLOT | TENNV
333445555 | Nguyen Thanh Tung 987987987 | Nguyen Manh Hung
TU anv Honv;tentor,tennvi O pye=s A PHAI=`Nam' (NHANVIEN)) ©}
Trang 29MẸNH ĐÈ SELECT (TT)
Tên bí danh
SELECT MANV, HONV AS HO, TENLOT AS ‘TEN LOT’, TENNV AS TEN FROM NHANVIEN
WHERE PHG=5 AND PHAI="Nam’
MANV | HO | TENLOT | TEN
333445555 | Nguyen Thanh Tung 987987987 | Nguyen Manh Hung
Trang 30MẸNH ĐÈ SELECT (TT)
Mở rộng
SELECT MANV, HONV + ` ˆ + TENLOT + ` ˆ + TENNV AS `HO TEN FROM NHANVIEN
WHERE PHG=5 AND PHAI= Nam'
MANV | HO TEN
333445555 Nguyen Thanh Tung 987987987 Nguyen Manh Hung
Trang 31MẸNH ĐÈ SELECT (TT)
Mở rộng
SELECT MANV, LUONG*1.1 AS “LUONG10%’ FROM NHANVIEN
WHERE PHG=5 AND PHAI="Nam’
MANV | LUONG10%
333445555 33000 987987987 27500
OD MANV,LUONG 10%(TÙMANV,LUONG*I 1( pio=sAPHAI=Nam(N NO
Trang 32MENH DE SELECT (TT}
Loại bỏ các dong trùng nhau
SELECI DƯONRCT LUONG FROM NHANVIEN
WHERE PHG=5 AND PHAI="Nam’
LUONG
30000 ¬¬
25000 - Ton chi phi
28000 - Người dùng muốn thấy 38000
Trang 33VÍ DỤ
e Cho biết MANV và TENNV làm việc ở phòng ‘Nghien
J
cuu
Rl NHANVIEN !I ;„c-wapac PHONGBAN
KQ <— TU many, TENNV (O tenpHG='Nghien cuuXR1))
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG='"Nghien cuu’ PHG=MAPHG
Trang 34MENH DE WHERE
SELECT MANV, TENNV „Biểu thức luận lý
ow -_
OT TTT een meee ese
Trang 35MẸNH ĐÈ WHERE (TT)
Độ ưu tiên
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE (TENPHG='"Nghien cuu’ OR TENPHG='Quan ly’) AND PHG=MAPHG
Trang 36MENH BE WHERE (tT)
BETWEEN
SELECT MANV, TENNV FROM NHANVIEN
WHERE LUONG>20000 AND LUONG<30000
SELECT MANV, TENNV FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000
Trang 37MENH BE WHERE (tT)
NOT BETWEEN
SELECT MANV, TENNV FROM NHANVIEN
WHERE LUONG NOT BETWEEN 20000 AND 30000
Trang 38MỆNH ĐÊ WVHIEHE (TT)
LIKE
SELECT MANV, TENNV FROM NHANVIEN
WHERE DCHI LIE "Nguyen _ _ _ _’
SELECT MANV, TENNV Ky ty bat ky
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen %‘_
Chuỗi bất kỳ
Trang 39MẸNH ĐÈ WHERE (TT)
NOT LIKE
SELECT MANV, TENNV FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen’
SELECT MANV, TENNV FROM NHANVIEN
WHERE HONV NOT NOT LIKE ‘Nguyen’
Trang 40MENH BE WHERE (TT)
ESCAPE
SELECT MANV, TENNV FROM NHANVIEN
WHERE DCHI LIKE *% Nguyens_%' ESCAPE 's
|
'Nguyen_
Trang 41MENH BE WHERE (tT)
Ngay thang
SELECT MANV, TENNV FROM NHANVIEN
WHERE NGSINH BETWEEN *1955-12-08" AND *1966-07-19'
Trang 42MẸNH ĐÈ WHERE (TT)
NULL
- _ Sử dụng trong trường hợp
o Không biết (value unknown)
o Không thể áp dụng (value inapplicable)
o Không tôn tại (value withheld)
- _ Những biểu thức tính tốn có liên quan đến giá trị NULL sẽ
cho ra kết quả là NULL o X co gia tri la NULL
o x + 3 cho ra kết qua la NULL
o x + 3 là một biêu thức không hợp lệ trong SQL
- _ Những biểu thức so sánh có liên quan dén gia tri NULL sé cho
ra kết quả là UNKNOWN
o X= 3 cho ra kết quả là UNKNOWN
o X= 3 là một so sánh không hợp lệ trong SQL ©
Trang 43MẸNH ĐÈ WHERE (TT)
NULL
SELECT MANV, TENNV FROM NHANVIEN
WHERE MA_NQL IS NULL
SELECT MANV, TENNV FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
Trang 44MENH DE FROM
Không sử dụng mệnh đề WHERE
SELECT MANV, MAPHG
FROM NHANVIEN, PHONGBAN
Trang 45MENH DE FROM (TT)
Tén bi danh
SELECT TENPHG, DIADIEM
FROM PHONGBAN, ASDHBMDPHEM_PHG AS DD WHERE PADD STIAPICMAPHG
SELECT TENNV, NSEBESEINFENTENTINGSIWQ{GSINH
FROM NHANVIEN,NWIARMNANIAN TN WHERE MANV=MA_NVIEN
Trang 46VÍ DỤ
© Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã
phòng ban chủ trì đê án, họ tên trưởng phòng cùng với
ngày sinh và địa chỉ của người ây
s Tìm họ tên của nhân viên phòng sơ 5 có tham gia vào đề án “Sản phẩm X” với số giờ làm việc trên 10 giờ
° Tìm họ tên của từng nhân viên và người phụ trách trực tiêp nhân viên đó
© Tìm họ tên của những nhân viên được "Nguyen Thanh Tung’ phụ trách trực tiêp
Trang 47MENH DE ORDER BY
o Dung dé hién thị kết quả câu truy vẫn theo một thứ tự
nao do
o Cu phap
SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <diéu kién>
ORDER BY <danh sách các cột> e ASC: tang (mac định)
e DESC: giam
Trang 48
MENH DE ORDER BY (TT}
o Vi du
SELECT MA_NVIEN, SODA FROM PHANCONG
ORDER BY MA_NVIEN DESC, SODA
Trang 49NOI DUNG CHI TIET ©o Giới thiệu
©o Định nghĩa dữ liệu
o Truy vân dữ liệu
« Truy vận cơ bản
-_ Tập hợp, so sánh tập hợp và truy vấn lồng
e Ham ket hợp và gom nhóm
« Một sô dạng truy vẫn khác
o Cập nhật dữ liệu
ö Khung nhìn (view)
o Chi muc (index)
Trang 50PHEP TOAN TAP HOP TRONG SQL
o SQL co cai dat cac phep toan tap hop:
° Hdi (UNION)
e Giao (INTERSECT)
© Trtv (EXCEPT)
o Két gua tra vé la tap hop
e Loai b6 cac bé trung nhau
- Đề giữ lại các bộ trùng nhau
o UNION ALL
o INTERSECT ALL o EXCEPT ALL
Trang 51PHÉP TOÁN TẬP HỢP TRONG SQL (TT)
o Cu phap
SELECT <ds cOt> FROM <ds bang> WHERE <diéu kién> UNION [ALL]
SELECT <ds cét> FROM <ds bang> WHERE <diéu kién>
SELECT <ds cột> FROM <ds bang> WHERE <diéu kién> INTERSECT [ALL]
SELECT <ds cột> FROM <ds bang> WHERE <diéu kién>
SELECT <ds cột> FROM <ds bang> WHERE <diéu kién> EXCEPT [ALL]
SELECT <ds cOt> FROM <ds bang> WHERE <diéu ki€n>
Trang 52
VÍ DỤ 5
o Cho biết các mã đề án có
s_ Nhân viên với họ là Nguyen tham gia hoặc,
- _ Trưởng phòng chủ trì đề án đó với họ là ‘Nguyen’
SELECT SODA
FROM NHANVIEN, PHANCONG
WHERE MANV=MA_NVIEN HONV='‘Nguyen’ UNION
SELECT MADA
FROM NHANVIEN, PHONGBAN, DEAN
WHERE MANV=TRPHG MAPHG=PHONG
HONV='Nguyen’
Trang 53VÍ DỤ 6
© Tìm nhân viên có người thân cùng tên và cùng giới tính
SELECT TENNV, PHAI FROM NHANVIEN
INTERSẾCT
SELECT TENTN, PHAI FROM THANNHAN SELECT NV.*
FROM NHANVIEN NV, THANNHAN TN WHERE NV.MANV=TN.MA_NVIEN
NV TENNV=TN.TENTN NV.PHAI=TN.PHAI
Trang 54VÍ DỤ Z7
s Tìm những nhân viên khơng có thân nhân nào
SELECT MANV FROM NHANVIEN
peg SELECT MA_NVIEN AS MANV FROM THANNHAN
Trang 55TRUY VAN LONG
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG='"Nghien cuu’ PHG=MAPHG
Cau truy van cha
(Outer query) SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <so sánh tập hợp> ( SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điêu kiện>)
Câu truy vấn con
(Subquery)
Trang 56TRUY VẤN LỎNG (TT)
o Các câu lệnh SELECT có thể lồng nhau ở nhiều mức
© Câu truy vẫn con thường trả về một tập các giá trị
© Các câu truy vẫn con trong cùng một mệnh đề WHERE
được kết hợp bằng phép nôi logic
o Ménh dé WHERE cua cau truy van cha
-_ <biêu thức> <so sánh tập hợp> <truy van con>
e So sanh tap hợp thường đi cùng với một số toán tử o IN, NOT IN
o ALL
o ANY hoac SOME
e Kiém tra sự tôn tại
o EXISTS
o NOT EXISTS