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

PHN  
PHN  
II  
CƠ SỞ  
NGÔN NGSQL  
DLIU  
♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦  
◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊  
o Gii thiu  
o Ngôn ngữ định nghĩa dliu  
o Ngôn ngqun trdliu  
o Ngôn ngữ điu khin dliu  
o Ngôn ngtruy vn dliu  
o Bài tp tng hp  
GV. Phm ThHoàng Nhung  
Bmôn Công nghphn mm  
Đại hc Thy li  
MC LC  
1
2
Chương 1. GII THIU................................................................................... 4  
1.1  
1.2  
1.3  
1.4  
Lch sphát trin....................................................................................... 4  
Chun SQL................................................................................................ 4  
Đặc đim ca SQL .................................................................................... 4  
Các loi lnh ca SQL............................................................................... 5  
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (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  
To mt cơ sdliu................................................................................ 6  
To mt bng............................................................................................. 6  
Cú pháp.............................................................................................. 6  
Tên ca bng...................................................................................... 6  
Xác định các thuc tính ..................................................................... 7  
Các loi dliu ......................................................................................... 7  
Các loi dliu được sdng trong MS Access............................... 7  
Các loi dliu được sdng trong Oracle:..................................... 8  
Các loi dliu sdng trong SQL SERVER................................ 12  
Các loi ràng buc trong bng dliu . .................................................. 12  
NOT NULL- Không rng................................................................ 12  
UNIQUE-Duy nht.......................................................................... 12  
PRIMARY KEY- Khoá chính......................................................... 13  
FOREIGN KEY-Khoá ngoi........................................................... 13  
CHECK- Ràng buc kim tra giá tr................................................ 14  
DEFAULT-Mc định....................................................................... 14  
2.4.2  
2.4.3  
2.4.4  
2.4.5  
2.4.6  
2.5  
2.6  
Sa đổi cu trúc....................................................................................... 15  
Xoá đối tượng.......................................................................................... 17  
3
Chương 3. CÁC LNH QUN TRDLIU ............................................. 17  
3.1  
Thêm hàng (INSERT)............................................................................. 17  
Xóa hàng (DELETE)............................................................................... 18  
Sa đổi giá trca mt hàng (UPDATE)................................................ 18  
3.2  
3.3  
4
5
Chương 4. NGÔN NGỮ ĐIU KHIN (DCL)............................................. 19  
4.1  
4.2  
Lnh GRANT.......................................................................................... 19  
Lnh REVOKE ....................................................................................... 20  
Chương 5. TRUY VN DLIU (SELECT) .............................................. 21  
5.1  
Cú pháp ................................................................................................... 21  
Ví d:....................................................................................................... 21  
Đưa ra các ct.......................................................................................... 22  
5.2  
5.3  
5.3.1  
Đưa tt ccác ct............................................................................. 22  
Đưa mt scác ct........................................................................... 22  
Tránh các giá trtrùng lp (DISTINCT).......................................... 23  
Đưa ra các giá trca các biu thc................................................. 23  
Sdng bí danh ct ......................................................................... 23  
Sp xếp tht(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  
PHN II- NGÔN NGSQL  
2
MC LC  
5.4.1  
5.4.2  
5.4.3  
Sdng các phép so sánh................................................................ 24  
Sdng các phép logic: AND, OR, NOT ....................................... 25  
Các toán tca SQL........................................................................ 25  
5.5  
Sdng các hàm ..................................................................................... 27  
5.5.1  
5.5.2  
Hàm shc ...................................................................................... 27  
Mt shàm kiu stham kho khác: .............................................. 27  
Các hàm ký t.................................................................................. 29  
Các hàm ngày................................................................................... 33  
Các hàm chuyn đổi kiu................................................................. 35  
Hàm nhóm........................................................................................ 37  
Sdng hàm nhóm.......................................................................... 37  
Mnh đề GROUP BY ...................................................................... 37  
Mnh đề 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  
Ly thông tin tnhiu bng .................................................................... 39  
5.6.1  
Ni bng (Equi-Join) ....................................................................... 39  
Bí danh bng.................................................................................... 40  
Ni không bng (Non Equi-Join) .................................................... 40  
Ni bng vi chính nó...................................................................... 41  
Thc hin kết ni thông qua tkhóa Join ....................................... 41  
5.6.2  
5.6.3  
5.6.4  
5.6.5  
5.7  
5.8  
Thc hin các phép toán trên tp hp ..................................................... 43  
Các câu hi lng nhau............................................................................. 44  
5.8.1  
Lnh SELECT bên trong cho kết qulà 1 hàng.............................. 44  
Lnh SELECT bên trong cho kết qulà nhiu hàng ....................... 45  
Mnh đề HAVING trong SELECT lng nhau. ............................... 48  
Mnh đề ORDER BY trong SELECT lng nhau............................ 49  
5.8.2  
5.8.3  
5.8.4  
5.9  
Các lnh lng nhau liên kết..................................................................... 49  
6
THC HÀNH TNG HP ........................................................................... 51  
6.1  
Hướng dn thc hành.............................................................................. 51  
Bài s1.................................................................................................... 52  
Bài s2.................................................................................................... 54  
Bài s3.................................................................................................... 58  
6.2  
6.3  
6.4  
PHN II- NGÔN NGSQL  
3
Chương 1. GII THIU  
1 Chương 1. GII THIU  
1.1 Lch sphát trin  
SQL (Structured Query Language, đọc là "sequel") là tp lnh truy xut  
CSDL quan h. Ngôn ngSQL được IBM sdng đầu tiên trong hqun trị  
CSDL System R vào gia nhng năm 70, hngôn ngSQL đầu tiên (SEQUEL2)  
được IBM công bvào tháng 11 năm 1976. Năm 1979, tp đoàn ORACLE gii  
thiu thương phm đầu tiên ca SQL, SQL cũng được cài đặt trong các hqun trị  
CSDL như DB2 ca IBM và SQL/DS.  
Ngày nay, SQL được sdng rng rãi và đuc xem là ngôn ngchun để  
truy cp CSDL quan h.  
1.2 Chun SQL  
Năm 1989, vin tiêu chun quc gia Hoa k(ANSI) công nhn SQL là  
ngôn ngchun để truy cp CSDL quan htrong văn bn ANSI SQL89.  
Năm 1989, tchc tiêu chun quc tế (ISO) công nhn SQL ngôn ngữ  
chun để truy cp CSDL quan htrong văn bn ISO 9075-1989.  
Tt ccác hqun trCSDL ln trên thế gii cho phép truy cp bng SQL  
và hu hết theo chun ANSI.  
1.3 Đặc đim ca SQL  
- Ngôn nggn vi ngôn ngtnhiên (tiếng Anh)  
- SQL là ngôn ngphi cu trúc, tc là trong các lnh ca SQL người sử  
dng CHCN đưa ra yêu cu hthng CÁI GÌ chkhông cn chra  
phi làm THNÀO.  
- Ví d: Cho cu trúc dliu để qun lý hc sinh như sau  
HOCSINH(MaHS, TenHS, ĐTB, Xeploai). Đưa ra TenHS, ĐTB ca  
các hc sinh có ĐTB>=8.0.  
Pascal  
SQL  
Type Hocsinh=Record  
-
-
To bng HOCSINH  
Sdng lnh 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.  
PHN II- NGÔN NGSQL  
4
Chương 1. GII THIU  
- Ngôn ngSQL được sdng rt rng rãi trong các Hqun trcơ sdữ  
liu.  
- SQL được chia 2 loi: SQL (ngôn nghi) và PL/SQL (ngôn nglp  
trình)  
1.4 Các loi lnh ca SQL  
Chia làm các nhóm chính:  
- Cho phép truy vn cơ sdliu để đưa ra các thông tin cn thiết  
(SELECT).  
- Các lnh định nghĩa dliu (DDL_ Data Definition Language): To và  
thay đổi cu trúc các đối tượng trong cơ sdliu (CREATE, ALTER…)  
- Các lnh thc hin trên dliu (DML_ Data Manipulation Language):  
Cho phép thêm, sa, xóa dliu (INSERT, UPDATE, DELETE…).  
- Các lnh điu khin dliu (DCL_Data Control Language): Cho phép  
gán hoc hucác quyn truy cp dliu (GRANT, REVOTE)  
PHN II- NGÔN NGSQL  
5
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
2 Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
2.1 To mt cơ sdliu  
Cú pháp:  
Create Database <Tên CSDL>  
Ví d: To mt cơ sdliu có tên là QLTV _ Qun lý thư vin  
Create Database QLTV;  
2.2 To mt bng  
2.2.1 Cú pháp  
CREATE TABLE <Ten bang> (Tên_thuc_tính1  
Kiu_tt1 [NOT NULL],  
Tên_thuc_tính2 Kiu_tt2 [NOT NULL],  
Tên_thuc_tínhn Kiu_ttn [NOT NULL]  
[, CONSTRAINT mnh đề ])  
Trong đó, mnh đề CONSTRAINT cho phép ta khai báo các ràng buc dữ  
liu(chi tiết sẽ được trình bày phn sau).  
Ví d:  
To bng DOCGIA, có các thuc tính:  
CREATE TABLE DOCGIA(  
MaDG Text(10) NOT NULL PRIMARY KEY,  
TenDG Text(30) NOT NULL,  
DiaChi Text(50) NOT NULL,  
Tuoi NUMBER)  
Bng này sẽ được nhn mt tên gi và mt cu trúc (danh sách tên các  
thuc tính và mt vài đặc trưng). Khi mi được to, bng chưa có dliu, chlà  
mt cu trúc lôgic có thtiếp nhn các dliu.  
2.2.2 Tên ca bng  
Tên ca bng được xác định ngay sau lnh CREATE TABLE.  
Mi HQTCSDL có mt quy tc đặt tên riêng. Ví d:  
- Tên bng phi bt đầu bng mt chcái, có dưới 30 kí t(chcái, chs,  
và du ‘_’).  
PHN II- NGÔN NGSQL  
6
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
- Tên bng phi khác tên gi khác ca bng hay ca khung nhìn và vi tên  
gi đã dành riêng ca SQL.  
- Không phân bit hoa, thường.  
2.2.3 Xác định các thuc tính  
Trong lnh to bng ta phi xác định cu trúc ca bng. Cn phi xác định  
mi thuc tính ca mt định nghĩa kết thúc bng du ‘,’ và gm:  
- Tên thuc tính  
- Loi dliu và độ dài  
- Các ràng buc có liên quan.  
2.3 Các loi dliu  
Các loi dliu được sdng còn tùy theo HQTCSDL.  
2.3.1 Các loi dliu được sdng trong MS Access  
Kiu dữ  
liu  
Miêu tả  
Kích cỡ  
Text  
Sdng ký thoc kết hp gia ký Khnăng lưu trti đa  
tvà s, như đa ch, hoc nhng s(FieldSize)là 255 ký t.  
không yêu cu tính toán, như số đin  
thoi, mã nước, mã vùng…  
Memo  
Sdng khi bn cn lưu trmt  
Khnăng lưu trti đa là 65.536  
lượng thông tin ln, ví dnhư trường ký t.  
thông tin ghi chú vmt cán b.  
Number  
Number: Sdng cho nhng dliu Khnăng lưu trcó thlà 1, 2, 4, 8  
cn tính toán (loi trtính tin, sử  
dng Currency Type).  
tuthuc bào kiu dliu ta chn  
(byte, integer, long integer, single,  
douple, decimal), riêng đối vi kiu  
dliu ReplicationID (GUI) thi khả  
năng lưu trlà 16 byte.  
Date/Time  
Currency  
Lưu trthông tin vthi gian.  
Sdng 8 byte để lưu tr.  
Khnăng lưu trlà 8 byte.  
Sdng Currency cho các dliu  
cn tính toán. Phn thp phân có thể  
có t1 đến 4 s.  
AutoNumber Đây là kiu stự đng tăng vi bước Sdng 4 byte để lưu tr. Nếu  
tăng là 1. Ta không thcp nht li chn kiu dliu là ReplicationID  
PHN II- NGÔN NGSQL  
7
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
được trường này.  
thì khnăng lưu trcó thlên ti  
16 byte.  
Yes/No  
Kiu dliu YES/NO chcha mt Sdng 1 bite để lưu tr.  
trong 2 giá tr(Yes/No, True/False,  
On/ Off)Y  
OLE Object Đối tượng (như là mt văn bn trong Sdng 1 GB để lưu tr(tuthuc  
Microsoft Word, dliu đồ ho, âm vào dung lượng ca đĩa).  
thanh, hoc mt kiu dliu nhị  
phân… )  
Ngoài ra còn 2 loi dliu khác như Hyperlink, Lookup Wizard.  
Đối vi kiu dliu Number, ta còn có thla chchi tiết:  
Kiu dliu Miêu tả  
Độ  
Kích cỡ  
chính  
xác thp  
phân  
Byte  
Lưu trst0 đến 255 (không có phân s) Không  
1 byte  
Decimal  
Integer  
Lưu trti đa 10^38-1  
28  
12bytes  
2 bytes  
Lưu trst-32,768 to 32,767 (không có  
phân s).  
Không  
Long Integer Lưu trst-2,147,483,648 ti  
2,147,483,647 (không có phân s).  
None  
4 bytes  
4 bytes  
Single  
Lưu trst-3.402823E38 to -1.401298E- 7  
45 cho giá trâm và t1.401298E-45 to  
3.402823E38 giá trdương.  
Double  
Lưu trst-1.79769313486231E308 ti - 15  
4.94065645841247E-324 cho giá trâm và  
t4.94065645841247E–324 to  
8 bytes  
1.79769313486231E308 giá trdương.  
2.3.2 Các loi dliu được sdng trong Oracle:  
1. CHAR  
Kiu CHAR dùng để khai báo mt chui có chiu dài cố định, khi khai báo  
biến hoc ct kiu CHAR vi chiu dài chỉ định thì tt ccác mc tin ca biến hay  
ct này đều có cùng chiu dài được chỉ định. Các mc tin ngn hơn ORACLE sẽ  
tự động thêm vào các khong trng cho đủ chiu dài. ORACLE không cho phép  
PHN II- NGÔN NGSQL  
8
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
gán mc tin dài hơn chiu dài chỉ định đối vi kiu CHAR. Chiu dài ti đa cho  
phép ca kiu CHAR là 255 byte  
2. VARCHAR2  
Kiu VARCHAR2 dùng để khai báo chui ký tvi chiu dài thay đổi. Khi  
khai báo mt biến hoc ct kiu VARCHAR2 phi chra chiu dài ti đa, các mc  
tin cha trong biến hay ct kiu VARCHAR2 có chiu dài thc slà chiu dài ca  
mc tin. ORACLE không cho phép gán mc tin dài hơn chiu dài ti đa chỉ định  
đối vi kiu VARCHAR2. Chiu dài ti đa kiu VARCHAR2 là 2000 byte  
3. VARCHAR  
Hin ti ORACLE xem kiu 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 kiu VARCHAR để cha các chui vi chiu dài biến đổi, nhưng trong  
phép so sánh sẽ được chỉ định theo nhiu ngnghĩa khác nhau.  
4. NUMBER  
Kiu sca ORACLE dùng để cha các mc tin dng sdương, sâm, số  
vi du chm động.  
NUMBER(p, s)  
Trong đó:  
p: schstrước du chm thp phân (precision), p t1 đến 38 chsố  
s: scác chstính tdu chm thp phân vbên phi (scale), s t-84 đến  
127  
NUMBER(p) scó du chm thp phân cố định vi precision bng p và  
scale bng 0  
NUMBER svi du chm động vi precision bng 38. Nhrng scale  
không được áp dng cho svi du chm động.  
Ví dsau cho thy cách thc ORACLE lưu trdliu kiu stùy theo  
cách định precision và scale khác nhau:  
Dliu thc  
7456123.89  
Kiu  
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 hp lệ  
PHN II- NGÔN NGSQL  
9
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
7456123.8  
7456123.89  
7456123.89  
5. FLOAT  
NUMBER(15,1)  
NUMBER(7,-2)  
NUMBER(-7,2)  
7456123.8  
7456100  
Không hp lệ  
Dùng để khai báo kiu sdu chm động, vi độ chính xác thp phân 38  
hay độ chính xác nhphân là 126.  
FLOAT(b) Khai báo kiu du chm động vi độ chính xác nhphân là b, b  
t1 đến 126. Có thchuyn từ độ chính xác nhphn sang độ chính xác thp phân  
bng cách nhân độ chính xác nhphân vi 0.30103.  
6. LONG  
Dùng để khai báo kiu chui ký tvi độ dài biến đổi, chiu dài ti đa ca  
kiu LONG là 2 gigabyte. Kiu LONG thường được dùng để cha các văn bn.  
Có mt shn chế khi dùng kiu LONG:  
- Mt table không thcha nhiu hơn mt ct kiu LONG.  
- Dliu kiu LONG không ththam gia vào các ràng buc toàn vn, ngoi  
trkim tra NULL và khác NULL.  
- Không thindex mt ct kiu LONG.  
- Không thtruyn tham skiu LONG cho hàm hoc thtc.  
- Các hàm không thtrvdliu kiu LONG.  
- Trong câu lnh SQL có truy cp các ct kiu LONG, thì vic cp nht hoc  
khóa các bng chcho phép trong cùng mt CSDL  
Ngoài ra, các ct kiu LONG không được tham gia trong các thành phn  
sau ca câu lnh SQL:  
- Các mnh đề WHERE, GROUP BY, ORDER BY, CONNECT BY hoc  
vi tác tDISTINCT trong câu lnh SELECT.  
- Các hàm sdng trong câu lnh SQL như SUBSTR, INSTR.  
- Trong danh sách la chn ca câu lnh SELECT có sdng mnh đề  
GROUP BY.  
- Trong danh sách la chn ca câu hi con, câu hi có sdng các toán tử  
tp hp.  
- Trong danh sách la chn ca câu lnh CREATE TABLE AS SELECT  
7. DATE  
PHN II- NGÔN NGSQL  
10  
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
Dùng để cha dliu ngày và thi gian. Mc dù kiu ngày và thi gian có  
thể được cha trong kiu CHAR và NUMBER.  
Vi giá trkiu DATE, nhng thông tin được lưu trgm thế k, năm,  
tháng, ngày, gi, phút, giây. ORACLE không cho phép gán giá trkiu ngày trc  
tiếp, để gán giá trkiu ngày, bn phi dùng TO_DATE để chuyn giá trkiu  
chui ký thoc kiu s.  
Nếu gán mt giá trkiu ngày mà không chthi gian thì thi gian mc  
định là 12 giờ đêm, Nếu gán giá trkiu ngày mà không chra ngày, thì ngày mc  
định là ngày đầu ca tháng. Hàm SYSDATE cho biết ngày và thi gian hthng.  
Tính toán đối vi kiu ngày:  
Đối vi dliu kiu ngày, bn có ththc hin các phép toán cng và tr.  
Ví d:  
- SYSDATE+1 ngày hôm sau  
- SYSDATE-7 cách đây mt tun  
- SYSDATE+(10/1440) mười phút sau  
- Ngày Julian: Là giá trscho biết sngày ktngà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  
Kiu RAW và LONG RAW dùng để cha các chui byte, các dliu nhị  
phân như hình nh, âm thanh. Các dliu kiu RAW chcó thgán hoc truy cp  
chkhông được thc hin các thao tác như đối vi chui ký t.  
Kiu RAW ging như kiu VARCHAR2 và kiu LONG RAW ging kiu  
LONG, chkhác nhau chORACLE tự động chuyn đổi các giá trkiu CHAR,  
VARCHAR2 và LONG gia tp hp ký tca CSDL và tp ký tca các ng  
dng.  
9. ROWID  
Mi mu tin trong CSDL có mt địa chcó kiu ROWID. ROWID gm  
block.row.file, trong đó:  
block : chui hhexa cho biết block cha row  
PHN II- NGÔN NGSQL  
11  
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
row : chui hhexa cho biết row trong block  
file : chui hhexa cho biết database file cha block  
Ví d:  
0000000F.0000.0002  
Row đầu tiên trong block 15 ca data file thhai.  
10. MLSLABEL  
Kiu MLSLABEL dùng để cha label dng nhphân mà ORACLE dùng để  
đảm bo hot động ca bn thân hthng.  
2.3.3 Các loi dliu sdng trong SQL SERVER  
Phn này sẽ được trình bày trong phn sau, khi hc vSQL SERVER 2000.  
2.4 Các loi ràng buc trong bng dliu .  
Các dng constraint gm:  
- NOT NULL  
- UNIQUE  
- PRIMARY KEY  
- FOREIGN KEY ( Referential )  
- CHECK  
2.4.1 NOT NULL- Không rng  
- Khi có mnh đề NOT NULL có trong định nghĩa ca mt ct thì ta bt  
buc thuc tính này phi có giá tr. Nếu ta không chthgì trong định nghĩa  
ca thuc tính thì nó có thcó hoc không có giá tr.  
CREATE TABLE NHANVIEN(  
MaNV NUMBER(10) NOT NULL,  
TenNV CHAR(30))  
2.4.2 UNIQUE-Duy nht  
- Chra ràng buc duy nht, các giá trca ct chtrong mnh đề UNIQUE  
trong các row ca table phi có giá trkhác bit. Giá trnull là cho phép nêu  
UNIQUE da trên mt ct. Ví d:  
CREATE TABLE NHANVIEN (  
MaNV NUMBER(10) NOT NULL,  
TenNV CHAR(30),  
DiachiNV CHAR(50)  
CONSTRAINT UNQ_Ten_Diachi UNIQUE(Ten,Diachi))  
PHN II- NGÔN NGSQL  
12  
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
2.4.3 PRIMARY KEY- Khoá chính  
- Chra ràng buc duy nht (ging UNIQUE), tuy nhiên khoá là dng khoá  
UNIQUE cp cao nht. Mt table chcó thcó mt PRIMARY KEY. Các  
giá trtrong PRIMARY KEY phi 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),  
)
Hoc ta có thviết câu lnh 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á ngoi  
Chra mi liên hràng buc tham chiếu gia bng này vi bng khác.  
Tkhoá ON DELETE CASCADE được chỉ định trong dng khoá này để  
chkhi dliu cha bxoá thì dliu con cũng tự động bxoá 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 bng DONVI và bng NHANVIEN có mi quan hcha – con  
(1_N). Thuc tính MaDV trong bng NHANVIEN(bng con) là khoá ngoi, được  
tham chiếu tthuc tính MaDV ca bng DONVI(bng cha)  
Ta to 2 bng như sau:  
PHN II- NGÔN NGSQL  
13  
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (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 buc kim tra giá trị  
Ràng buc CHECK được sdng để yêu cu các giá trtrong ct, hoc  
khuôn dng dliu trong ct phi theo mt quy tc nào đó. Trên mt ct có thcó  
nhiu ràng buc này. Để khai báo mt rang buc CHECK cho mt ct nào đó ta  
dùng cú pháp sau.  
Cú pháp:  
[CONSTRAINT constraint_name]  
CHECK (expression)  
Trong đó, expression là mt biu thc logic. Sau khi có ràng buc này, giá  
trnhp vào cho ct phi thomãn điu kin mi được chp nhn.  
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-Mc định  
Ràng buc DEFAULT được sdng để quy định giá trmc định cho mt  
ct. Giá trnày stự động gán cho ct nếu người sdng không nhp vào khi bổ  
sung bn ghi.  
Cú pháp:  
PHN II- NGÔN NGSQL  
14  
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (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 Sa đổi cu trúc  
Có thsa đổi cu trúc ca bng hin đang tn ti bng lnh ALTER.  
Chúng ta có ththêm mt thuc tính (ct) mi, thay đổi cu trúc ca mt thuc  
tính (ct ) đang có, bsung khoá, bsung ràng buc.  
Cú pháp tng 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 mt ràng buc CHECK  
ALTER TABLE DONVI  
ADD CONSTRAINT check_madv  
CHECK (MaDV LIKE ‘[0-9][0-9]’)  
Thêm mt thuc tính.  
Cú pháp:  
ALTER TABLE <Tên_bng>  
ADD COLUMN Tên_ct , Kiu_ct[(size)] )  
Ví d:  
ALTER TABLE DONVI  
PHN II- NGÔN NGSQL  
15  
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
ADD(GhiChu, VARCHAR(255))  
Chú ý: Trong mt sHQTCSDL ta cn phi thêm tkhoá COLUMN  
như sau:  
Cú pháp:  
ALTER TABLE <Tên_bng>  
ADD COLUMN Tên_ct , Kiu_ct[(size)] )  
Ví d:  
ALTER TABLE NHANVIEN  
ADD COLUMN GhiChu Text(50));  
Thay đổi kiu ca mt thuc tính.  
Cú pháp:  
ALTER TABLE <Tên_bng>  
ALTER (Tên_ct, Kiu_mi)  
Ví d:  
ALTER TABLE NHANVIEN  
ALTER(HoTen, VARCHAR(40))  
Chú ý: Trong mt sHQTCSDL ta cn phi thêm tkhoá COLUMN như  
sau:  
Cú pháp:  
ALTER TABLE <Tên_bng>  
ALTER COLUMN Tên_ct , Kiu_ct_mi[(size)]  
Ví d:  
ALTER TABLE NHANVIEN  
ALTER COLUMN GhiChu Memo  
Xóa mt thuc tính  
Cú pháp:  
ALTER TABLE <Tên_bng>  
DROP <Tên_thuc_tính>  
Ví d:  
ALTER TABLE NHANVIEN  
DROP GhiChu  
Chú ý: Trong mt sHQTCSDL ta cn phi thêm tkhoá COLUMN như  
sau:  
PHN II- NGÔN NGSQL  
16  
Chương 2. CÁC LNH ĐỊNH NGHĨA DLIU (DDL)  
Cú pháp:  
ALTER TABLE <Tên_bng>  
DROP COLUMN Tên_ct  
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 LNH QUN TRDLIU  
3.1 Thêm hàng (INSERT)  
Cú pháp:  
INSERT [INTO]<TableName> (Column1, Column2, …, Columnn)  
VALUES (Values1, Values2,…., Valuesn)  
Lnh này được dùng để xen thêm mt hoc nhiu dòng (bn ghi) mi vào  
mt bng. Dng đơn gin nht ca lnh này là thêm mi ln 1 dòng. Nó đòi hi  
phi nên tên ca bng, tên các thuc tính và giá trcn gán cho chúng. Nếu không  
nêu tên các thuc tính thì điu đó có nghĩa là tt ccác thuc tính trong bng đều  
cn được thêm giá trtheo thtttrái sang phi.  
Ví d1:  
Gista đã có cu trúc bng NHANVIEN(MaNV, TenNV, Diachi, Tuoi)  
- Thêm bn ghi mi có tt ccác trường cho bng NHANVIEN. Vì tt cả  
các thuc tính trong bng đều được thêm giá trnên ta không cn có danh sách các  
thuc tính ngay sau tên bng NHANVIEN.  
INSERT INTO NHANVIEN  
VALUES(‘DHTL05’,’Nguyn Công Thành’, ‘KhoaCNTT’,22 )  
- Thêm bn ghi mi vào bng, để tui không xác định:  
INSERT INTO DOCGIA(MaDG,TenDG,DiaChi)  
VALUES(‘DHTL06’,’Nguyn Phương Lan’, ‘Khoa May’ )  
- Ngoài ra chúng ta còn có thêm dliu cho bng tgiá trca bng khác:  
PHN II- NGÔN NGSQL  
17  
Chương 3. CÁC LNH QUN TRDLIU  
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>  
Lnh này gm 1 mnh đề DELETE FROM để chra tên gi ca bng được  
xét, và mt mnh để WHERE để chra các dòng cn phi xóa. Như vy, ta có thể  
cùng lúc xóa được nhiu dòng nếu dòng đó tha mãn điu kin. Mun xóa mi  
dòng ca mt bng thì không cn đưa vào mnh đề WHERE.  
Ví d:  
Xóa mt bn ghi (dòng) có MaDG=’DHTL01’ trong bng DOCGIA.  
DELETE FROM DOCGIA WHERE MaDG=’DHTL01’  
Xóa nhng độc giđịa chlà: 41NC có trong bng DOCGIA.  
DELETE FROM DOCGIA WHERE Diachi=’41NC’  
3.3 Sa đổi giá trca mt 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’  
PHN II- NGÔN NGSQL  
18  
Chương 4. NGÔN NGỮ ĐIU KHIN (DCL)  
4 Chương 4. NGÔN NGỮ ĐIU KHIN (DCL)  
Ngôn ngữ điu khin được sdng trong vic cp phát hay hubquyn  
ca người sdng.  
4.1 Lnh GRANT  
Câu lnh này dùng để cp phát quyn cho người sdng trên đối tượng Cơ  
sdliu hoc quyn thc thi các câu lnh SQL SERVER. Cú pháp có 2 dng  
như sau:  
Dng 1: Cp quyn đối vi câu lnh SQL  
GRANT ALL | statement [,...,statementN ]  
TO account [,...,accountN]  
Dng 2: Cp quyn đối vi các đối tượng trong cơ sdliu  
GRANT ALL | permission [,...,permissionN]  
ON table_name |view_name [(column1 [,...,columnN])]  
|ON stored_procedure  
TO account [,...,accountN]  
Trong đó:  
- ALL: là tkhoá được sdng khi mun cp phát tt ccác quyn cho  
người sdng.  
- Account: là tên tài khon đăng nhn hthng  
- Permission: là quyn cp phát cho người sdng trên đối tượng cơ sdữ  
liu:  
o Các quyn có thcp phát trên mt bng hoc mt View: Select,  
Insert, Delete, Update.  
o Các quyn có thcp phát trên ct ca bng hoc ca View: Select,  
Update  
o Quyn có thcp phát vi các thtc: EXCUTE(thc thi)  
- Statement: Là câu lnh được cp phát cho người sdng Các câu lnh có  
thcp phát là:  
o CREATE DATABASE  
o CREATE TABLE  
o CREATE VIEW  
o CREATE PROCEDURE  
PHN II- NGÔN NGSQL  
19  
Chương 4. NGÔN NGỮ ĐIU KHIN (DCL)  
o CREATE RULE  
o CREATE DEFAULT  
o BACKUP DATABASE  
o BACKUP LOG  
Ví d1: Câu lnh sau s3 cp quyn SELECT, UPDATE, INSERT trên  
các thuc tính (TenNV,DiaChi, Tuoi) ca bng NHANVIEN cho 2 người sdng  
phnhung, htvan.  
GRANT SELECT, UPDATE, INSERT  
ON NHANVIEN(TenNV,DiaChi, Tuoi)  
TO phnhung, htvan  
Ví d2:  
Câu lnh sau scp quyn to bng, to View và to thtc cho người  
dùng phnhung.  
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE  
TO phnhung  
4.2 Lnh REVOKE  
Lnh REVOKE được dùng để hubquyn đã được cp phát cho người sử  
dng. Câu lnh này cũng có 2 dng tương tnhư câu lnh GRANT.  
Dng 1: Huquyn thc hin câu lnh:  
REVOKE ALL | statement [,...,statementN]  
FROM account [,...,accountN]  
Dng  
2:  
Huỷ  
quyn  
thc  
hin  
các  
đối  
tượng:  
REVOKE ALL | permission [,...,permissionN]}  
ON table_name | view_name [(column [,...,columnN])]  
| stored_procedure  
FROM account [,...,accountN ]  
PHN II- NGÔN NGSQL  
20  
Tải về để xem bản đầy đủ
pdf 64 trang Thùy Anh 04/05/2022 7420
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