Bài giảng Cơ sở dữ liệu - Chương 5: SQL (Bản đẹp)

Nội dung chi tiết

 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)

pdf 139 trang phuongnguyen 7800
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu - Chương 5: SQL (Bản đẹp)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Cơ sở dữ liệu - Chương 5: SQL (Bản đẹp)

Bài giảng Cơ sở dữ liệu - Chương 5: SQL (Bản đẹp)
Chương 5
 SQL
Nội dung chi tiết
 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)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 2
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
  SQL-86
  SQL-92
  SQL-99
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 3
Giới thiệu (tt)
 SQL gồm
 - Định nghĩa dữ liệu (DDL)
 - Thao tác dữ liệu (DML)
 - Định nghĩa khung nhìn Lý thuyết : Chuẩn SQL-92
 - Ràng buộc toàn vẹn Ví dụ : SQL Server 
 - Phân quyền và bảo mật
 - Điều khiển giao tác
 SQL sử dụng thuật ngữ
 - Bảng ~ quan hệ
 - Cột ~ thuộc tính
 - Dòng ~ bộ
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 4
Nội dung chi tiết
 Giới thiệu
 Định nghĩa dữ liệu
 - Kiểu dữ liệu
 - Các lệnh đị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)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 5
Đị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
 - 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 6
Kiểu dữ liệu
 Số (numeric)
 - INTEGER
 - SMALLINT
 - NUMERIC, NUMERIC(p), NUMERIC(p,s)
 - DECIMAL, DECIMAL(p), DECIMAL(p,s)
 - REAL
 - DOUBLE PRECISION
 - FLOAT, FLOAT(p)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 7
Kiểu dữ liệu (tt)
 Chuỗi ký tự (character string)
 - CHARACTER, CHARACTER(n)
 - CHARACTER VARYING(x)
 Chuỗi bit (bit string)
 - BIT, BIT(x)
 - BIT VARYING(x)
 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ờ
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 8
Lệnh tạo bảng
 Để định nghĩa một bảng
 - Tên bảng
 - Các thuộc tính
  Tên thuộc tính
  Kiểu dữ liệu
  Các RBTV trên thuộc tính
 Cú pháp
 CREATE TABLE (
 [],
 [],
 []
 )
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 9
Ví dụ - Tạo bảng
 CREATE TABLE NHANVIEN (
 MANV CHAR(9),
 HONV VARCHAR(10),
 TENLOT VARCHAR(20),
 TENNV VARCHAR(10),
 NGSINH DATETIME,
 DCHI VARCHAR(50),
 PHAI CHAR(3),
 LUONG INT,
 MA_NQL CHAR(9),
 PHG INT
 )
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 10
Lệnh tạo bảng (tt)
 - NOT NULL
 - NULL
 - UNIQUE
 - DEFAULT
 - PRIMARY KEY
 - FOREIGN KEY / REFERENCES
 - CHECK
 Đặt tên cho RBTV
 CONSTRAINT 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 11
Ví dụ - RBTV
 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
 )
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 12
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)
 )
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 13
Ví dụ - Đặt tên 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
)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 14
 Ví dụ - Đặt tên cho RBTV
CREATE TABLE PHANCONG (
 MA_NVIEN CHAR(9),
 SODA INT,
 THOIGIAN DECIMAL(3,1),
 CONSTRAINT gidoK 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)
)
 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 15
Lệnh sửa bảng
 Được dùng để
 - Thay đổi cấu trúc bảng
 - Thay đổi RBTV
 Thêm cột ALTER TABLE ADD COLUMN
 []
 Xóa cột ALTER TABLE DROP COLUMN 
 ALTER TABLE ALTER COLUMN
 Mở rộng cột 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 16
Lệnh sửa bảng (tt)
 Thêm RBTV
 ALTER TABLE ADD
 CONSTRAINT ,
 CONSTRAINT ,
 Xóa RBTV
 ALTER TABLE DROP 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 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)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 18
