Giáo trình Cơ sở dữ liệu và giải thuật - Trường Đại học Thủy Lợi

PHẦN  
PHẦN  
II  
CƠ SỞ  
NGÔN NGỮ SQL  
DỮ LIỆU  
♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦  
◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊  
o Giới thiệu  
o Ngôn ngữ định nghĩa dữ liệu  
o Ngôn ngữ quản trị dữ liệu  
o Ngôn ngữ điểu khiển dữ liệu  
o Ngôn ngữ truy vấn dữ liệu  
o Bài tập tổng hợp  
GV. Phạm Thị Hoàng Nhung  
Bộ môn Công nghệ phần mềm  
Đại học Thủy lợi  
MỤC LỤC  
1
2
Chương 1. GIỚI THIỆU................................................................................... 4  
1.1  
1.2  
1.3  
1.4  
Lịch sử phát triển....................................................................................... 4  
Chuẩn SQL................................................................................................ 4  
Đặc điểm của SQL .................................................................................... 4  
Các loại lệnh của SQL............................................................................... 5  
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL) .............................. 6  
2.1  
2.2  
2.2.1  
2.2.2  
2.2.3  
2.3  
2.3.1  
2.3.2  
2.3.3  
2.4  
2.4.1  
Tạo một cơ sở dữ liệu................................................................................ 6  
Tạo một bảng............................................................................................. 6  
Cú pháp.............................................................................................. 6  
Tên của bảng...................................................................................... 6  
Xác định các thuộc tính ..................................................................... 7  
Các loại dữ liệu ......................................................................................... 7  
Các loại dữ liệu được sử dụng trong MS Access............................... 7  
Các loại dữ liệu được sử dụng trong Oracle:..................................... 8  
Các loại dữ liệu sử dụng trong SQL SERVER................................ 12  
Các loại ràng buộc trong bảng dữ liệu . .................................................. 12  
NOT NULL- Không rỗng................................................................ 12  
UNIQUE-Duy nhất.......................................................................... 12  
PRIMARY KEY- Khoá chính......................................................... 13  
FOREIGN KEY-Khoá ngoại........................................................... 13  
CHECK- Ràng buộc kiểm tra giá trị................................................ 14  
DEFAULT-Mặc định....................................................................... 14  
2.4.2  
2.4.3  
2.4.4  
2.4.5  
2.4.6  
2.5  
2.6  
Sửa đổi cấu trúc....................................................................................... 15  
Xoá đối tượng.......................................................................................... 17  
3
Chương 3. CÁC LỆNH QUẢN TRỊ DỮ LIỆU ............................................. 17  
3.1  
Thêm hàng (INSERT)............................................................................. 17  
Xóa hàng (DELETE)............................................................................... 18  
Sửa đổi giá trị của một hàng (UPDATE)................................................ 18  
3.2  
3.3  
4
5
Chương 4. NGÔN NGỮ ĐIỂU KHIỂN (DCL)............................................. 19  
4.1  
4.2  
Lệnh GRANT.......................................................................................... 19  
Lệnh REVOKE ....................................................................................... 20  
Chương 5. TRUY VẤN DỮ LIỆU (SELECT) .............................................. 21  
5.1  
Cú pháp ................................................................................................... 21  
Ví dụ:....................................................................................................... 21  
Đưa ra các cột.......................................................................................... 22  
5.2  
5.3  
5.3.1  
Đưa tất cả các cột............................................................................. 22  
Đưa một số các cột........................................................................... 22  
Tránh các giá trị trùng lặp (DISTINCT).......................................... 23  
Đưa ra các giá trị của các biểu thức................................................. 23  
Sử dụng bí danh cột ......................................................................... 23  
Sắp xếp thứ tự (ORDER BY) .......................................................... 24  
5.3.2  
5.3.3  
5.3.4  
5.3.5  
5.3.6  
5.4  
Đưa ra các hàng....................................................................................... 24  
PHẦN II- NGÔN NGỮ SQL  
2
MỤC LỤC  
5.4.1  
5.4.2  
5.4.3  
Sử dụng các phép so sánh................................................................ 24  
Sử dụng các phép logic: AND, OR, NOT ....................................... 25  
Các toán tử của SQL........................................................................ 25  
5.5  
Sử dụng các hàm ..................................................................................... 27  
5.5.1  
5.5.2  
Hàm số học ...................................................................................... 27  
Một số hàm kiểu số tham khảo khác: .............................................. 27  
Các hàm ký tự.................................................................................. 29  
Các hàm ngày................................................................................... 33  
Các hàm chuyển đổi kiểu................................................................. 35  
Hàm nhóm........................................................................................ 37  
Sử dụng hàm nhóm.......................................................................... 37  
Mệnh đề GROUP BY ...................................................................... 37  
Mệnh đề HAVING........................................................................... 38  
5.5.3  
5.5.4  
5.5.5  
5.5.6  
5.5.7  
5.5.8  
5.5.9  
5.6  
Lấy thông tin từ nhiều bảng .................................................................... 39  
5.6.1  
Nối bằng (Equi-Join) ....................................................................... 39  
Bí danh bảng.................................................................................... 40  
Nối không bằng (Non Equi-Join) .................................................... 40  
Nối bảng với chính nó...................................................................... 41  
Thực hiện kết nối thông qua từ khóa Join ....................................... 41  
5.6.2  
5.6.3  
5.6.4  
5.6.5  
5.7  
5.8  
Thực hiện các phép toán trên tập hợp ..................................................... 43  
Các câu hỏi lồng nhau............................................................................. 44  
5.8.1  
Lệnh SELECT bên trong cho kết quả là 1 hàng.............................. 44  
Lệnh SELECT bên trong cho kết quả là nhiều hàng ....................... 45  
Mệnh đề HAVING trong SELECT lồng nhau. ............................... 48  
Mệnh đề ORDER BY trong SELECT lồng nhau............................ 49  
5.8.2  
5.8.3  
5.8.4  
5.9  
Các lệnh lồng nhau liên kết..................................................................... 49  
6
THỰC HÀNH TỔNG HỢP ........................................................................... 51  
6.1  
Hướng dẫn thực hành.............................................................................. 51  
Bài số 1.................................................................................................... 52  
Bài số 2.................................................................................................... 54  
Bài số 3.................................................................................................... 58  
6.2  
6.3  
6.4  
PHẦN II- NGÔN NGỮ SQL  
3
Chương 1. GIỚI THIỆU  
1 Chương 1. GIỚI THIỆU  
1.1 Lịch sử phát triển  
SQL (Structured Query Language, đọc là "sequel") là tập lệnh truy xuất  
CSDL quan hệ. Ngôn ngữ SQL được IBM sử dụng đầu tiên trong hệ quản trị  
CSDL System R vào giữa những năm 70, hệ ngôn ngữ SQL đầu tiên (SEQUEL2)  
được IBM công bố vào tháng 11 năm 1976. Năm 1979, tập đoàn ORACLE giới  
thiệu thương phẩm đầu tiên của SQL, SQL cũng được cài đặt trong các hệ quản trị  
CSDL như DB2 của IBM và SQL/DS.  
Ngày nay, SQL được sử dụng rộng rãi và đuợc xem là ngôn ngữ chuẩn để  
truy cập CSDL quan hệ.  
1.2 Chuẩn SQL  
Năm 1989, viện tiêu chuẩn quốc gia Hoa kỳ (ANSI) công nhận SQL là  
ngôn ngữ chuẩn để truy cập CSDL quan hệ trong văn bản ANSI SQL89.  
Năm 1989, tổ chức tiêu chuẩn quốc tế (ISO) công nhận SQL ngôn ngữ  
chuẩn để truy cập CSDL quan hệ trong văn bản ISO 9075-1989.  
Tất cả các hệ quản trị CSDL lớn trên thế giới cho phép truy cập bằng SQL  
và hầu hết theo chuẩn ANSI.  
1.3 Đặc điểm của SQL  
- Ngôn ngữ gần với ngôn ngữ tự nhiên (tiếng Anh)  
- SQL là ngôn ngữ phi cấu trúc, tức là trong các lệnh của SQL người sử  
dụng CHỈ CẦN đưa ra yêu cầu hệ thống CÁI GÌ chứ không cần chỉ ra  
phải làm THẾ NÀO.  
- Ví dụ: Cho cấu trúc dữ liệu để quản lý học sinh như sau  
HOCSINH(MaHS, TenHS, ĐTB, Xeploai). Đưa ra TenHS, ĐTB của  
các học sinh có ĐTB>=8.0.  
Pascal  
SQL  
Type Hocsinh=Record  
-
-
Tạo bảng HOCSINH  
Sử dụng lệnh SELECT  
Select TenHS, ĐTB  
From HOCSINH  
MaHS: String[5]; TenHS: String[30];  
ĐTB: Real; Xeploai: String[30];  
End;  
HS: Array[1..100] Of Hocsinh;  
Where ĐTB>=5.0;  
Begin  
….  
For i:=1 to n do  
If HS[i].ĐTB>=8.0 then  
Writeln(HS[i].TenHS, HS[i].DTB);  
….  
End.  
PHẦN II- NGÔN NGỮ SQL  
4
Chương 1. GIỚI THIỆU  
- Ngôn ngữ SQL được sử dụng rất rộng rãi trong các Hệ quản trị cơ sở dữ  
liệu.  
- SQL được chia 2 loại: SQL (ngôn ngữ hỏi) và PL/SQL (ngôn ngữ lập  
trình)  
1.4 Các loại lệnh của SQL  
Chia làm các nhóm chính:  
- Cho phép truy vấn cơ sở dữ liệu để đưa ra các thông tin cần thiết  
(SELECT).  
- Các lệnh định nghĩa dữ liệu (DDL_ Data Definition Language): Tạo và  
thay đổi cấu trúc các đối tượng trong cơ sở dữ liệu (CREATE, ALTER…)  
- Các lệnh thực hiện trên dữ liệu (DML_ Data Manipulation Language):  
Cho phép thêm, sửa, xóa dữ liệu (INSERT, UPDATE, DELETE…).  
- Các lệnh điều khiển dữ liệu (DCL_Data Control Language): Cho phép  
gán hoặc huỷ các quyền truy cập dữ liệu (GRANT, REVOTE)  
PHẦN II- NGÔN NGỮ SQL  
5
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
2 Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
2.1 Tạo một cơ sở dữ liệu  
Cú pháp:  
Create Database <Tên CSDL>  
Ví dụ: Tạo một cơ sở dữ liệu có tên là QLTV _ Quản lý thư viện  
Create Database QLTV;  
2.2 Tạo một bảng  
2.2.1 Cú pháp  
CREATE TABLE <Ten bang> (Tên_thuộc_tính1  
Kiểu_tt1 [NOT NULL],  
Tên_thuộc_tính2 Kiểu_tt2 [NOT NULL],  
…
Tên_thuộc_tínhn Kiểu_ttn [NOT NULL]  
[, CONSTRAINT mệnh đề ])  
Trong đó, mệnh đề CONSTRAINT cho phép ta khai báo các ràng buộc dữ  
liệu(chi tiết sẽ được trình bày ở phần sau).  
Ví dụ:  
Tạo bảng DOCGIA, có các thuộc tính:  
CREATE TABLE DOCGIA(  
MaDG Text(10) NOT NULL PRIMARY KEY,  
TenDG Text(30) NOT NULL,  
DiaChi Text(50) NOT NULL,  
Tuoi NUMBER)  
Bảng này sẽ được nhận một tên gọi và một cấu trúc (danh sách tên các  
thuộc tính và một vài đặc trưng). Khi mới được tạo, bảng chưa có dữ liệu, chỉ là  
một cấu trúc lôgic có thể tiếp nhận các dữ liệu.  
2.2.2 Tên của bảng  
Tên của bảng được xác định ngay sau lệnh CREATE TABLE.  
Mỗi HQTCSDL có một quy tắc đặt tên riêng. Ví dụ :  
- Tên bảng phải bắt đầu bằng một chữ cái, có dưới 30 kí tự (chữ cái, chữ số,  
và dấu ‘_’).  
PHẦN II- NGÔN NGỮ SQL  
6
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
- Tên bảng phải khác tên gọi khác của bảng hay của khung nhìn và với tên  
gọi đã dành riêng của SQL.  
- Không phân biệt hoa, thường.  
2.2.3 Xác định các thuộc tính  
Trong lệnh tạo bảng ta phải xác định cấu trúc của bảng. Cần phải xác định  
mỗi thuộc tính của một định nghĩa kết thúc bằng dấu ‘,’ và gồm:  
- Tên thuộc tính  
- Loại dữ liệu và độ dài  
- Các ràng buộc có liên quan.  
2.3 Các loại dữ liệu  
Các loại dữ liệu được sử dụng còn tùy theo HQTCSDL.  
2.3.1 Các loại dữ liệu được sử dụng trong MS Access  
Kiểu dữ  
liệu  
Miêu tả  
Kích cỡ  
Text  
Sử dụng ký tự hoặc kết hợp giữa ký Khả năng lưu trữ tối đa  
tự và số, như địa chỉ, hoặc những số (FieldSize)là 255 ký tự.  
không yêu cầu tính toán, như số điện  
thoại, mã nước, mã vùng…  
Memo  
Sử dụng khi bạn cần lưu trữ một  
Khả năng lưu trữ tối đa là 65.536  
lượng thông tin lớn, ví dụ như trường ký tự.  
thông tin ghi chú về một cán bộ.  
Number  
Number: Sử dụng cho những dữ liệu Khả năng lưu trữ có thể là 1, 2, 4, 8  
cần tính toán (loại trừ tính tiền, sử  
dụng Currency Type).  
tuỳ thuộc bào kiểu dữ liệu ta chọn  
(byte, integer, long integer, single,  
douple, decimal), riêng đối với kiểu  
dữ liệu ReplicationID (GUI) thi khả  
năng lưu trữ là 16 byte.  
Date/Time  
Currency  
Lưu trữ thông tin về thời gian.  
Sử dụng 8 byte để lưu trữ.  
Khả năng lưu trữ là 8 byte.  
Sử dụng Currency cho các dữ liệu  
cần tính toán. Phần thập phân có thể  
có từ 1 đến 4 số.  
AutoNumber Đây là kiểu số tự động tăng với bước Sử dụng 4 byte để lưu trữ. Nếu  
tăng là 1. Ta không thể cập nhật lại chọn kiểu dữ liệu là ReplicationID  
PHẦN II- NGÔN NGỮ SQL  
7
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
được trường này.  
thì khả năng lưu trữ có thể lên tới  
16 byte.  
Yes/No  
Kiểu dữ liệu YES/NO chỉ chứa một Sử dụng 1 bite để lưu trữ.  
trong 2 giá trị (Yes/No, True/False,  
On/ Off)Y  
OLE Object Đối tượng (như là một văn bản trong Sử dụng 1 GB để lưu trữ (tuỳ thuộc  
Microsoft Word, dữ liệu đồ hoạ, âm vào dung lượng của đĩa).  
thanh, hoặc một kiểu dữ liệu nhị  
phân… )  
Ngoài ra còn 2 loại dữ liệu khác như Hyperlink, Lookup Wizard.  
Đối với kiểu dữ liệu Number, ta còn có thể lựa chọ chi tiết:  
Kiểu dữ liệu Miêu tả  
Độ  
Kích cỡ  
chính  
xác thập  
phân  
Byte  
Lưu trữ số từ 0 đến 255 (không có phân số) Không  
1 byte  
Decimal  
Integer  
Lưu trữ tối đa 10^38-1  
28  
12bytes  
2 bytes  
Lưu trữ số từ -32,768 to 32,767 (không có  
phân số).  
Không  
Long Integer Lưu trữ số từ -2,147,483,648 tới  
2,147,483,647 (không có phân số).  
None  
4 bytes  
4 bytes  
Single  
Lưu trữ số từ -3.402823E38 to -1.401298E- 7  
45 cho giá trị âm và từ 1.401298E-45 to  
3.402823E38 giá trị dương.  
Double  
Lưu trữ số từ -1.79769313486231E308 tới - 15  
4.94065645841247E-324 cho giá trị âm và  
từ 4.94065645841247E–324 to  
8 bytes  
1.79769313486231E308 giá trị dương.  
2.3.2 Các loại dữ liệu được sử dụng trong Oracle:  
1. CHAR  
Kiểu CHAR dùng để khai báo một chuỗi có chiều dài cố định, khi khai báo  
biến hoặc cột kiểu CHAR với chiều dài chỉ định thì tất cả các mục tin của biến hay  
cột này đều có cùng chiều dài được chỉ định. Các mục tin ngắn hơn ORACLE sẽ  
tự động thêm vào các khoảng trống cho đủ chiều dài. ORACLE không cho phép  
PHẦN II- NGÔN NGỮ SQL  
8
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
gán mục tin dài hơn chiều dài chỉ định đối với kiểu CHAR. Chiều dài tối đa cho  
phép của kiểu CHAR là 255 byte  
2. VARCHAR2  
Kiểu VARCHAR2 dùng để khai báo chuỗi ký tự với chiều dài thay đổi. Khi  
khai báo một biến hoặc cột kiểu VARCHAR2 phải chỉ ra chiều dài tối đa, các mục  
tin chứa trong biến hay cột kiểu VARCHAR2 có chiều dài thực sự là chiều dài của  
mục tin. ORACLE không cho phép gán mục tin dài hơn chiều dài tối đa chỉ định  
đối với kiểu VARCHAR2. Chiều dài tối đa kiểu VARCHAR2 là 2000 byte  
3. VARCHAR  
Hiện tại ORACLE xem kiểu VARCHAR2 và VARCHAR là như nhau, tuy  
nhiên ORACLE khuyên nên dùng VARCHAR2. ORACLE dự định trong tương  
lai dùng kiểu VARCHAR để chứa các chuỗi với chiều dài biến đổi, nhưng trong  
phép so sánh sẽ được chỉ định theo nhiều ngữ nghĩa khác nhau.  
4. NUMBER  
Kiểu số của ORACLE dùng để chứa các mục tin dạng số dương, số âm, số  
với dấu chấm động.  
NUMBER(p, s)  
Trong đó:  
p: số chữ số trước dấu chấm thập phân (precision), p từ 1 đến 38 chữ số  
s: số các chữ số tính từ dấu chấm thập phân về bên phải (scale), s từ -84 đến  
127  
NUMBER(p) số có dấu chấm thập phân cố định với precision bằng p và  
scale bằng 0  
NUMBER số với dấu chấm động với precision bằng 38. Nhớ rằng scale  
không được áp dụng cho số với dấu chấm động.  
Ví dụ sau cho thấy cách thức ORACLE lưu trữ dữ liệu kiểu số tùy theo  
cách định precision và scale khác nhau:  
Dữ liệu thực  
7456123.89  
Kiểu  
NUMBER  
Lưu trữ  
7456123.89  
7456123.89  
7456123.89  
7456123.89  
7456123.89  
NUMBER(9)  
NUMBER(9,2)  
NUMBER(9,1)  
NUMBER(6)  
7456123  
7456123.89  
7456123.8  
Không hợp lệ  
PHẦN II- NGÔN NGỮ SQL  
9
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
7456123.8  
7456123.89  
7456123.89  
5. FLOAT  
NUMBER(15,1)  
NUMBER(7,-2)  
NUMBER(-7,2)  
7456123.8  
7456100  
Không hợp lệ  
Dùng để khai báo kiểu số dấu chấm động, với độ chính xác thập phân 38  
hay độ chính xác nhị phân là 126.  
FLOAT(b) Khai báo kiểu dấu chấm động với độ chính xác nhị phân là b, b  
từ 1 đến 126. Có thể chuyển từ độ chính xác nhị phận sang độ chính xác thập phân  
bằng cách nhân độ chính xác nhị phân với 0.30103.  
6. LONG  
Dùng để khai báo kiểu chuỗi ký tự với độ dài biến đổi, chiều dài tối đa của  
kiểu LONG là 2 gigabyte. Kiểu LONG thường được dùng để chứa các văn bản.  
Có một số hạn chế khi dùng kiểu LONG:  
- Một table không thể chứa nhiều hơn một cột kiểu LONG.  
- Dữ liệu kiểu LONG không thể tham gia vào các ràng buộc toàn vẹn, ngoại  
trừ kiểm tra NULL và khác NULL.  
- Không thể index một cột kiểu LONG.  
- Không thể truyền tham số kiểu LONG cho hàm hoặc thủ tục.  
- Các hàm không thể trả về dữ liệu kiểu LONG.  
- Trong câu lệnh SQL có truy cập các cột kiểu LONG, thì việc cập nhật hoặc  
khóa các bảng chỉ cho phép trong cùng một CSDL  
Ngoài ra, các cột kiểu LONG không được tham gia trong các thành phần  
sau của câu lệnh SQL:  
- Các mệnh đề WHERE, GROUP BY, ORDER BY, CONNECT BY hoặc  
với tác tử DISTINCT trong câu lệnh SELECT.  
- Các hàm sử dụng trong câu lệnh SQL như SUBSTR, INSTR.  
- Trong danh sách lựa chọn của câu lệnh SELECT có sử dụng mệnh đề  
GROUP BY.  
- Trong danh sách lựa chọn của câu hỏi con, câu hỏi có sử dụng các toán tử  
tập hợp.  
- Trong danh sách lựa chọn của câu lệnh CREATE TABLE AS SELECT  
7. DATE  
PHẦN II- NGÔN NGỮ SQL  
10  
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
Dùng để chứa dữ liệu ngày và thời gian. Mặc dù kiểu ngày và thời gian có  
thể được chứa trong kiểu CHAR và NUMBER.  
Với giá trị kiểu DATE, những thông tin được lưu trữ gồm thế kỷ, năm,  
tháng, ngày, giờ, phút, giây. ORACLE không cho phép gán giá trị kiểu ngày trực  
tiếp, để gán giá trị kiểu ngày, bạn phải dùng TO_DATE để chuyển giá trị kiểu  
chuỗi ký tự hoặc kiểu số.  
Nếu gán một giá trị kiểu ngày mà không chỉ thời gian thì thời gian mặc  
định là 12 giờ đêm, Nếu gán giá trị kiểu ngày mà không chỉ ra ngày, thì ngày mặc  
định là ngày đầu của tháng. Hàm SYSDATE cho biết ngày và thời gian hệ thống.  
Tính toán đối với kiểu ngày:  
Đối với dữ liệu kiểu ngày, bạn có thể thực hiện các phép toán cộng và trừ.  
Ví dụ:  
- SYSDATE+1 ngày hôm sau  
- SYSDATE-7 cách đây một tuần  
- SYSDATE+(10/1440) mười phút sau  
- Ngày Julian: Là giá trị số cho biết số ngày kể từ ngày 1 tháng giêng  
năm 4712 trước công nguyên.Ví dụ:  
SELECT TO_CHAR (TO_DATE('01-01-1992', 'MM-DD-YYYY'),  
'J') JULIAN FROMDUAL  
Cho kết quả:  
JULIAN  
-----------------------------------------------  
2448623  
8. RAW và LONG RAW  
Kiểu RAW và LONG RAW dùng để chứa các chuỗi byte, các dữ liệu nhị  
phân như hình ảnh, âm thanh. Các dữ liệu kiểu RAW chỉ có thể gán hoặc truy cập  
chứ không được thực hiện các thao tác như đối với chuỗi ký tự.  
Kiểu RAW giống như kiểu VARCHAR2 và kiểu LONG RAW giống kiểu  
LONG, chỉ khác nhau ở chổ ORACLE tự động chuyển đổi các giá trị kiểu CHAR,  
VARCHAR2 và LONG giữa tập hợp ký tự của CSDL và tập ký tự của các ứng  
dụng.  
9. ROWID  
Mỗi mẫu tin trong CSDL có một địa chỉ có kiểu ROWID. ROWID gồm  
block.row.file, trong đó:  
block : chuỗi hệ hexa cho biết block chứa row  
PHẦN II- NGÔN NGỮ SQL  
11  
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
row : chuỗi hệ hexa cho biết row trong block  
file : chuỗi hệ hexa cho biết database file chứa block  
Ví dụ:  
0000000F.0000.0002  
Row đầu tiên trong block 15 của data file thứ hai.  
10. MLSLABEL  
Kiểu MLSLABEL dùng để chứa label dạng nhị phân mà ORACLE dùng để  
đảm bảo hoạt động của bản thân hệ thống.  
2.3.3 Các loại dữ liệu sử dụng trong SQL SERVER  
Phần này sẽ được trình bày trong phần sau, khi học về SQL SERVER 2000.  
2.4 Các loại ràng buộc trong bảng dữ liệu .  
Các dạng constraint gồm:  
- NOT NULL  
- UNIQUE  
- PRIMARY KEY  
- FOREIGN KEY ( Referential )  
- CHECK  
2.4.1 NOT NULL- Không rỗng  
- Khi có mệnh đề NOT NULL có trong định nghĩa của một cột thì ta bắt  
buộc thuộc tính này phải có giá trị. Nếu ta không chỉ thị gì trong định nghĩa  
của thuộc tính thì nó có thể có hoặc không có giá trị.  
CREATE TABLE NHANVIEN(  
MaNV NUMBER(10) NOT NULL,  
TenNV CHAR(30))  
2.4.2 UNIQUE-Duy nhất  
- Chỉ ra ràng buộc duy nhất, các giá trị của cột chỉ trong mệnh đề UNIQUE  
trong các row của table phải có giá trị khác biệt. Giá trị null là cho phép nêu  
UNIQUE dựa trên một cột. Ví dụ:  
CREATE TABLE NHANVIEN (  
MaNV NUMBER(10) NOT NULL,  
TenNV CHAR(30),  
DiachiNV CHAR(50)  
CONSTRAINT UNQ_Ten_Diachi UNIQUE(Ten,Diachi))  
PHẦN II- NGÔN NGỮ SQL  
12  
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
2.4.3 PRIMARY KEY- Khoá chính  
- Chỉ ra ràng buộc duy nhất (giống UNIQUE), tuy nhiên khoá là dạng khoá  
UNIQUE cấp cao nhất. Một table chỉ có thể có một PRIMARY KEY. Các  
giá trị trong PRIMARY KEY phải NOT NULL.  
Cú pháp:  
[CONSTRAINT constraint_name ]  
PRIMARY KEY [CLUSTERED|NONCLUSTERED]  
[( colname [,colname2 [...,colname16]])]  
Ví dụ:  
CREATE TABLE NHANVIEN  
(
MaNV char(10) NOT NULL primary key,  
TenNV char(30),  
DiachiNV char(50),  
)
Hoặc ta có thể viết câu lệnh sau:  
CREATE TABLE NHANVIEN  
(
MaNV char(10) NOT NULL,  
TenNV char(30),  
DiachiNV char(50),  
CONSTRAINT NV_P_K PRIMARY KEY (MaNV))  
2.4.4 FOREIGN KEY-Khoá ngoại  
Chỉ ra mối liên hệ ràng buộc tham chiếu giữa bảng này với bảng khác.  
Từ khoá ON DELETE CASCADE được chỉ định trong dạng khoá này để  
chỉ khi dữ liệu cha bị xoá thì dữ liệu con cũng tự động bị xoá theo.  
Cú pháp:  
[CONSTRAINT constraint_name ]  
[FOREIGN KEY (colname [,colname2 [...,colname16]])]  
REFERENCES reference_table  
[(ref_colname[,ref_colname2[...,ref_colname 16]])]  
Ví dụ: Hai bảng DONVI và bảng NHANVIEN có mối quan hệ cha – con  
(1_N). Thuộc tính MaDV trong bảng NHANVIEN(bảng con) là khoá ngoại, được  
tham chiếu từ thuộc tính MaDV của bảng DONVI(bảng cha)  
Ta tạo 2 bảng như sau:  
PHẦN II- NGÔN NGỮ SQL  
13  
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
CREATE TABLE DONVI  
(
MaDV char(2) primary key,  
TenDV char(20) not null  
)
CREATE TABLE NHANVIEN  
(
MaNV char(10) primary key,  
TenNV char(30) not null,  
Diachi char(50),  
madv char(2)  
CONSTRAINT k_n_madv FOREIGN KEY(madv) REFERENCES  
DONVI(MaDV)  
)
2.4.5 CHECK- Ràng buộc kiểm tra giá trị  
Ràng buộc CHECK được sử dụng để yêu cầu các giá trị trong cột, hoặc  
khuôn dạng dữ liệu trong cột phải theo một quy tắc nào đó. Trên một cột có thể có  
nhiều ràng buộc này. Để khai báo một rang buộc CHECK cho một cột nào đó ta  
dùng cú pháp sau.  
Cú pháp:  
[CONSTRAINT constraint_name]  
CHECK (expression)  
Trong đó, expression là một biểu thức logic. Sau khi có ràng buộc này, giá  
trị nhập vào cho cột phải thoả mãn điều kiện mới được chấp nhận.  
Ví dụ:  
CREATE TABLE NHANVIEN  
(MaNV CHAR(10) NOT NULL PRIMARY KEY,  
TenNV CHAR(30),  
Luong NUMBER(10,2)  
CONSTRAINT CK_SAL CHECK(SAL>500))  
2.4.6 DEFAULT-Mặc định  
Ràng buộc DEFAULT được sử dụng để quy định giá trị mặc định cho một  
cột. Giá trị này sẽ tự động gán cho cột nếu người sử dụng không nhập vào khi bổ  
sung bản ghi.  
Cú pháp:  
PHẦN II- NGÔN NGỮ SQL  
14  
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
[CONSTRAINT constraint_name]  
DEFAULT {const_expression/nonarguments_function/NULL}  
Ví dụ:  
CREATE TABLE NHANVIEN  
(
MaNV char(10) primary key,  
TenNV char(30) not null,  
Gioitinh char(3) DEFAULT ‘Nam’  
)
2.5 Sửa đổi cấu trúc  
Có thể sửa đổi cấu trúc của bảng hiện đang tồn tại bằng lệnh ALTER.  
Chúng ta có thể thêm một thuộc tính (cột) mới, thay đổi cấu trúc của một thuộc  
tính (cột ) đang có, bổ sung khoá, bổ sung ràng buộc.  
Cú pháp tổng quát:  
ALTER TABLE table_name  
[ADD  
{col_name column_properties [column_constraints]  
[[,]table_constraint ] }  
[,{next_col_name|next_table_constraint}]...]  
[DROP  
[CONSTRAINT] constraint_name1  
[, constraint_name2]...]  
/ALTER  
{col_name column_properties [column_constraints]  
[[,]table_constraint ] }  
[,{next_col_name|next_table_constraint}]...]  
Thêm một ràng buộc CHECK  
ALTER TABLE DONVI  
ADD CONSTRAINT check_madv  
CHECK (MaDV LIKE ‘[0-9][0-9]’)  
Thêm một thuộc tính.  
Cú pháp:  
ALTER TABLE <Tên_bảng>  
ADD COLUMN Tên_cột , Kiểu_cột[(size)] )  
Ví dụ:  
ALTER TABLE DONVI  
PHẦN II- NGÔN NGỮ SQL  
15  
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
ADD(GhiChu, VARCHAR(255))  
Chú ý: Trong một số HQTCSDL ta cần phải thêm từ khoá COLUMN  
như sau:  
Cú pháp:  
ALTER TABLE <Tên_bảng>  
ADD COLUMN Tên_cột , Kiểu_cột[(size)] )  
Ví dụ:  
ALTER TABLE NHANVIEN  
ADD COLUMN GhiChu Text(50));  
Thay đổi kiểu của một thuộc tính.  
Cú pháp:  
ALTER TABLE <Tên_bảng>  
ALTER (Tên_cột, Kiểu_mới)  
Ví dụ:  
ALTER TABLE NHANVIEN  
ALTER(HoTen, VARCHAR(40))  
Chú ý: Trong một số HQTCSDL ta cần phải thêm từ khoá COLUMN như  
sau:  
Cú pháp:  
ALTER TABLE <Tên_bảng>  
ALTER COLUMN Tên_cột , Kiểu_cột_mới[(size)]  
Ví dụ:  
ALTER TABLE NHANVIEN  
ALTER COLUMN GhiChu Memo  
Xóa một thuộc tính  
Cú pháp:  
ALTER TABLE <Tên_bảng>  
DROP <Tên_thuộc_tính>  
Ví dụ:  
ALTER TABLE NHANVIEN  
DROP GhiChu  
Chú ý: Trong một số HQTCSDL ta cần phải thêm từ khoá COLUMN như  
sau:  
PHẦN II- NGÔN NGỮ SQL  
16  
Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL)  
Cú pháp:  
ALTER TABLE <Tên_bảng>  
DROP COLUMN Tên_cột  
Ví dụ:  
ALTER TABLE NHANVIEN  
DROP COLUMN GhiChu  
2.6 Xoá đối tượng  
Cú pháp:  
DROP <Object_name>  
Ví dụ:  
DROP TABLE SINHVIEN  
3 Chương 3. CÁC LỆNH QUẢN TRỊ DỮ LIỆU  
3.1 Thêm hàng (INSERT)  
Cú pháp:  
INSERT [INTO]<TableName> (Column1, Column2, …, Columnn)  
VALUES (Values1, Values2,…., Valuesn)  
Lệnh này được dùng để xen thêm một hoặc nhiều dòng (bản ghi) mới vào  
một bảng. Dạng đơn giản nhất của lệnh này là thêm mỗi lần 1 dòng. Nó đòi hỏi  
phải nên tên của bảng, tên các thuộc tính và giá trị cần gán cho chúng. Nếu không  
nêu tên các thuộc tính thì điều đó có nghĩa là tất cả các thuộc tính trong bảng đều  
cần được thêm giá trị theo thứ tự từ trái sang phải.  
Ví dụ 1:  
Giả sử ta đã có cấu trúc bảng NHANVIEN(MaNV, TenNV, Diachi, Tuoi)  
- Thêm bản ghi mới có tất cả các trường cho bảng NHANVIEN. Vì tất cả  
các thuộc tính trong bảng đều được thêm giá trị nên ta không cần có danh sách các  
thuộc tính ngay sau tên bảng NHANVIEN.  
INSERT INTO NHANVIEN  
VALUES(‘DHTL05’,’Nguyễn Công Thành’, ‘KhoaCNTT’,22 )  
- Thêm bản ghi mới vào bảng, để tuổi không xác định:  
INSERT INTO DOCGIA(MaDG,TenDG,DiaChi)  
VALUES(‘DHTL06’,’Nguyễn Phương Lan’, ‘Khoa May’ )  
- Ngoài ra chúng ta còn có thêm dữ liệu cho bảng từ giá trị của bảng khác:  
PHẦN II- NGÔN NGỮ SQL  
17  
Chương 3. CÁC LỆNH QUẢN TRỊ DỮ LIỆU  
Cú pháp:  
INSERT [INTO]<TableName> (Column1, Column2, …, Columnn)  
SELECT Select_list FROM <Tables>  
Ví dụ:  
insert into NHANVIEN_tam (TenNV, Tuoi)  
select TenNV, Tuoi from NHANVIEN where Tuoi > 20  
3.2 Xóa hàng (DELETE)  
Cú pháp:  
DELETE FROM <Table_name> WHERE <Conditions>  
Lệnh này gồm 1 mệnh đề DELETE FROM để chỉ ra tên gọi của bảng được  
xét, và một mệnh để WHERE để chỉ ra các dòng cần phải xóa. Như vậy, ta có thể  
cùng lúc xóa được nhiều dòng nếu dòng đó thỏa mãn điều kiện. Muốn xóa mọi  
dòng của một bảng thì không cần đưa vào mệnh đề WHERE.  
Ví dụ:  
Xóa một bản ghi (dòng) có MaDG=’DHTL01’ trong bảng DOCGIA.  
DELETE FROM DOCGIA WHERE MaDG=’DHTL01’  
Xóa những độc giả có địa chỉ là: 41NC có trong bảng DOCGIA.  
DELETE FROM DOCGIA WHERE Diachi=’41NC’  
3.3 Sửa đổi giá trị của một hàng (UPDATE)  
Cú pháp:  
UPDATE <Table_name>  
SET (Colunm_name= <new value>)  
WHERE <Condition>  
Ví dụ:  
UPDATE DOCGIA  
SET (Diachi= ‘Khoa Cong trinh’)  
WHERE MaDG= ‘TD001’  
PHẦN II- NGÔN NGỮ SQL  
18  
Chương 4. NGÔN NGỮ ĐIỂU KHIỂN (DCL)  
4 Chương 4. NGÔN NGỮ ĐIỂU KHIỂN (DCL)  
Ngôn ngữ điều khiển được sử dụng trong việc cấp phát hay huỷ bỏ quyền  
của người sử dụng.  
4.1 Lệnh GRANT  
Câu lệnh này dùng để cấp phát quyền cho người sử dụng trên đối tượng Cơ  
sở dữ liệu hoặc quyền thực thi các câu lệnh SQL SERVER. Cú pháp có 2 dạng  
như sau:  
Dạng 1: Cấp quyền đối với câu lệnh SQL  
GRANT ALL | statement [,...,statementN ]  
TO account [,...,accountN]  
Dạng 2: Cấp quyền đối với các đối tượng trong cơ sở dữ liệu  
GRANT ALL | permission [,...,permissionN]  
ON table_name |view_name [(column1 [,...,columnN])]  
|ON stored_procedure  
TO account [,...,accountN]  
Trong đó:  
- ALL: là từ khoá được sử dụng khi muốn cấp phát tất cả các quyền cho  
người sử dụng.  
- Account: là tên tài khoản đăng nhận hệ thống  
- Permission: là quyền cấp phát cho người sử dụng trên đối tượng cơ sở dữ  
liệu:  
o Các quyền có thể cấp phát trên một bảng hoặc một View: Select,  
Insert, Delete, Update.  
o Các quyền có thể cấp phát trên cột của bảng hoặc của View: Select,  
Update  
o Quyền có thể cấp phát với các thủ tục: EXCUTE(thực thi)  
- Statement: Là câu lệnh được cấp phát cho người sử dụng Các câu lệnh có  
thể cấp phát là:  
o CREATE DATABASE  
o CREATE TABLE  
o CREATE VIEW  
o CREATE PROCEDURE  
PHẦN II- NGÔN NGỮ SQL  
19  
Chương 4. NGÔN NGỮ ĐIỂU KHIỂN (DCL)  
o CREATE RULE  
o CREATE DEFAULT  
o BACKUP DATABASE  
o BACKUP LOG  
Ví dụ 1: Câu lệnh sau sẽ 3 cấp quyền SELECT, UPDATE, INSERT trên  
các thuộc tính (TenNV,DiaChi, Tuoi) của bảng NHANVIEN cho 2 người sử dụng  
phnhung, htvan.  
GRANT SELECT, UPDATE, INSERT  
ON NHANVIEN(TenNV,DiaChi, Tuoi)  
TO phnhung, htvan  
Ví dụ 2:  
Câu lệnh sau sẽ cấp quyền tạo bảng, tạo View và tạo thủ tục cho người  
dùng phnhung.  
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE  
TO phnhung  
4.2 Lệnh REVOKE  
Lệnh REVOKE được dùng để huỷ bỏ quyền đã được cấp phát cho người sử  
dụng. Câu lệnh này cũng có 2 dạng tương tự như câu lệnh GRANT.  
Dạng 1: Huỷ quyền thực hiện câu lệnh:  
REVOKE ALL | statement [,...,statementN]  
FROM account [,...,accountN]  
Dạng  
2:  
Huỷ  
quyền  
thực  
hiện  
các  
đối  
tượng:  
REVOKE ALL | permission [,...,permissionN]}  
ON table_name | view_name [(column [,...,columnN])]  
| stored_procedure  
FROM account [,...,accountN ]  
PHẦN II- NGÔN NGỮ SQL  
20  
Tải về để xem bản đầy đủ
pdf 64 trang Thùy Anh 23720 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Cơ sở dữ liệu và giải thuật - Trường Đại học Thủy Lợi", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_co_so_du_lieu_va_giai_thuat_truong_dai_hoc_thuy_l.pdf