Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 5Nội dung chi tiế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 -
Trang 1Chương 5
SQL
(
(Structured Query Language)
Nội dung chi tiết
Trang 2Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 3
Giới thiệu
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
- Phân quyền và bảo mật
- Điều khiển giao tác
Trang 3Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 5
Nội dung chi tiế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ị)
Trang 4Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 7
Kiểu dữ liệu
Số (numeric)
- INTEGER
- SMALLINT
- NUMERIC, NUMERIC(p), NUMERIC(p,s)
- DECIMAL, DECIMAL(p), DECIMAL(p,s)
Ngày giờ (datetime)
- DATE gồm ngày, tháng và năm
- TIME gồm giờ, phút và giây
- TIMESTAMP gồm ngày và giờ
Trang 5Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 9
Trang 6Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 11
CREATE TABLE NHANVIEN (
HONV VARCHAR(50) 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 7Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 13
Ví dụ - RBTV
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)
)
Ví dụ - Đặt tên cho RBTV
CREATE TABLE NHANVIEN (
HONV VARCHAR (50) CONSTRAINT NV_HONV_NN 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 8Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 15
CONSTRAINT PC_MANVIEN_FK FOREIGN KEY
(MA_NVIEN) REFERENCES NHANVIEN(MANV),
CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA)
ALTER TABLE <Tên_bảng> DROP COLUMN<Tên_cột>
ALTER TABLE <Tên_bảng> ALTER COLUMN
<Tên_cột> <Kiểu_dữ_liệu_mới>
Trang 9Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 17
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 10Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 19
ALTER TABLE PHONGBAN ADD
CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG),
CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG)
Được dùng để xóa cấu trúc bảng
- Tất cả dữ liệu của bảng cũng bị xóa
Cú pháp
Ví dụ
DROP TABLE <Tên_bảng>
DROP TABLE NHANVIEN
DROP TABLE PHONGBAN
DROP TABLE PHANCONG
Trang 11Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 21
Lệnh xóa bảng (tt)
NHANVIEN
TENNV HONV TENLOT MANV NGSINH DCHI PHAI LUONG MA_NQL PHG
PHONGBAN
TRPHG TENPHG MAPHG NG_NHANCHUC
Lệnh tạo và xóa miền giá trị
Tạo ra một kiểu dữ liệu mới kế thừa những
kiểu dữ liệu có sẳn
Cú pháp
Ví dụ
CREATE DOMAIN <Tên_kdl_mới> AS<Kiểu_dữ_liệu>
DROP DOMAIN <Tên_kdl_mới> AS <Kiểu_dữ_liệu>
CREATE DOMAIN Chuoi AS VARCHAR(50)
DROP DOMAIN Chuoi
Trang 12Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 23
Nội dung chi tiết
Là ngôn ngữ rút trích dữ liệu thỏa một số
điều kiện nào đó
Dựa trên
- Cho phép 1 bảng có nhiều dòng trùng nhau
Phép toán ĐSQH + Một số bổ sung
Trang 13Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 25
Truy vấn cơ bản (SELECT)
- Nối các biểu thức: AND, OR, và NOT
- Phép toán: < , > , ≤ , ≥ , ≠ , =, LIKE, BETWEEN,
EXISTS, ANY/SOME, ALL, IN
Trang 14Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 27
σPHG=5 (NHANVIEN)
TENNV
Tung Nguyen 12/08/1955 638 NVC Q5 Nam 40000 5
Hung Nguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
888665555 333445555
TENLOT Thanh Manh
Trang 15Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 29
Mệnh đề SELECT
SELECT MANV, HONV, TENLOT, TENNV
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
πMANV,HONV,TENLOT,TENNV(σPHG=5 ∧ PHAI=‘Nam’(NHANVIEN))
TENNV HONV
Tung Nguyen
Hung Nguyen
TENLOT Thanh Manh
WHERE PHG=5 AND PHAI= ‘Nam’
ρMANV,HO,TEN LOT,TEN (πMANV,HONV,TENLOT,TENNV(σPHG=5∧PHAI=‘Nam’(NHANVIEN)))
TEN HO
Tung Nguyen
Hung Nguyen
TEN LOT Thanh
Manh
33344555
5 98798798
7 MANV
Tên bí danh
Trang 16Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 31
Mệnh đề SELECT (tt)
SELECT MANV,
HONV + ‘ ’ + TENLOT + ‘ ’ + TENNV AS ‘HO TEN’
FROM NHANVIEN
WHERE PHG=5 AND PHAI= ‘Nam’
ρMANV,HO TEN(πMANV,HONV+TENLOT+TENNV(σPHG=5∧PHAI=‘Nam’(NHANVIEN)))
HO TEN Nguyen Thanh Tung Nguyen Manh Hung
WHERE PHG=5 AND PHAI=‘Nam’
ρMANV,LUONG10%(πMANV,LUONG*1.1(σPHG=5∧PHAI=‘Nam’(NHANVIEN)))
LUONG10%
33000 27500
333445555 987987987 MANV
Mở rộng
Trang 17Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 33
R1 ← NHANVIEN PHG=MAPHG PHONGBAN
KQ ← πMANV, TENNV ( σTENPHG=‘Nghien cuu’(R1))
MANV, TENNV
NHANVIEN, PHONGBAN
TENPHG=‘Nghien cuu’ AND PHG=MAPHG
Trang 18Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 35
Mệnh đề WHERE
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG
Biểu thức luận lý
TRUE
TRUE
Mệnh đề WHERE (tt)
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE (TENPHG=‘K Toan’ OR TENPHG=‘Quan ly’)
AND PHG=MAPHG
Độ ưu tiên
Trang 19Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 37
WHERE LUONG BETWEEN 20000 AND 30000
Mệnh đề WHERE (tt) NOT BETWEEN
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG NOT BETWEEN 20000 AND 30000
Trang 20Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 39
Trang 21Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 41
Trang 22Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 43
Mệnh đề WHERE (tt) NULL
Sử dụng trong trường hợp
- Không biết (value unknown)
- Không thể áp dụng (value inapplicable)
- Không tồn tại (value withheld)
Những biểu thức tính toán có liên quan đến giá trị
NULL sẽ cho ra kết quả là NULL
- x có giá trị là NULL
- x + 3 cho ra kết quả là NULL
- 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 đến giá trị
NULL sẽ cho ra kết quả là UNKNOWN
- x = 3 cho ra kết quả là UNKNOWN
- x = 3 là một so sánh không hợp lệ trong SQL
Mệ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 23Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 45
WHERE TRUE
Mệnh đề FROM
SELECT MANV, MAPHG
FROM NHANVIEN, PHONGBAN
Không sử dụng mệnh đề WHERE
MAPHG 1 4
333445555 333445555 MANV
5 1 987987987
987987987
333445555
4 5 987987987
Mệnh đề FROM (tt)
SELECT TENPHG, DIADIEM
FROM PHONGBAN, DDIEM_PHG
Tên bí danh ( Alias )
SELECT TENPHG, DIADIEM
FROM PHONGBAN AS PB, DDIEM_PHG AS DD
WHERE PB.MAPHG=DD.MAPHG
SELECT TENNV, NGSINH, TENTN, NGSINH
FROM NHANVIEN, THANNHAN
WHERE MANV=MA_NVIEN
SELECT TENNV, NV.NGSINH, TENTN, TN.NGSINH
FROM NHANVIEN NV, THANNHAN TN
WHERE MANV=MA_NVIEN
Trang 24Cơ sở dữ liệu - Khoa ĐT-TH - CĐ KTCN-ĐN 47
999887777
999887777
MA_NVIEN
10 30 987987987
987654321
987987987
10 20 987654321
30 987654321