Ví 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)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 19
Lệnh xóa bảng
 Đượ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
 DROP TABLE 
 Ví dụ
 DROP TABLE NHANVIEN
 DROP TABLE PHONGBAN
 DROP TABLE PHANCONG
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 20
Lệnh xóa bảng (tt)
 NHANVIEN
 HONV TENLOT TENNV MANV NGSINH DCHI PHAI LUONG MA_NQL PHG
 PHONGBAN
 TENPHG MAPHG TRPHG NG_NHANCHUC
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 21
Lệnh tạo 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
 CREATE DOMAIN AS 
 Ví dụ
 CREATE DOMAIN Kieu_Ten AS VARCHAR(30)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 22
Nội dung chi tiết
 Giới thiệu
 Định nghĩa dữ liệu
 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
 - Hàm kết hợp và gom nhóm
 - Một số kiểu truy vấn khác
 Cập nhật dữ liệu
 Khung nhìn (view)
 Chỉ mục (index)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 23
Truy vấn dữ liệu
 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
 Phép toán ĐSQH Một số bổ sung
 - Cho phép 1 bảng có nhiều dòng trùng nhau
 - Bảng là bag quan hệ là set
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 24
Truy vấn cơ bản
 Gồm 3 mệnh đề
 SELECT 
 FROM 
 WHERE 
 - 
  Tên các cột cần được hiển thị trong kết quả truy vấn
 - 
  Tên các bảng liên quan đến câu truy vấn
 - 
  Biểu thức boolean xác định dòng nào sẽ được rút trích
  Nối các biểu thức: AND, OR, và NOT
  Phép toán: , , , , , , LIKE và BETWEEN
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 25
Truy vấn cơ bản (tt)
 SQL và ĐSQH
 SELECT 
 FROM 
 WHERE 
 SELECT L
 FROM L (R C (R))
 WHERE C
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 26
 Ví 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
 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 27
Mệnh đề 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
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 28
Mệ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 TEN LOT TEN
 333445555 Nguyen Thanh Tung
 987987987 Nguyen Manh Hung
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 29
Mệ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
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 30
Mệ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
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 31
Mệnh đề SELECT (tt)
Loại bỏ các dòng trùng nhau
 SELECT DISTINCTLUONG LUONG
 FROM NHANVIEN
 WHERE PHG=5 AND PHAI=‘Nam’
 LUONG
 30000
 - Tốn chi phí
 25000
 2500038000 - Người dùng muốn thấy
 38000
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 32
Ví dụ
 Cho biết MANV và TENNV làm việc ở phòng
 ‘Nghien cuu’
Select manv, tennv
from nhanvien, phongban
where (nhanvien.mphg = phongban.mphg) and
 (phongban.tenphong = “nghien cuu”)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 33
Mệnh đề WHERE
 SELECT MANV, TENNV Biểu thức luận lý
 FROM NHANVIEN, PHONGBAN
 WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG
 TRUE TRUE
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 34
Mệnh đề WHERE (tt)
Độ ưu tiên
 SELECT MANV, TENNV 
 FROM NHANVIEN, PHONGBAN
 WHERE (TENPHG=‘Nghien cuu’ OR TENPHG=‘Quan ly’) AND PHG=MAPHG
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 35
Mệnh đề 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
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 36
Mệnh đề WHERE (tt)
NOT BETWEEN
 SELECT MANV, TENNV 
 FROM NHANVIEN
 WHERE LUONG NOT BETWEEN 20000 AND 30000
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 37
Mệnh đề WHERE (tt)
 LIKE
 SELECT MANV, TENNV 
 FROM NHANVIEN
 WHERE DCHI LIKE ‘Nguyen _ _ _ _’
 SELECT MANV, TENNV Ký tự bất kỳ
 FROM NHANVIEN
 WHERE DCHI LIKE ‘Nguyen %’
 Chuỗi bất kỳ
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 38
Mệ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’
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 39
Mệnh đề WHERE (tt)
ESCAPE
 SELECT MANV, TENNV 
 FROM NHANVIEN
 WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’
 ‘Nguyen_’
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 40
Mệnh đề WHERE (tt)
 Ngày giờ
 SELECT MANV, TENNV 
 FROM NHANVIEN
 WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’
 ‘1955-12-08’ YYYY-MM-DD ’17:30:00’ HH:MI:SS
 ’12/08/1955’ MM/DD/YYYY ’05:30 PM’
 ‘December 8, 1955’
 ‘1955-12-08 17:30:00’
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 41
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
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 42
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
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 43
Mệnh đề FROM
Không sử dụng mệnh đề WHERE
 SELECT MANV, MAPHG
 FROM NHANVIEN, PHONGBAN
 WHERE TRUE
 MANV MAPHG
 333445555 1
 333445555 4
 333445555 5
 987987987 1
 987987987 4
 987987987 5
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 44
Mệnh đề FROM (tt)
Tên bí danh
 SELECT TENPHG, DIADIEM
 FROM PHONGBAN,PHONGBAN ASDDIEM_PHGPB, DDIEM_PHG AS DD
 WHERE MAPHG=MAPHGPB.MAPHG=DD.MAPHG
 SELECT TENNV, NGSINH,NV.NGSINH, TENTN, TENTN, NGSINH TN.NGSINH
 FROM NHANVIEN,NHANVIEN NV,THANNHAN THANNHAN TN
 WHERE MANV=MA_NVIEN
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 45
Ví dụ 1
 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
