Bài giảng môn Cơ sở dữ liệu - Chương 4: Ngôn ngữ truy vấn SQL

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 (Structured English Query Language)

– Được ANSI công nhận và phát triển thành chuẩn

• SQL-86

• SQL-92

• SQL-99

SQL gồm

– Định nghĩa dữ liệu (DDL)

– Thao tác dữ liệu (DML)

– Định nghĩa khung nhìn

– Ràng buộc toàn vẹn

– 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ộ

pdf 36 trang kimcuc 4640
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Cơ sở dữ liệu - Chương 4: Ngôn ngữ truy vấn SQL", để 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 môn Cơ sở dữ liệu - Chương 4: Ngôn ngữ truy vấn SQL

Bài giảng môn Cơ sở dữ liệu - Chương 4: Ngôn ngữ truy vấn SQL
1CƠ SỞ DỮ LIỆU
Khoa Công nghệ thông tin – Đại học Sài Gòn
NGÔN NGỮ TRUY VẤN SQL
Chương 4
Khoa CNTT – Đại học Sài Gòn 3
Nội dung chi tiết
1. Giới thiệu
2. Định nghĩa dữ liệu 
3. Truy vấn dữ liệu 
4. Cập nhật dữ liệu 
5. Khung nhìn (view)
6. Chỉ mục (index)
Khoa CNTT – Đại học Sài Gòn 4
1. 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 (Structured English Query Language)
– Được ANSI công nhận và phát triển thành chuẩn
• SQL-86
• SQL-92
• SQL-99
2Khoa CNTT – Đại học Sài Gòn 5
1. Giới thiệu
SQL gồm
– Định nghĩa dữ liệu (DDL)
– Thao tác dữ liệu (DML)
– Định nghĩa khung nhìn
– Ràng buộc toàn vẹn 
– 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ộ
Lý thuyết : Chuẩn SQL-92
Ví dụ : SQL Server 
Khoa CNTT – Đại học Sài Gòn 6
1. Giới thiệu
SQL thao tác trên mô hình vật lý của Cơ sở dữ liệu.
Mô hình vật lý có cấu trúc tương tự với mô hình dữ liệu quan
hệ, trong đó gồm các khái niệm:
– Bảng ~ quan hệ
– Cột ~ thuộc tính
– Dòng ~ bộ
Với mô hình vật lý, ta cần xác định cụ thể kiểu dữ liệu của
từng thuộc tính.
Khoa CNTT – Đại học Sài Gòn 7
Giới thiệu Microsoft SQL Server
Là chương trình giúp tạo, quản lý và truy xuất cơ sở dữ liệu do
Microsoft phát hành.
Sử dụng mô hình CSDL quan hệ.
Ngôn ngữ truy xuất dữ liệu là ANSI-SQL.
Không phân biệt chữ hoa với chữ thường.
Có kèm tài liệu tham khảo với tên gọi Books Online:
– Hỗ trợ xem thông tin các lệnh.
– Tìm kiếm từ khóa.
– Đầy đủ cấu trúc các lệnh SQL.
– Có ví dụ tham khảo.
Khoa CNTT – Đại học Sài Gòn 8
Giao diện đăng nhập
3Khoa CNTT – Đại học Sài Gòn 9
Giao diện làm việc
Khoa CNTT – Đại học Sài Gòn 10
Giao diện truy vấn
Khoa CNTT – Đại học Sài Gòn 11
Các thao tác cơ bản
Muốn chạy một lệnh nào đó:
– Chọn lệnh cần chạy.
– Nhấn F5 hoặc nhấn nút
Execute.
– Nếu chạy thành công:
Xem các đối tượng đang quản lý
trong hệ thống:
– Mở rộng các đối tượng tương
ứng bên cửa sổ Object Explorer
– Có thể click phải chuột để hiện
menu ngữ cảnh.
Khoa CNTT – Đại học Sài Gòn 12
Lệnh GO
Lệnh GO (GO command) không phải là một từ khóa của
SQL (SQL statement).
GO là một lệnh được nhận bởi trình biên dịch MS SQL code
editor.
GO đánh dấu kết thúc 1 tập lệnh SQL (batch)
Mỗi tập lệnh SQL sẽ được thực thi đồng thời, nếu xảy ra lỗi
ở bất kì lệnh nào sẽ hủy bỏ toàn bộ lệnh của tập lệnh đó.
4Khoa CNTT – Đại học Sài Gòn 13
Lệnh GO
Phân biệt: 
drop database test
create database test
use test
drop database test
GO
create database test
GO
use test
GO
Khoa CNTT – Đại học Sài Gòn 14
2. Định nghĩa dữ liệu
Là ngôn ngữ mô tả (DDL)
– Tạo CSDL
– 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
– 
Khoa CNTT – Đại học Sài Gòn 15
a. 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)
Khoa CNTT – Đại học Sài Gòn 16
a. Kiểu dữ liệu
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ờ
5Khoa CNTT – Đại học Sài Gòn 17
b. Tạo CSDL
Mỗi CSDL (trong MS SQL Server) có tên duy nhất.
Mỗi CSDL gồm 2 tập tin vật lý:
– Tập tin .MDF: lưu trữ nội dung CSDL
– Tập tin .LDF: lưu trữ log
Sau khi chạy, đọc thông báo thành công hay thất bại trong
cửa sổ Message.
Dựa vào thông báo lỗi để biết được nguyên nhân lỗi.
Sau khi chạy lệnh tạo CSDL, nhớ refresh Database.
Khoa CNTT – Đại học Sài Gòn 18
b. Tạo CSDL
CREATE DATABASE database_name
[ 
ON 
[ PRIMARY ] [ [ ,...n ] 
[ , [ ,...n ] ] 
[ LOG ON { [ ,...n ] } ] 
] 
[ COLLATE collation_name ] 
[ WITH ] 
] 
[;] 
Khoa CNTT – Đại học Sài Gòn 19
b. Tạo CSDL
 ::= 
{
(
NAME = logical_file_name ,
FILENAME = 'os_file_name' 
[ , SIZE = size [ KB | MB | GB | TB ] ] 
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | 
UNLIMITED } ] 
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB 
| % ] ]
) [ ,...n ]
}
Khoa CNTT – Đại học Sài Gòn 20
b. Tạo CSDL
Tạo CSDL đơn giản không tham số:
Tạo CSDL chỉ định đường dẫn nơi chứa CSDL:
CREATE DATABASE TEST
CREATE DATABASE QLNV
ON (
NAME = 'QLNV_Data',
FILENAME = 'D:\QLNV_Data.mdf',
SIZE = 10MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 5MB)
LOG ON (
NAME = 'QLNV_Log',
FILENAME = 'D:\QLNV_Log.ldf',
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 2MB)
6Khoa CNTT – Đại học Sài Gòn 21
c. Chỉnh sửa CSDL
Lệnh chỉnh sửa chung thường là ALTER + Loại + Tên đối
tượng:
Ví dụ:
ALTER DATABASE database_name 
{
| 
| 
| MODIFY NAME = new_database_name 
| COLLATE collation_name
}
[;]
ALTER DATABASE AdventureWorks
MODIFY FILE
( NAME = Test1dat2,
FILENAME = N'c:\t1dat2.ndf‘
);
Khoa CNTT – Đại học Sài Gòn 22
d. Xóa CSDL
Lệnh xóa chung thường là DROP + Loại + Tên đối tượng
Ví dụ:
DROP DATABASE 
DROP DATABASE test
Khoa CNTT – Đại học Sài Gòn 23
e. 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 
(
 [],
 [],
[]
)
Khoa CNTT – Đại học Sài Gòn 24
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
)
7Khoa CNTT – Đại học Sài Gòn 25
e. Lệnh tạo bảng
– NOT NULL
– NULL
– UNIQUE (Khóa chỉ định)
– DEFAULT
– PRIMARY KEY
– FOREIGN KEY / REFERENCES
– CHECK
Đặt tên cho RBTV
CONSTRAINT 
Khoa CNTT – Đại học Sài Gòn 26
Ví dụ - Tạo bảng có kèm 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
)
Khoa CNTT – Đại học Sài Gòn 27
Ví dụ - Tạo bảng có kèm 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)
)
Khoa CNTT – Đại học Sài Gòn 28
Ví dụ - RBTV có đặt tên
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
)
8Khoa CNTT – Đại học Sài Gòn 29
Ví dụ - RBTV có đặt tên
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)
)
Khoa CNTT – Đại học Sài Gòn 30
f. Lệnh sửa bảng
Được dùng để 
– Thay đổi cấu trúc bảng 
– Thay đổi RBTV
Thêm cột
Xóa cột
Mở rộng cột
ALTER TABLE ADD 
 []
