1Chương 4:
Ngôn ngữ vấn tin SQL
Ngôn ngữ thao tác dữ liệu
(Data Manipulate Language - DML) 
Ngôn ngữ định nghĩa dữ liệu
(Data Definition Language - DDL)
Đặng Thị Kim Anh
Email: 
[email protected]
(Structured Query Language) 
2Ngôn ngữ truy vấn dữ liệu 
 Ngôn ngữ thủ tục
 Đại số quan hệ
 SQL
 Ngôn ngữ phi thủ tục
 Phép tính quan hệ bộ
 Phép tính quan hệ miền
 QBE
 Sử dụng trong Access, giao diện đồ họa
 Datalog
 Cú pháp như Prolog
Logical 
Schema
3CSDL Quản lý cho thuê đĩa phim 
 Mô hình DL quan hệ trình bày dưới dạng đồ hoạ
4Giới thiệu 
 SQL do IBM đề xuất và đã phát triển
 1974: SEQUEL (Structure English Query Language)
 1976: SEQUEL2 – Data definition, Manipulation, Control
 1983: SQL (DB2)
 1986: Database Language ISO 9075-1987 (DB2.1)
 1989: Added Embedded SQL
 1992: SQL-92, ISO/IEC 9075-1992 (DDL-DML extend)
 1999: SQL-99, Object – Oriented feature
 Hiện nay là ngôn ngữ vấn tin quan hệ được sử dụng trong
nhiều hệ thống CSDL thương mại
5Mô hình dữ liệu trong SQL 
 SQL
 dựa trên phép toán tập hợp và quan hệ
 Kết quả là một quan hệ.
 Mô hình sử dụng
 Bảng là tập các dòng dữ liệu
 Mỗi một dòng trong bảng có cùng số cột và trên cùng các
miền giá trị.
 Cho phép các dòng giống nhau
 Thứ tự các dòng lưu trữ không xác định
 Ngôn ngữ SQL gồm
 Ngôn ngữ định nghĩa dữ liệu – DDL
 Ngôn ngữ thao tác dữ liệu - DML
6Ngôn ngữ định nghĩa dữ liệu 
 Dùng để định nghĩa các lược đồ trong CSDL
 Gồm 3 câu lệnh
 Tạo lược đồ: CREATE
 Xóa lược đồ: DROP
 Thay đổi cấu trúc lược đồ: ALTER
 Được áp dụng để tạo
 Bảng: Table
 Khung nhìn: View
 Miền: Domain
 Tập ký tự: Character set
 …
7CREATE TABLE (1) 
 Tạo cấu trúc bảng cơ sở trong CSDL
 Tạo bảng gồm
 Tên bảng: Table name
 Định nghĩa cột
 Tên cột: Field name
 Kiểu dữ liệu: Data type
 Ràng buộc trên cột: Column constraint
 Giá trị mặc định: Default value
 Ràng buộc trên bảng: Table constraint
8CREATE TABLE (2) 
 Cú pháp
CREATE TABLE Tên bảng (
Tên_cột Kiểu/độ_rộng DEFAULT Giá_trị
[ NULL | NOT NULL]
[ PRIMARY KEY | UNIQUE |
[FOREIGN KEY] REFERENCES Tên_bảng(Tên_cột) ]
[, Tên cột n…], [Ràng buộc bảng] )
 Chú ý
 Giá trị mặc định của cột là NULL
 Ràng buộc trên nhiều cột → Ràng buộc bảng
9CREATE TABLE (3) 
 Một số loại ràng buộc
 NOT NULL: trường không được phép để trống
 PRIMARY KEY: khóa chính ≈ NOT NULL và UNIQUE
 FOREIGN KEY: khóa ngoại, liên kết
 UNIQUE: có giá trị duy nhất
 DEFAULT: giá trị sẽ nhận khi người dùng không nhập vào
trường đó
 CHECK: biểu thức điều kiện mà giá trị nhập vào trường
 đó phải thỏa mãn
 …
10
Ví dụ (1) 
11
Ví dụ (2) 
12
Ví dụ (3)
13
Ví dụ (4)
14
DROP TABLE 
15
ALTER TABLE 
16
Ngôn ngữ thao tác dữ liệu 
17
Câu lệnh truy vấn dữ liệu 
18
Mệnh đề SELECT 
19
Mệnh đề SELECT (tiếp) 
20
Mệnh đề SELECT (tiếp) 
21
Mệnh đề SELECT (tiếp) 
22
Mệnh đề FROM 
23
Nối tự nhiên 
24
INNER JOIN 
25
OUTER JOIN (1) 
26
OUTER JOIN (2) 
27
Mệnh đề WHERE 
28
Mệnh đề WHERE (tiếp) 
29
Mệnh đề WHERE (tiếp) 
30
Mệnh đề WHERE với giá trị Null 
31
Sắp xếp các bộ dữ liệu kết quả 
32
UNION (1) 
33
UNION (2) 
34
Ví dụ (1) 
35
Ví dụ (2) 
36
Hàm gộp nhóm
(Aggregate functions) 
37
Hàm gộp nhóm… (tiếp) 
38
Hàm gộp nhóm… (tiếp) 
39
Mệnh đề GROUP BY 
40
Mệnh đề GROUP BY… (tiếp) 
41
Mệnh đề GROUP BY… (tiếp) 
42
Mệnh đề HAVING 
43
Mệnh đề HAVING …(tiếp) 
44
WHERE hay HAVING ? 
45
Câu lệnh SELECT đầy đủ
46
Định lượng một câu SQL 
47
Câu lệnh lồng nhau 
(lồng trong phần SELECT).1 
48
Câu lệnh lồng nhau 
(lồng trong phần SELECT).2
49
Câu lệnh lồng nhau
(lồng trong phần FROM).1 
50
Câu lệnh lồng nhau
(lồng trong phần FROM).2
51
Câu lệnh lồng nhau
(lồng trong phần WHERE).1 
52
Câu lệnh lồng nhau
(lồng trong phần WHERE).2
53
Câu lệnh lồng nhau
(lồng trong phần WHERE).3
54
Câu lệnh lồng nhau
(lồng trong phần WHERE).4
55
Câu lệnh lồng nhau
(lồng trong phần Having).1
56
Thao tác khác trên dữ liệu 
57
INSERT 
58
INSERT (tiếp) 
59
UPDATE
60
UPDATE(tiếp) 
61
DELETE
62
DELETE…(tiếp)