Select a.soda, a.mphg, b.tennv, b.ngsinh, b.diachi
 From dean a, nhanvien b, phongban c
Where (a.mphb = b.mphg) and (b.manv =
 c.matrphong)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 46
Ví dụ 2
 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ờ
Select a.ho, a.lot, a.ten
From nhanvien a, dean b, phancong c
Where (a.manv = c.manv) and (b.soda = c.soda)
and tendean=“San pham X” and (a.maphg=5) and
 (c.thoigian>10)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 47
Ví dụ 3
 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 đó
Select a.tennv, b.tennv
From nhanvien a, nhanvien b
Where a.manql = b.manv
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 48
Ví dụ 4
 Tìm họ tên của những nhân viên được “Nguyen
 Thanh Tung” phụ trách trực tiếp
Select a.tennv
From nhanvien a, nhanvien b
Where (b.tenv=“Nguyen Thanh Tung”) and
 (a.manql=b.manv)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 49
Mệnh đề ORDER BY
 Dùng để hiển thị kết quả câu truy vấn theo một thứ
 tự nào đó
 Cú pháp
 SELECT 
 FROM 
 WHERE 
 ORDER BY 
 - ASC: tăng (mặc định)
 - DESC: giảm
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 50
Mệnh đề ORDER BY (tt)
 Ví dụ
 SELECT MA_NVIEN, SODA
 FROM PHANCONG
 ORDER BY MA_NVIEN DESC, SODA
 MA_NVIEN SODA
 999887777 10
 999887777 30
 987987987 10
 987987987 30
 987654321 10
 987654321 20
 987654321 30
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 51
Nội dung chi tiết
 Giới thiệu
 Định nghĩa dữ liệu
 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
 - Hàm kết hợp và gom nhóm
 - Một số dạng truy vấn khác
 Cập nhật dữ liệu
 Khung nhìn (view)
 Chỉ mục (index)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 52
Phép toán tập hợp trong SQL
 SQL có cài đặt các phép toán
 - Hội (UNION)
 - Giao (INTERSECT)
 - Trừ (EXCEPT)
 Kết quả trả về là tập hợp
 - Loại bỏ các bộ trùng nhau
 - Để giữ lại các bộ trùng nhau
  UNION ALL
  INTERSECT ALL
  EXCEPT ALL
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 53
Phép toán tập hợp trong SQL (tt)
 Cú pháp
 SELECT FROM WHERE 
 UNION [ALL]
 SELECT FROM WHERE 
 SELECT FROM WHERE 
 INTERSECT [ALL]
 SELECT FROM WHERE 
 SELECT FROM WHERE 
 EXCEPT [ALL]
 SELECT FROM WHERE 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 54