ALTER TABLE DROP COLUMN 
ALTER TABLE ALTER COLUMN 
Khoa CNTT – Đại học Sài Gòn 31
f. Lệnh sửa bảng
Thêm RBTV
Xóa RBTV
ALTER TABLE ADD
CONSTRAINT ,
CONSTRAINT ,
ALTER TABLE DROP 
Khoa CNTT – Đại học Sài Gòn 32
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)
9Khoa CNTT – Đại học Sài Gòn 33
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)
Khoa CNTT – Đại học Sài Gòn 34
Ví dụ - Thay đổi RBTV khóa ngoại
CREATE TABLE NHANVIEN
(
MANV VARCHAR(20) PRIMARY KEY,
HOTEN NVARCHAR(50)
)
ALTER TABLE PHONGBAN
ADD TRGPHG VARCHAR(20)
ALTER TABLE PHONGBAN
ADD CONSTRAINT PB_TRGPHG_FK FOREIGN KEY
(TRGPHG) REFERENCES NHANVIEN(MANV) ON DELETE CASCADE
Khoa CNTT – Đại học Sài Gòn 35
g. 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
Ví dụ
DROP TABLE 
DROP TABLE NHANVIEN
DROP TABLE PHONGBAN
DROP TABLE PHANCONG
Khoa CNTT – Đại học Sài Gòn 36
 Trình tự xóa bảng như sau:
1. ALTER TABLE PHONGBAN DROP COLUMN TRPHG
Hay ALTER TABLE PHONGBANDROP fk_PHONGBAN
2. DROP TABLE NHANVIEN
3. DROP TABLE PHONGBAN
g. Lệnh xóa bảng
NHANVIEN
PHONGBAN
TRPHGTENPHG MAPHG NG_NHANCHUC
TENNVHONV TENLOT MANV NGSINH DCHI PHAI LUONG MA_NQL PHG
1
2
3
10
Khoa CNTT – Đại học Sài Gòn 37
k. 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
Ví dụ
CREATE DOMAIN AS 
CREATE DOMAIN Kieu_Ten AS VARCHAR(30)
Khoa CNTT – Đại học Sài Gòn 38
3. 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
– Cho phép 1 bảng có nhiều dòng trùng nhau
Phép toán ĐSQH Một số bổ sung 
Khoa CNTT – Đại học Sài Gòn 39
a. Truy vấn cơ bản
Gồm 3 mệnh đề
– 
• 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
SELECT 
FROM 
WHERE 
Khoa CNTT – Đại học Sài Gòn 40
a. Truy vấn cơ bản 
SQL và ĐSQH
SELECT 
FROM 
WHERE 

SELECT L
FROM R
WHERE C
 L (C (R))
