1
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Chương 8
Ngôn ngữ SQL
2
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Nội dung
Định nghĩa các thuật ngữ.
Các ưu điểm của ngôn ngữ SQL.
Định nghĩa CSDL dùng ngôn ngữ định
nghĩa dữ liệu SQL.
Viết các truy vấn (query) dùng SQL.
Các loại phép kết.
Các loại truy vấn con (subquery).
Thiết lập tính toàn vẹn tham chiếu dùng
SQL.
Các chương trình kích hoạt (trigger) và các
thủ tục chứa (stored procedure)
Các khung nhìn (view)
3
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Giới thiệu SQL
Ngôn ngữ truy vấn có cấu trúc (SQL -
Structured Query Language) là một ngôn
ngữ chuẩn được dùng để tạo lập và truy
vấn các cơ sở dữ liệu quan hệ.
SQL là một ngôn ngữ chuẩn cho các hệ
quản trị CSDL quan hệ (RDBMS -
Relational DBMS).
4
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Các đặc điểm của ngôn ngữ SQL
Ngôn ngữ SQL là một ngôn ngữ tựa tiếng
Anh (English-like language), sử dụng các
từ như select, insert, delete trong tập lệnh.
Ngôn ngữ SQL là một ngôn ngữ phi thủ
tục (nonprocedural language).
f Chỉ ra các thông tin gì cần thiết (what).
f Không cần phải chỉ ra cách thực hiện như
thế nào (how) để có được các thông tin này.
SQL xử lý các tập hợp mẩu tin (bảng) hơn
là mỗi lần một mẩu tin đơnlẻ.
5
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Các đặc điểm của ngôn ngữ SQL
SQL cung cấp nhiều lệnh cho nhiều công
việc khác nhau:
f Truy vấn dữ liệu.
f Thêm vào, cập nhật và xóa bỏ các hàng của
bảng.
f Tạo lập, thay đổi và xóa bỏ các đối tượng
CSDL.
f Điều khiển truy xuất cơ sở dữ liệu và các đối
tượng CSDL.
f Bảo đảm tính nhất quán của CSDL.
6
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Ngôn ngữ SQL
Ngôn ngữ định nghĩa dữ liệu
f DDL - Data Definition Language
f Các lệnh dùng để định nghĩa CSDL: tạo lập
(create), thay đổi(alter) và hủy bỏ (drop) các
đối tượng dữ liệu, thiết lập các ràng buộc.
Ngôn ngữ thao tác dữ liệu
f DML - Data Manipulation Language
f Các lệnh dùng để bảo trì và truy vấn CSDL:
thêm (insert), sửa (update), xóa (delete) dữ
liệu của bảng, truy vấn (select).
7
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Môi trường SQL
Ngôn ngữ điều khiển dữ liệu
f DCL - Data Control Language
f Các lệnh dùng để điềukhiển CSDL: quản trị
các quyền (grant, revoke) và ghi nhận
(committing) dữ liệu.
8
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Quá trình phát triển cơ sở dữ liệu
DDL, DML, DCL và quá trình phát triển CSDL.
9
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Định nghĩa cơ sở dữ liệu
Các bước tạo một bảng
f Bước 1. Xác định kiểu dữ liệu của các cột.
f Bước 2. Xác định các cột có thể hoặc không
thể có giá trị rỗng (null value).
f Bước 3. Xác định các cột phải có các giá trị
duy nhất (các khóa dự tuyển).
f Bước 4. Xác định khóa chính – khóa ngoại.
f Bước 5. Xác định các giá trị mặc nhiên.
f Bước 6. Xác định các ràng buộc trên các cột
(mô tả miền trị).
f Bước 7. Tạo bảng và các chỉ mục của bảng.
10
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Định nghĩa cơ sở dữ liệu
CREATE TABLE <table name> [<list of columns>]
AS SELECT statement;
Cú pháp của lệnh CREATE TABLE.
11
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Định nghĩa cơ sở dữ liệu
12
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Định nghĩa cơ sở dữ liệu
13
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Tính toàn vẹn dữ liệu
Tính toàn vẹn tham chiếu (referential
integrity) là ràng buộc để bảo đảm các giá
trị của khóa ngoại phải tương xứng với
các giá trị của khóa chính của bảng liên
quan trong mối liên kết một – nhiều.
Hạn chế
f Xóa bỏ các hàng của bảng có khóa chính.
f Cập nhật các hàng của bảng có khóa chính.
f Thêm các hàng vào bảng có khóa ngoại.
14
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Tính toàn vẹn dữ liệu
Relational
integrity is
enforced via the
primary-key to
foreign-key
match
Bảo đảm tính toàn vẹn dữ liệu khi cập nhật.
15
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Thay đổi định nghĩa bảng
Lệnh ALTER TABLE dùng để thay đổi định
nghĩa của một bảng.
Cú pháp của lệnh ALTER TABLE.
ALTER TABLE <table name>
[ADD ⏐ MODIFY ⏐ DROP options]
(<column definition> [<column constraint>])
[ENABLE clause⏐ DISABLE clause];
16
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Thay đổi định nghĩa bảng
Các tùy chọn của lệnh ALTER TABLE
f ADD: Thêm một cột và/hoặc các ràng buộc
vào một bảng.
f MODIFY: Thay đổi định nghĩa của một cột.
f DROP: Hủy bỏ một ràng buộc của một bảng.
17
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Thay đổi định nghĩa bảng
Hạn chế của lệnh ALTER TABLE
f Không thể thay đổi một cột đang chứa các
giá trị NULL thành NOT NULL.
f Không thể thêm một cột mới với ràng buộc
NOT NULL.
f Không thể giảm kích thước hoặc thay đổi
kiểu dữ liệu của một cột, trừ khi cột này
không có chứa dữ liệu.
f Không thể sử dụng tùy chọn MODIFY để định
nghĩa các ràng buộc trên một cột ngoại trừ
NULL/NOT NULL.
18
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Thay đổi định nghĩa bảng
Thêm một cột và/hoặc các ràng buộc vào một bảng:
ALTER TABLE <table name>
ADD (<column definition> [<column constraint>]);
Thêm cột Type vào bảng Customer_T
ALTER TABLE Customer_T
ADD (Type VARCHAR(2));
Thêm ràng buộc của cột Standard_Price của bảng
Product_T
ALTER TABLE Product_T
ADD (CHECK(Standard_Price > 0));
19
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Thay đổi định nghĩa bảng
Thay đổi định nghĩa của một cột:
ALTER TABLE <table name>
MODIFY (<column name> <type> [NULL]);
Thay đổi chiều dài của cột Customer_Name của bảng
Customer_T
ALTER TABLE Customer_T
MODIFY (Customer_Name VARCHAR2(30));
20
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Thay đổi định nghĩa bảng
Hủy bỏ ràng buộc của một bảng:
ALTER TABLE <table name>
DROP
[CONSTRAINT <constraint name>
⏐ PRIMARY KEY
⏐ UNIQUE (<list of columns>)]
[CASCADE];
Hủy bỏ ràng buộc khóa chính của bảng Order_line_T
ALTER TABLE Order_Line_T
DROP CONSTRAINT Order_Line_PK;
Tùy chọn CASCADE hủy bỏ tất cả ràng buộc khóa
ngoại tham chiếu đến bảng Customer_T
ALTER TABLE Customer_T
DROP CONSTRAINT Customer_PK CASCADE;
21
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Thay đổi định nghĩa bảng
Cho phép một ràng buộc có hiệu lực / không có hiệu lực:
ALTER TABLE <table name>
[ENABLE ⏐ DISABLE]
[CONSTRAINT <constraint name>
⏐ PRIMARY KEY
⏐ UNIQUE (<list of columns>)]
[CASCADE];
Làm mất hiệu lực của ràng buộc Customer_PK của
bảng Customer_T
ALTER TABLE Customer_T
DISABLE CONSTRAINT Customer_PK CASCADE;
22
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Hủy bỏ bảng
Lệnh DROP TABLE dùng để hủy bỏ một
bảng trong một lược đồ.
Cú pháp của lệnh DROP TABLE:
DROP TABLE <table name> [CASCADE CONSTRAINTS];
Hủy bỏ bảng Order_Line_T
DROP TABLE Order_Line_T;
23
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Định nghĩa lược đồ
Tạo chỉ mục
f Truy xuất nhanh (ngẫu nhiên / tuần tự) dữ
liệu của bảng cơ sở.
Cú pháp của lệnh CREATE INDEX:
CREATE [UNIQUE] INDEX <index name>
ON <table name> (<list of columns>);
Tạo chỉ mục Name_IDX trên Customer_Name
CREATE INDEX Name_IDX
ON Customer_T (Customer_Name);
24
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Định nghĩa lược đồ
Hủy bỏ chỉ mục
Cú pháp của lệnh DROP INDEX:
DROP INDEX <index name>;
Hủy bỏ chỉ mục Name_IDX
DROP INDEX Name_IDX;
25
Chương 8. Ngôn ngữ SQL
2006
Nguyễn Trung Trực - Khoa CNTT
Lệnh INSERT
Thêm dữ liệu vào một bảng
Cú pháp của lệnh INSERT - Thêm một hàng:
INSERT INTO <table name> [(<list of columns>)]
VALUES (<list of expressions>);
Cú pháp của lệnh INSERT - Thêm nhiều hàng:
INSERT INTO <table name> [(<list of columns>)]
SELECT statement;