Ví dụ 5
 Cho biết các mã đề án có
 - 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 b.soda
 From nhanvien a , dean b
 Where (a.manv = b.manv) and (a.ho=“Nguyen”)
 union
 (Select b.soda
 From phongban a, dean b, nhanvien c
 Where (b.maphg=a.maphg) and (c.manv=a.matrphong)
 and (c.ho=“Nguyen”))
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 55
Ví dụ 6
 Tìm nhân viên có người thân cùng tên và cùng giới
 tính
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 56
Ví dụ 7
 Tìm những nhân viên không có thân nhân nào
Select tennv,manv
From nhanvien
Except
Select manv
From thanhan
Select tennv
From nhanvien
Where manv not in (select manv from thannhan)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM  ... NULL 1
 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 81
Gom nhóm
 Cú pháp
 SELECT 
 FROM 
 WHERE 
 GROUP BY 
 Sau khi gom nhóm
 - Mỗi nhóm các bộ sẽ có cùng giá trị tại các thuộc tính
 gom nhóm
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 82
Ví dụ 14
 Cho biết số lượng nhân viên của từng phòng ban
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 83
Ví dụ 15
 Với mỗi nhân viên cho biết mã số, họ tên, số lượng
 đề án và tổng thời gian mà họ tham gia
 MA_NVIEN SODA THOIGIAN
 SELECT123456789MA_NVIEN, 1COUNT32.5(*) AS SL_DA, 
 123456789SUM(THOIGIAN)2 AS7.5TONG_TG
 FROM PHANCONG333445555 2 10.0
 333445555 3 10.0
 GROUP BY MA_NVIEN
 333445555 10 10.0
 888665555 20 20.0
 SELECT987987987HONV, TENNV,10 COUNT35.0(*) AS SL_DA, 
 987987987SUM(THOIGIAN)30 AS5.0TONG_TG
 987654321 30 20.0
 FROM PHANCONG, NHANVIEN
 987654321 20 15.0
 WHERE453453453MA_NVIEN=MANV1 20.0
 GROUP 453453453BY MA_NVIEN,2 HONV,20.0 TENNV
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 84
Ví dụ 16
 Cho biết những nhân viên tham gia từ 2 đề án trở
 lên
 MA_NVIEN SODA THOIGIAN
 123456789 1 32.5
 123456789 2 7.5
 333445555 2 10.0
 333445555 3 10.0
 333445555 10 10.0
 888665555 20 20.0 bị loại ra
 987987987 10 35.0
 987987987 30 5.0
 987654321 30 20.0
 987654321 20 15.0
 453453453 1 20.0
 453453453 2 20.0
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 85
Điều kiện trên nhóm
 Cú pháp
 SELECT 
 FROM 
 WHERE 
 GROUP BY 
 HAVING 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 86
Ví dụ 16
 Cho biết những nhân viên tham gia từ 2 đề án trở
 lên
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 87
Ví dụ 17
 Cho biết những phòng ban (TENPHG) có lương
 trung bình của các nhân viên lớn lơn 20000
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 88
Nhận xét
 Mệnh đề GROUP BY
 - Các thuộc tính trong mệnh đề SELECT (trừ những thuộc
 tính trong các hàm kết hợp) phải xuất hiện trong mệnh
 đề GROUP BY
 Mệnh đề HAVING
 - Sử dụng các hàm kết hợp trong mệnh đề SELECT để
 kiểm tra một số điều kiện nào đó
 - Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc
 trên từng bộ
 - Sau khi gom nhóm điều kiện trên nhóm mới được thực
 hiện
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 89
Nhận xét (tt)
 Thứ tự thực hiện câu truy vấn có mệnh đề GROUP
 BY và HAVING
 - (1) Chọn ra những dòng thỏa điều kiện trong mệnh đề
 WHERE
 - (2) Những dòng này sẽ được gom thành nhiều nhóm
 tương ứng với mệnh đề GROUP BY
 - (3) Áp dụng các hàm kết hợp cho mỗi nhóm
 - (4) Bỏ qua những nhóm không thỏa điều kiện trong
 mệnh đề HAVING
 - (5) Rút trích các giá trị của các cột và hàm kết hợp trong
 mệnh đề SELECT
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 90
Ví dụ 18
 Tìm những phòng ban có lương trung bình cao nhất
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 91
Ví dụ 19
 Tìm 3 nhân viên có lương cao nhất
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 92
Ví dụ 12
 Tìm tên các nhân viên được phân công làm tất cả
 các đồ án
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 93
Nội dung chi tiết
 Giới thiệu
 Định nghĩa dữ liệu
 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
 - Hàm kết hợp và gom nhóm
 - Một số dạng truy vấn khác
 Cập nhật dữ liệu
 Khung nhìn (view)
 Chỉ mục (index)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 94