11
Khoa CNTT – Đại học Sài Gòn 41
Ví dụ
SELECT *
FROM NHANVIEN
WHERE PHG=5
AND PHAI='Nam'
Lấy tất cả các cột 
của quan hệ kết quả
PHG=5PHAI=‘Nam’ (NHANVIEN)
TENNVHONV NGSINH DCHI PHAI LUONG PHG
TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5
HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
Khoa CNTT – Đại học Sài Gòn 42
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))
TENNVHONV
TungNguyen
HungNguyen
TENLOT
Thanh
Manh
333445555
987987987
MANV
Khoa CNTT – Đại học Sài Gòn 43
Mệnh đề SELECT
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( MANV,HONV,TENLOT,TENNV(PHG=5PHAI=‘Nam’(NHANVIEN)))
TENHO
TungNguyen
HungNguyen
TEN LOT
Thanh
Manh
333445555
987987987
MANV
Tên bí danh
Khoa CNTT – Đại học Sài Gòn 44
Mệnh đề SELECT 
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
333445555
987987987
MANV
Mở rộng
12
Khoa CNTT – Đại học Sài Gòn 45
Mệnh đề SELECT
SELECT MANV, LUONG*1.1 AS ‘LUONG10%’
FROM NHANVIEN
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
Khoa CNTT – Đại học Sài Gòn 46
Mệnh đề SELECT
SELECT LUONG
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
Loại bỏ các dòng trùng nhau
- Tốn chi phí
- Người dùng muốn thấy
LUONG
30000
25000
25000
38000
38
DISTINCT LUONG
Khoa CNTT – Đại học Sài Gòn 47
Ví dụ
Cho biết MANV và TENNV làm việc ở phòng ‘Nghien cuu’
SELECT
FROM
WHERE
R1  NHANVIEN PHG=MAPHG PHONGBAN
KQ  MANV, TENNV (TENPHG=‘Nghien cuu’(R1))
MANV, TENNV 
NHANVIEN, PHONGBAN
TENPHG=‘Nghien cuu’ PHG=MAPHGAND
Khoa CNTT – Đại học Sài Gòn 48
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
13
Khoa CNTT – Đại học Sài Gòn 49
Mệnh đề WHERE
SELECT MANV, TENNV 
FROM NHANVIEN, PHONGBAN
WHERE (TENPHG=‘Nghien cuu’ OR TENPHG=‘Quan ly’) AND 
PHG=MAPHG
Độ ưu tiên
Khoa CNTT – Đại học Sài Gòn 50
Mệnh đề WHERE 
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE LUONG>20000 AND LUONG<30000
BETWEEN
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000
Khoa CNTT – Đại học Sài Gòn 51
Mệnh đề WHERE 
NOT BETWEEN
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE LUONG NOT BETWEEN 20000 AND 30000
Khoa CNTT – Đại học Sài Gòn 52
Mệnh đề WHERE 
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen _ _ _ _’
LIKE
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen %’
Chuỗi bất kỳ
Ký tự bất kỳ
14
Khoa CNTT – Đại học Sài Gòn 53
Mệnh đề WHERE
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen’
NOT LIKE
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE HONV NOT NOT LIKE ‘Nguyen’
Khoa CNTT – Đại học Sài Gòn 54
Mệnh đề WHERE 
Escape
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’
‘Nguyen_’
Khoa CNTT – Đại học Sài Gòn 55
Mệnh đề WHERE 
Ngày giờ
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’
YYYY-MM-DD
MM/DD/YYYY
‘1955-12-08’
’12/08/1955’
‘December 8, 1955’
HH:MI:SS’17:30:00’
’05:30 PM’
‘1955-12-08 17:30:00’
Khoa CNTT – Đại học Sài Gòn 56
Mệnh đề WHERE
– 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
NULL
15
Khoa CNTT – Đại học Sài Gòn 57
Mệnh đề WHERE
NULL
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE MA_NQL IS NULL
SELECT MANV, TENNV 
FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
Khoa CNTT – Đại học Sài Gòn 58
Mệnh đề WHERE
Khi không có mệnh đề WHERE Tương đương với WHERE
(mệnh đề luôn đúng)
SELECT *
FROM PHONGBAN 
WHERE 1=1
Khoa CNTT – Đại học Sài Gòn 59
Mệnh đề WHERE
WHERE TRUE
SELECT MANV, MAPHG
FROM NHANVIEN, PHONGBAN
MAPHG
1
4
333445555
333445555
MANV
5
1987987987
987987987
333445555
4
5987987987
Khoa CNTT – Đại học Sài Gòn 60
Mệnh đề FROM
Điều kiện kết của phép kết cũng được thể hiện thông qua
mệnh đề WHERE còn các quan hệ trong phép kết được thể
hiện trong mệnh đề FROM.
Ví dụ: Với mỗi phòng ban hãy cho biết các địa điểm của phòng
ban đó
PHONGBAN(TENPHG, MAPHG, TRPHG, NG_NHANCHUC)
DIADIEMPHG(MAPHG, DIADIEM)
KQ  PHONGBAN MAPHG=MAPHG DIADIEMPHG
SELECT *
FROM PHONGBAN, DIADIEMPHG
WHERE PHONGBAN.MAPHG=DIADIEMPHG.MAPHG
16
Khoa CNTT – Đại học Sài Gòn 61
Mệnh đề FROM
SELECT TENPHG, DI ... 
FROM NHANVIEN NV2
WHERE NV2PHG=4 
AND NV1.LUONG>NV2.LUONG)
Khoa CNTT – Đại học Sài Gòn 88
Ví dụ 10
Tìm những trưởng phòng có tối thiểu một thân nhân
SELECT *
FROM NHANVIEN 
WHERE EXISTS (
SELECT *
FROM THANNHAN 
WHERE
MANV=MA_NVIEN )
AND EXISTS (
SELECT *
FROM PHONGBAN
WHERE MANV=TRPHG )
23
Khoa CNTT – Đại học Sài Gòn 89
IN và EXISTS
IN
– IN 
– Thuộc tính ở mệnh đề SELECT của truy vấn con phải có
cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE của
truy vấn cha
EXISTS
– Không cần có thuộc tính, hằng số hay biểu thức nào khác
đứng trước
– Không nhất thiết liệt kê tên thuộc tính ở mệnh đề SELECT
của truy vấn con
– Những câu truy vấn có = ANY hay IN đều có thể chuyển
thành câu truy vấn có EXISTS
Khoa CNTT – Đại học Sài Gòn 90
Phép chia trong SQL
RS là tập các giá trị ai trong R sao cho không có giá trị bi
nào trong S làm cho bộ (ai, bi) không tồn tại trong R
A B