Một số dạng truy vấn khác
 Truy vấn con ở mệnh đề FROM
 Điều kiện kết ở mệnh đề FROM
 - Phép kết tự nhiên
 - Phép kết ngoàI
 Cấu trúc CASE
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 95
Truy vấn con ở mệnh đề FROM
 Kết quả trả về của một câu truy vấn phụ là một bảng
 - Bảng trung gian trong quá trình truy vấn
 - Không có lưu trữ thật sự
 Cú pháp
 SELECT 
 FROM R1, R2, () AS tên_bảng
 WHERE 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 96
Ví dụ 18
 Cho biết những phòng ban (TENPHG) có lương
 trung bình của các nhân viên lớn lơn 20000
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 97
Điều kiện kết ở mệnh đề FROM
 Kết bằng
 SELECT 
 FROM R1 [INNER] JOIN R2 ON 
 WHERE 
 Kết ngoài
 SELECT 
 FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON 
 WHERE 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 98
Ví dụ 20
 Tìm mã và tên các nhân viên làm việc tại phòng
 ‘Nghien cuu’
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 99
Ví dụ 21
 Tìm họ tên các nhân viên và tên các đề án nhân
 viên tham gia nếu có
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 100
Cấu trúc CASE
 Cho phép kiểm tra điều kiện và xuất thông tin theo
 từng trường hợp
 Cú pháp
 CASE 
 WHEN THEN 
 WHEN THEN 
 [ELSE ]
 END
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 101
Ví dụ 22
 Cho biết họ tên các nhân viên đã đến tuổi về hưu
 (nam 60 tuổi, nữ 55 tuổi)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 102
Ví dụ 23
 Cho biết họ tên các nhân viên và năm về hưu
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 103
Kết luận
 SELECT 
 FROM 
 [WHERE ]
 [GROUP BY ]
 [HAVING ]
 [ORDER BY ]
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 104
Nội dung chi tiết
 Giới thiệu
 Định nghĩa dữ liệu
 Truy vấn dữ liệu
 Cập nhật dữ liệu
 - Thêm (insert)
 - Xóa (delete)
 - Sửa (update)
 Khung nhìn (view)
 Chỉ mục (index)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 105
Lệnh INSERT
 Dùng để thêm 1 hay nhiều dòng vào bảng
 Để thêm dữ liệu
 - Tên quan hệ
 - Danh sách các thuộc tính cần thêm dữ liệu
 - Danh sách các giá trị tương ứng
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 106
Lệnh INSERT (tt)
 Cú pháp (thêm 1 dòng)
 INSERT INTO ()
 VALUES ()
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 107
 Ví dụ
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV)
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’)
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV, DCHI)
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL)
INSERT INTO NHANVIEN
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, ’12/30/1952’, ’98 HV’, ‘Nam’, ‘37000’, 4)
 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 108
Lệnh INSERT (tt)
 Nhận xét
 - Thứ tự các giá trị phải trùng với thứ tự các cột
 - Có thể thêm giá trị NULL ở những thuộc tính không là
 khóa chính và NOT NULL
 - Câu lệnh INSERT sẽ gặp lỗi nếu vi phạm RBTV
  Khóa chính
  Tham chiếu
  NOT NULL - các thuộc tính có ràng buộc NOT NULL bắt buộc
 phải có giá trị
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 109
Lệnh INSERT (tt)
 Cú pháp (thêm nhiều dòng)
 INSERT INTO ()
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 110
Ví dụ
 CREATE TABLE THONGKE_PB (
 TENPHG VARCHAR(20),
 SL_NV INT,
 LUONG_TC INT
 )
 INSERT INTO THONGKE_PB(TENPHG, SL_NV, LUONG_TC)
 SELECT TENPHG, COUNT(MANV), SUM(LUONG)
 FROM NHANVIEN, PHONGBAN
 WHERE PHG=MAPHG
 GROUP BY TENPHG
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 111
Lệnh DELETE 
 Dùng để xóa các dòng của bảng
 Cú pháp
 DELETE FROM 
 [WHERE ]
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 112
Ví dụ
 DELETE FROM NHANVIEN
 WHERE HONV=‘Tran’
 DELETE FROM NHANVIEN
 WHERE MANV=‘345345345’
 DELETE FROM NHANVIEN
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 113
Ví dụ 24
 Xóa đi những nhân viên ở phòng ‘Nghien cuu’
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 114
Lệnh DELETE (tt) 
 Nhận xét
 - Số lượng số dòng bị xóa phụ thuộc vào điều kiện ở
 mệnh đề WHERE
 - Nếu không chỉ định điều kiện ở mệnh đề WHERE, tất cả
 các dòng trong bảng sẽ bị xóa
 - Lệnh DELETE có thể gây ra vi phạm RB tham chiếu
  Không cho xóa
  Xóa luôn những dòng có giá trị đang tham chiếu đến
 CASCADE
  Đặt NULL cho những giá trị tham chiếu
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 115
 Lệnh DELETE (tt) 
 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
453453453 Tran Thanh Tam 07/31/1972 543 MTL Q1 Nu 25000 333445555 5
999887777 Bui Ngoc Hang 07/19/1968 33 NTH Q1 Nu 38000 987654321 4
987654321 Le Quynh Nhu 07620/1951 219 TD Q3 Nu 43000 888665555 4
987987987 Tran Hong Quang 04/08/1969 980 LHP Q5 Nam 25000 987654321 4
888665555 Pham Van Vinh 11/10/1945 450 TV HN Nam 55000 NULL 1
 MA_NVIEN SODA THOIGIAN
 333445555 10 10.0
 888665555 20 20.0
 987987987 10 35.0
 987987987 30 5.0
 987654321 30 20.0
 453453453 1 20.0
 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 116
 Lệnh DELETE (tt) 
 TENPHG MAPHG MA_NVIEN NG_NHANCHUC
 Nghien cuu 5 333445555 05/22/1988
 Dieu hanh 4 987987987 01/01/1995
 Quan ly 1 888665555 06/19/1981
 MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG
333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 NULL5
987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 NULL5
453453453 Tran Thanh Tam 07/31/1972 543 MTL Q1 Nu 25000 333445555 NULL5
999887777 Bui Ngoc Hang 07/19/1968 33 NTH Q1 Nu 38000 987654321 4
987654321 Le Quynh Nhu 07620/1951 219 TD Q3 Nu 43000 888665555 4
987987987 Tran Hong Quang 04/08/1969 980 LHP Q5 Nam 25000 987654321 4
888665555 Pham Van Vinh 11/10/1945 450 TV HN Nam 55000 NULL 1
 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 117