a
a
 a
 a
 a
 a
 a
 a
C D

a
b
 a
 a
 b
 a
 b
 b
E
1
3
1
1
1
1
1
1
R D E
a
S
b
1
1
A B C
 a 
 a 
RS
aibi
Khoa CNTT – Đại học Sài Gòn 91
Phép chia trong SQL
Sử dụng NOT EXISTS để biểu diễn
SELECT R1.A, R1.B, R1.C
FROM R R1
WHERE NOT EXISTS (
SELECT *
FROM S
WHERE NOT EXISTS (
SELECT * 
FROM R R2
WHERE R2.D=S.D AND R2.E=S.E 
AND R1.A=R2.A AND R1.B=R2.B AND
R1.C=R2.C ))
Khoa CNTT – Đại học Sài Gòn 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
– Tìm tên các nhân viên mà không có đề án nào là không được 
phân công làm
– Tập bị chia: PHANCONG(MA_NVIEN, SODA)
– Tập chia: DEAN(MADA)
– Tập kết quả: KQ(MA_NVIEN)
– Kết KQ với NHANVIEN để lấy ra TENNV
24
Khoa CNTT – Đại học Sài Gòn 93
Ví dụ 12
SELECT NV.TENNV
FROM NHANVIEN NV, PHANCONG PC1
WHERE NV.MANV=PC1.MA_NVIEN
AND NOT EXISTS (
SELECT *
FROM DEAN DA
WHERE NOT EXISTS (
SELECT * 
FROM PHANCONG PC2
WHERE PC2.SODA=DA.MADA
AND PC1.MA_NVIEN=PC2.MA_NVIEN ))
Khoa CNTT – Đại học Sài Gòn 94
c. Hàm kết hợp
COUNT
– COUNT(*) đếm số dòng
– COUNT() đếm số giá trị khác NULL của 
thuộc tính
– COUNT(DISTINCT ) đếm số giá trị khác 
nhau và khác NULL của thuộc tính
MIN
MAX
SUM
AVG
Các hàm kết hợp được đặt ở mệnh đề SELECT
Khoa CNTT – Đại học Sài Gòn 95
Ví dụ 13
Tìm tổng lương, lương cao nhất, lương thấp nhất và lương
trung bình của các nhân viên
SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG), 
AVG(LUONG)
FROM NHANVIEN
Khoa CNTT – Đại học Sài Gòn 96
Ví dụ 14
Cho biết số lượng nhân viên của phòng ‘Nghien cuu’ 
SELECT COUNT(*) AS SL_NV
FROM NHANVIEN, PHONGBAN
WHERE PHG=MAPHG AND TENPHG=‘Nghien cuu’
25
Khoa CNTT – Đại học Sài Gòn 97
Ví dụ 15
Cho biết số lượng nhân viên của từng phòng ban
SL_NV
5
4
3
3
PHG
1 1
TENNVHONV NGSINH DCHI PHAI LUONG PHG
TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5
HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5
333445555
987987987
MANV MA_NQL
888665555
333445555
TENLOT
Thanh
Manh
TamTran 07/31/1972 543 MTL Q1 Nu 25000 5
HangBui 07/19/1968 33 NTH Q1 Nu 38000 4
453453453
999887777
333445555
987654321
Thanh
Ngoc
NhuLe 07620/1951 219 TD Q3 Nu 43000 4987654321 888665555Quynh
QuangTran 04/08/1969 980 LHP Q5 Nam 25000 4
VinhPham 11/10/1945 450 TV HN Nam 55000 1
987987987
888665555
987654321
NULL
Hong
Van
Khoa CNTT – Đại học Sài Gòn 98
d. Gom nhóm
Cú pháp
SELECT 
FROM 
WHERE 
GROUP BY 
Khoa CNTT – Đại học Sài Gòn 9999 Khoa CNTT – Đại học Sài Gòn 100
Ví dụ 16 
Cho biết số lượng nhân viên của từng phòng ban
SELECT PHONG, COUNT(*) AS SL_NV
FROM NHANVIEN
GROUP BY PHONG
SELECT TENPHG, COUNT(*) AS SL_NV
FROM NHANVIEN, PHONGBAN
WHERE PHONG=MAPHG
GROUP BY TENPHG
26
Khoa CNTT – Đại học Sài Gòn 101
Ví dụ 17
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
SODA THOIGIAN
1 32.5
2 7.5
123456789
123456789
MA_NVIEN
2 10.0
3 10.0
333445555
333445555
10 10.0333445555
20 20.0
10 35.0
888665555
987987987
30 5.0987987987
30 20.0987654321
20 15.0987654321
1 20.0453453453
2 20.0453453453
SELECT MA_NVIEN, COUNT(*) AS SL_DA, 
SUM(THOIGIAN) AS TONG_TG
FROM PHANCONG
GROUP BY MA_NVIEN
SELECT HONV, TENNV, COUNT(*) AS SL_DA, 
SUM(THOIGIAN) AS TONG_TG
FROM PHANCONG, NHANVIEN
WHERE MA_NVIEN=MANV
GROUP BY MA_NVIEN, HONV, TENNV
Khoa CNTT – Đại học Sài Gòn 102
Ví dụ 18
Cho biết những nhân viên tham gia từ 2 đề án trở 
lên
SODA THOIGIAN
1 32.5
2 7.5
123456789
123456789
MA_NVIEN
2 10.0
3 10.0
333445555
333445555
10 10.0333445555
20 20.0
10 35.0
888665555
987987987
30 5.0987987987
30 20.0987654321
20 15.0987654321
1 20.0453453453
2 20.0453453453
bị loại ra
Khoa CNTT – Đại học Sài Gòn 103
e. Điều kiện trên nhóm
Cú pháp
SELECT 
FROM 
WHERE 
GROUP BY 
HAVING 
Khoa CNTT – Đại học Sài Gòn 104
Ví dụ 18
Cho biết những nhân viên tham gia từ 2 đề án trở lên
SELECT MA_NVIEN
FROM PHANCONG
GROUP BY MA_NVIEN
HAVING COUNT(*) >= 2
27
Khoa CNTT – Đại học Sài Gòn 105
Ví dụ 19
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
SELECT PHONG, AVG(LUONG) AS
LUONG_TB
FROM NHANVIEN
GROUP BY PHONG
HAVING AVG(LUONG) > 20000
SELECT TENPHG, AVG(LUONG) AS
LUONG_TB
FROM NHANVIEN, PHONGBAN
WHERE PHONG=MAPHG
GROUP BY TENPHG
HAVING AVG(LUONG) > 20000
Khoa CNTT – Đại học Sài Gòn 106
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 
Khoa CNTT – Đại học Sài Gòn 107
Nhận xét
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
Khoa CNTT – Đại học Sài Gòn 108
Ví dụ 20
Tìm những phòng ban có lương trung bình cao nhất
SELECT PHG, AVG(LUONG) AS
LUONG_TB
FROM NHANVIEN
GROUP BY PHG
HAVING MAX(AVG(LUONG))
LUONG_TB
FR M NHANVIEN
G UP BY PHG
HAVING AVG(LUONG) >= ALL (
SELECT AVG(LUONG)
FROM NHANVIEN
GROUP BY PHG)
28
Khoa CNTT – Đại học Sài Gòn 109
Ví dụ 21
Tìm tên các nhân viên được phân công làm tất cả
các đồ án
SELECT MANV, TENVN
FROM NHANVIEN, PHANCONG
WHERE MANV=MA_NVIEN
GROUP BY MANV, TENNV
HAVING COUNT(*) = (
SELECT COUNT(*)
FROM DEAN )
Khoa CNTT – Đại học Sài Gòn 110
f. 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
Khoa CNTT – Đại học Sài Gòn 111
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 
Khoa CNTT – Đại học Sài Gòn 112
Ví dụ 22
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 hơn 20000
SELECT PHG, AVG(LUONG) AS LUONG_TB
FROM NHANVIEN
GROUP BY PHG
HAVING AVG(LUONG) > 20000
SELECT PHG, TENPHG, AVG(LUONG) AS LUONG_TB
FROM NHANVIEN, PHONGBAN
WHERE PHG=MAPHG
GROUP BY PHG, TENPHG
HAVING AVG(LUONG) > 20000
29
Khoa CNTT – Đại học Sài Gòn 113
Ví dụ 22
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 hơn 20000
SELECT TENPHG, TEMP.LUONG_TB
FROM PHONGBAN, (SELECT PHG, AVG(LUONG) AS LUONG_TB
FROM NHANVIEN
GROUP BY PHG
HAVING AVG(LUONG)> 20000 ) AS TEMP
WHERE MAPHG=TEMP.PHG
Khoa CNTT – Đại học Sài Gòn 114
Điều kiện kết ở mệnh đề FROM
Kết bằng
Kết ngoài
SELECT 
FROM R1 [INNER] JOIN R2 ON 
WHERE 
SELECT 
FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON 
WHERE 
Khoa CNTT – Đại học Sài Gòn 115
Ví dụ 23
SELECT MANV, TENNV 
FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND 
PHONG=MAPHG
SELECT MANV, TENNV 
FROM NHANVIEN INNER JOIN PHONGBAN ON
PHONG=MAPHG
WHERE TENPHG=‘Nghien cuu’
115
Tìm mã và tên các nhân viên làm việc tại phòng ‘Nghien
cuu’
Khoa CNTT – Đại học Sài Gòn 116
Ví dụ 24
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ó
SELECT NV.TENNV, NV.TENDA
FROM (PHANCONG PC JOIN DEAN DA ON SODA=MADA)
LEFT JOIN NHANVIEN NV ON PC.MA_NVIEN=NV.MANV
NHANVIENPHANCONG join DEAN
MA_NVIEN=MANV
mở rộng
30
Khoa CNTT – Đại học Sài Gòn 117
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
Khoa CNTT – Đại học Sài Gòn 118
Ví dụ 25
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)
SELECT HONV, TENNV
FROM NHANVIEN
WHERE YEAR(GETDATE()) – YEAR(NGSINH) >= ( CASE PHAI
WHEN 'Nam' THEN 60
WHEN 'Nu' THEN 55
END )
Khoa CNTT – Đại học Sài Gòn 119
Ví dụ 26
Cho biết họ tên các nhân viên và năm về hưu
SELECT HONV, TENNV
(CASE PHAI 
WHEN 'Nam' THEN YEAR(NGSINH) + 60
WHEN 'Nu‘ THEN YEAR(NGSINH) + 55
END ) AS NAMVEHUU
FROM NHANVIEN
Khoa CNTT – Đại học Sài Gòn 120
Kết luận
SELECT 
FROM 
[WHERE ]
[GROUP BY ]
[HAVING ]
[ORDER BY ]
31
Khoa CNTT – Đại học Sài Gòn 121
4. Cập nhật dữ liệu
Cập nhật dữ liệu gồm các lệnh: 
– Thêm (insert)
– Xóa (delete)
– Sửa (update)
Khoa CNTT – Đại học Sài Gòn 122
a. 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ú pháp (thêm 1 dòng)
INSERT INTO ()
VALUES ()
Khoa CNTT – Đại học Sài Gòn 123
Ví dụ
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV)
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’)
INSERT INTO NHANVIEN
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, ’12/30/1952’, ’98 HV’, ‘Nam’, 
‘37000’, 4)
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV, DCHI)
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL)
Khoa CNTT – Đại học Sài Gòn 124
a. Lệnh INSERT 
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ị
32
Khoa CNTT – Đại học Sài Gòn 125
a. Lệnh INSERT
Cú pháp (thêm nhiều dòng)
INSERT INTO ()
Khoa CNTT – Đại học Sài Gòn 126
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
Khoa CNTT – Đại học Sài Gòn 127
b. Lệnh DELETE 
Dùng để xóa các dòng của bảng
Cú pháp
DELETE FROM 
[WHERE ]
Khoa CNTT – Đại học Sài Gòn 128
Ví dụ
DELETE FROM NHANVIEN
WHERE HONV=‘Tran’
DELETE FROM NHANVIEN
WHERE MANV=‘345345345’
DELETE FROM NHANVIEN
Xóa đi những nhân viên ở phòng ‘Nghien cuu’
DELETE FROM NHANVIEN
WHERE PHG IN (
SELECT MAPHG
FROM PHONGBAN
WHERE TENPHG=‘Nghien cuu’)
33
Khoa CNTT – Đại học Sài Gòn 129
b. Lệnh DELETE
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
• Đặt NULL cho những giá trị tham chiếu
Khoa CNTT – Đại học Sài Gòn 130
c. 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 ]
Khoa CNTT – Đại học Sài Gòn 131
Ví dụ
UPDATE NHANVIEN
SET NGSINH=’08/12/1965’
WHERE MANV=‘333445555’
131
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
Khoa CNTT – Đại học Sài Gòn 132
c. 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
34
Khoa CNTT – Đại học Sài Gòn 133
5. 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
Khoa CNTT – Đại học Sài Gòn 134
5. Khung nhìn
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
Khoa CNTT – Đại học Sài Gòn 135
Định nghĩa khung nhìn
Cú pháp
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
CREATE VIEW AS 
DROP VIEW 
Khoa CNTT – Đại học Sài Gòn 136
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
35
Khoa CNTT – Đại học Sài Gòn 137
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))
Khoa CNTT – Đại học Sài Gòn 138
Truy vấn trên khung nhìn
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
Khoa CNTT – Đại học Sài Gòn 139
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
Khoa CNTT – Đại học Sài Gòn 140
Cập nhật trên khung nhìn
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’
36
Khoa CNTT – Đại học Sài Gòn 141
6. 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
WHERE PHG=5 AND PHAI=‘Nu’
Bảng NHANVIEN có 10.000 bộ
Có 200 nhân viên làm việc cho phòng 5
Đọc 10.000 bộ
Đọc 200 bộ
Đọc 70 bộ
Khoa CNTT – Đại học Sài Gòn 142
6. Chỉ mục
Cú pháp
Ví dụ
CREATE INDEX ON ()
CREATE INDEX PHG_IND ON NHANVIEN(PHG)
CREATE INDEX PHG_PHAI_IND ON NHANVIEN(PHG, PHAI)
DROP INDEX 
Khoa CNTT – Đại học Sài Gòn 143
6. Chỉ mục
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ý???
Thank you!

File đính kèm:

  • pdfbai_giang_mon_co_so_du_lieu_chuong_4_ngon_ngu_truy_van_sql.pdf