Lệnh UPDATE 
 Dùng để thay đổi giá trị của thuộc tính cho các dòng
 của bảng
 Cú pháp
 UPDATE 
 SET =,
 =, 
 [WHERE ]
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 118
Ví dụ
 UPDATE NHANVIEN
 SET NGSINH=’08/12/1965’
 WHERE MANV=‘333445555’
 DELETE NHANVIEN
 SET LUONG=LUONG*1.1
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 119
Ví dụ 25
 Với đề án có mã số 10, hãy thay đổi nơi thực hiện
 đề án thành ‘Vung Tau’ và phòng ban phụ trách là
 phòng 5
 UPDATE DEAN
 SET DIADIEM_DA=’Vung Tau’, PHONG=5
 WHERE MADA=10
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 120
Lệnh UPDATE 
 Nhận xét
 - Những dòng thỏa điều kiện tại mệnh đề WHERE sẽ
 được cập nhật giá trị mới
 - Nếu không chỉ định điều kiện ở mệnh đề WHERE, tất cả
 các dòng trong bảng sẽ bị cập nhật
 - Lệnh UPDATE có thể gây ra vi phạm RB tham chiếu
  Không cho sửa
  Sửa luôn những dòng có giá trị đang tham chiếu đến
 CASCADE
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 121
Nội dung chi tiết
 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
 - Định nghĩa
 - Truy vấn
 - Cập nhật
 Chỉ mục
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 122
Khung nhìn
 Bảng là một quan hệ được tổ chức lưu trữ vật lý
 trong CSDL
 Khung nhìn cũng là một quan hệ
 - Không được lưu trữ vật lý (bảng ảo)
 - Không chứa dữ liệu
 - Được định nghĩa từ những bảng khác
 - Có thể truy vấn hay cập nhật thông qua khung nhìn
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 123
Khung nhìn (tt)
 Tại sao phải sử dụng khung nhìn?
 - Che dấu tính phức tạp của dữ liệu
 - Đơn giản hóa các câu truy vấn
 - Hiển thị dữ liệu dưới dạng tiện dụng nhất
 - An toàn dữ liệu
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 124
Định nghĩa khung nhìn
 Cú pháp
 CREATE VIEW AS
 DROP VIEW 
 Bảng ảo này có
 - Danh sách thuộc tính trùng với các thuộc tính trong
 mệnh đề SELECT
 - Số dòng phụ thuộc vào điều kiện ở mệnh đề WHERE
 - Dữ liệu được lấy từ các bảng ở mệnh đề FROM
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 125
Ví dụ
 CREATE VIEW NV_P5 AS
 SELECT MANV, HONV, TENLOT, TENVN
 FROM NHANVIEN
 WHERE PHG=5
 CREATE VIEW TONGLNG_SLNV_PB AS
 SELECT MAPHG, TENPB, COUNT(*) AS SLNV, 
 SUM(LUONG) AS TONGLNG 
 FROM NHANVIEN, PHONGBAN
 WHERE PHG=MAPHG
 GROUP BY TENPHG
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 126
Truy vấn trên khung nhìn
 Tuy không chứa dữ liệu nhưng có thể thực hiện các
 câu truy vấn trên khung nhìn
 SELECT TENNV
 FROM NV_P5
 WHERE HONV LIKE ‘Nguyen’
 NV_P5  MANV,HONV, TENLOT, TENNV (PHG=5 (NHANVIEN))
 TENNV (HONV=‘Nguyen’ (NV_P5))
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 127
Truy vấn trên khung nhìn (tt)
 Có thể viết câu truy vấn dữ liệu từ khung nhìn và
 bảng
 SELECT HONV, TENVN, TENDA, THOIGIAN
 FROM NV_P5, PHANCONG, DEAN
 WHERE MANV=MA_NVIEN AND SODA=MADA
 NV_P5  MANV,HONV, TENLOT, TENNV (PHG=5 (NHANVIEN))
 TMP  NV_P5 MANV=MA_NVIEN PHONGBAN SODA=MADADEAN
 TENNV,TENDA,THOIGIAN(TMP)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 128
Cập nhật trên khung nhìn
 Có thể dùng các câu lệnh INSERT, DELETE và
 UPDATE cho các khung nhìn đơn giản
 - Khung nhìn được xây dựng trên 1 bảng và có khóa
 chính của bảng
 Không thể cập nhật dữ liệu nếu
 - Khung nhìn có dùng từ khóa DISTINCT
 - Khung nhìn có sử dụng các hàm kết hợp
 - Khung nhìn có mệnh đề SELECT mở rộng
 - Khung nhìn được xây dựng từ bảng có RB trên cột
 - Khung nhìn được xây dựng từ nhiều bảng
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 129
Cập nhật trên khung nhìn (tt)
 Sửa lại họ cho nhân viên mã ‘123456789’ ở phòng 5
 là ‘Pham’
 UPDATE NV_P5
 SET HONV=‘Pham’
 WHERE MANV= ‘123456789’
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 130
Nội dung chi tiết
 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
 Chỉ mục
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 131
Chỉ mục
 Chỉ mục trên thuộc tính A là một cấu trúc dữ liệu
 làm cho việc tìm kiếm mẫu tin có chứa A hiệu quả
 hơn
 SELECT *
 FROM NHANVIEN Đọc 10.000 bộ
 WHERE PHG=5 AND PHAI=‘Nu’
 Đọc 200 bộ
 Bảng NHANVIEN có 10.000 bộ
 Đọc 70 bộ
 Có 200 nhân viên làm việc cho phòng 5
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 132
Chỉ mục (tt)
 Cú pháp
 CREATE INDEX ON ()
 DROP INDEX 
 Ví dụ
 CREATE INDEX PHG_IND ON NHANVIEN(PHG)
 CREATE INDEX PHG_PHAI_IND ON NHANVIEN(PHG, PHAI)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 133
Chỉ mục (tt)
 Nhận xét
 - Tìm kiếm nhanh trong trường hợp so sánh với hằng số
 và phép kết
 - Làm chậm đi các thao tác thêm, xóa và sửa
 - Tốn chi phí
  Lưu trữ chỉ mục
  Truy xuất đĩa nhiều
 Chọn lựa cài đặt chỉ mục hợp lý???
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 134
Ví dụ
 Xét quan hệ
 - PHANCONG(MA_NVIEN, SODA, THOIGIAN)
 Giả sử
 - PHANCONG được lưu trữ trong 10 block
  Chi phí để đọc toàn bộ dữ liệu của PHANCONG là 10
 - Trung bình một nhân viên tham gia 3 đề án và một đề án
 có khoảng 3 nhân viên làm
  Dữ liệu được trải đều trong 10 block
  Chi phí để tìm một nhân viên hay một đề án là 3
 - Khi sử dụng chỉ mục
  Chi phí đọc hay cập nhật chỉ mục
 - Thao tác thêm cần 2 lần truy xuất đĩa
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 135
Ví dụ (tt)
 Giả sử có 3 thao tác được thực hiện thường xuyên
 - Q1
 SELECT SODA, THOIGIAN
 FROM PHANCONG
 WHERE MA_NVIEN=‘123456789’
 - Q2
 SELECT MANV
 FROM PHANCONG
 WHERE SODA=1 AND THOIGIAN=20.5
 - Q3
 INSERT INTO PHANCONG
 VALUES ( 123456789’, 1, 20.5)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 136
Ví dụ (tt)
 Bảng so sánh chi phí
 Không có Chỉ mục trên Chỉ mục Chỉ mục trên 
 Thao tác chỉ mục MA_NVIEN trên SODA cả 2 thuộc tính
 Q1 10 4 10 4
 Q2 10 10 4 4
 Q3 2 4 4 6
 Chí phí TB 2 + 8p1 + 8p2 4 + 6p2 4 + 6p1 6 - 2p1 – 2p2
 Khoảng thời gian thực hiện Q1 là p1
 Khoảng thời gian thực hiện Q2 là p2
 Khoảng thời gian thực hiện Q3 là 1 - p1 - p2
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 137
Bài tập về nhà
 Bài tập
 - 6.1.1 đến 6.1.4 / 252 - 253
 - 6.2.1 đến 6.2.3 / 262 - 263
 - 6.3.1 đến 6.3.3 / 274 - 275
 - 6.3.7 đến 6.3.10 / 275 - 276
 - 6.4.1, 6.4.2, 6.4.6, 6.4.7 / 284 - 285
 - 6.5.1, 6.5.2 / 290 - 291
 - 6.7.1 đến 6.7.6 / 311 -312
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 138
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 139

File đính kèm:

  • pdfbai_giang_co_so_du_lieu_chuong_5_sql_ban_dep.pdf