1. Khái niӋm SQL
- SQL (Structured Query Language – ngôn ngӳ hӓi có cҩu trúc) là công cө sӱ dөQJÿӇ tә chӭc, quҧn lý và truy xuҩt dӳ liӋXÿѭӧFOѭXWUӳ WURQJFiFFѫVӣ dӳ liӋu.
- SQL là mӝt hӋ thӕng ngôn ngӳ bao gӗm tұp các câu lӋnh sӱ dөQJÿӇ WѭѫQJWiFYӟLFѫVӣ dӳ liӋu quan hӋ.
- 64/ÿѭӧc sӱ dөQJÿӇ ÿLӅu khiӇn tҩt cҧ các chӭFQăQJPjPӝt hӋ quҧn trӏ FѫVӣ dӳ liӋu cung cҩSFKRQJѭӡi dùng bao gӗm:
• Ĉӏnh nghƭDGӳ liӋu: SQL cung cҩp khҧ QăQJÿӏnh nghƭDFiFFѫVӣ dӳ liӋu, các cҩu trúc OѭXWUӳ và tә chӭc dӳ liӋu cNJQJQKѭPӕi quan hӋ giӳa các thành phҫn dӳ liӋu.
• Truy xuҩt và thao tác dӳ liӋu: VӟL64/QJѭӡi dùng có thӇ dӉ dàng thӵc hiӋn các thao
tác truy xuҩt, bә sung, cұp nhұt và loҥi bӓ dӳ liӋXWURQJFiFFѫVӣ dӳ liӋu.
• ĈLӅu khiӇn truy cұp: SQL có thӇ ÿѭӧc sӱ dөQJÿӇ cҩp phát và kiӇm soát các thao tác cӫDQJѭӡi sӱ dөng trên dӳ liӋXÿҧm bҧo sӵ DQWRjQFKRFѫVӣ dӳ liӋu.
• Ĉҧm bҧo toàn vҽn dӳ liӋu64/ÿӏnh nghƭDFiFUàng buӝc toàn vҽQWURQJFѫVӣ dӳ liӋu nhӡ ÿyÿҧm bҧo tính hӧp lӋ và chính xác cӫa dӳ liӋXWUѭӟc các thao tác cұp nhұt cNJQJ QKѭFiFOӛi cӫa hӋ thӕng.
2. Vai trò cӫa SQL
- SQL không phҧi là mӝt hӋ quҧn trӏ FѫVӣ dӳ liӋu, do nó không thӇ tӗn tҥLÿӝc lұp. - SQL là mӝt phҫn cӫa hӋ quҧn trӏ FѫVӣ dӳ liӋu, nó xuҩt hiӋn trong các hӋ quҧn trӏ FѫVӣ dӳ liӋu vӟi vai trò ngôn ngӳ và là công cө giao tiӃp giӳDQJѭӡi sӱ dөng và hӋ quҧn trӏ FѫVӣ dӳ liӋu.
- SQL có nhӳng vai trò nhѭVDX
• SQL là ngôn ngͷ h͗LFyWtQKW˱˯QJWiF1Jѭӡi sӱ dөng có thӇ dӉ dàng thông qua các trình tiӋQtFKÿӇ gӣi các yêu cҫXGѭӟi dҥng các câu lӋQK64/ÿӃQFѫVӣ dӳ liӋu và nhұn kӃt quҧ trҧ vӅ tӯ Fѫsӣ dӳ liӋu.
• SQL là ngôn ngͷ l̵p trình c˯Vͧ dͷ li͏u: Các lұp trình viên có thӇ nhúng các câu lӋnh SQL vào trong các ngôn ngӳ lұp trình ÿӇ xây dӵQJQrQFiFFKѭѫQJWUình ӭng dөng giao tiӃp vӟLFѫVӣ dӳ liӋu.
• SQL là ngôn ngͷ qu̫n tr͓ F˯Vͧ dͷ li͏u: Thông TXD64/QJѭӡi quҧn trӏ FѫVӣ dӳ liӋu có thӇ quҧQOêÿѭӧFFѫ Vӣ dӳ liӋXÿӏnh nghƭDFiFFҩXWU~FOѭXWUӳ dӳ liӋXÿLӅu khiӇn truy cұSFѫVӣ dӳ liӋu, ...
• SQL là ngôn ngͷ cho các h͏ th͙ng khách/chͯ (client/server): Trong các hӋ thӕQJFѫ sӣ dӳ liӋu khách/chӫ64/ÿѭӧc sӱ dөQJQKѭOjF{QJFө ÿӇ giao tiӃp giӳa các trình ӭng dөng phía máy khách vӟi máy chӫ FѫVӣ dӳ liӋu.
• SQL là ngôn ngͷ truy c̵p dͷ li͏u trên Internet&KRÿӃn nay, hҫu hӃt các máy chӫ Web cNJQJQKѭFiFPi\FKӫ trên Internet sӱ dөng SQL vӟi vai trò là ngôn ngӳ ÿӇ WѭѫQJ tác vӟi dӳ liӋXWURQJFiFFѫVӣ dӳ liӋu.
• SQL là ngôn ngͷ F˯Vͧ dͷ li͏u phân tánĈӕi vӟi các hӋ quҧn trӏ FѫVӣ dӳ liӋu phân tán, mӛi mӝt hӋ thӕng sӱ dөQJ64/ÿӇ giao tiӃp vӟi các hӋ thӕng khác trên mҥng, gӣi và nhұn các yêu cҫu truy xuҩt dӳ liӋu vӟi nhau.
LѭXKjQKQӝi bӝ Trang 55 • SQL là ngôn ngͷ s͵ dͭng cho các c͝ng giao ti͇SF˯Vͧ dͷ li͏u: Trong mӝt hӋ thӕng
mҥng máy tính vӟi nhiӅu hӋ quҧn trӏ FѫVӣ dӳ liӋXNKiFQKDX64/WKѭӡQJÿѭӧc sӱ dөng QKѭOjPӝt chuҭn ngôn ngӳ ÿӇ giao tiӃp giӳa các hӋ quҧn trӏ FѫVӣ dӳ liӋu.
II. Tәng quan vӅ FѫVӣ dӳ liӋu (CSDL) quan hӋ 1. Mô hình dӳ liӋu quan hӋ
- CSDL quan hӋ là mӝt CSDL WURQJÿyWҩt cҧ dӳ liӋXÿѭӧc tә chӭc trong các bҧng (table) có mӕi quan hӋ vӟi nhau. Mӛi bҧng (table) bao gӗm các dòng (record/bҧn ghi/bӝ) và các cӝt (fieldWUѭӡng/thuӝc tính).
- Tóm lҥi, mӝt CSDL bao gӗm nhiӅu bҧng (table) có mӕi quan hӋ vӟi nhau (relationship). Ví dө:
2. Bҧng (Table)
Bҧng (table) bao gӗm các yӃu tӕ sau: - Tên cӫa bҧng: ÿѭӧF[iFÿӏnh duy nhҩt.
- Cҩu trúc cӫa bҧng: tұp hӧp các cӝt (field/WUѭӡng/thuӝc tính).
- Dӳ liӋu cӫa bҧng: tұp hӧp các dòng (record/bҧn ghi/bӝ) hiӋn có trong bҧng. Ví dө: Table DONVI
3. Khóa chính cӫa bҧng (Primary Key)
- Mӛi bҧng phҧi có mӝt cӝt (hoһc mӝt tұp các cӝt) mà giá trӏ dӳ liӋu cӫDQy[iFÿӏnh duy nhҩt mӝt dòng trong tұp hӧp các dòng trong bҧng.
- Mӝt cӝt (hoһc mӝt tұp các cӝt) có tính chҩt này gӑi là khóa chính cӫa bҧng (Primary Key).
LѭXKjQKQӝi bӝ Trang 56 (có khóa chính là MADONVI)
4. Mӕi quan hӋ (Relationship) và khóa ngoҥi (Foreign Key)
- Mӕi quan hӋ (Relationship) ÿѭӧc thӇ hiӋn thông qua ràng buӝc giá tr͓ dͷ li͏u xṷt hi͏n
ͧ b̫ng này phҧi có xṷt hi͏QWU˱ͣc ͧ m͡t b̫ng khác.
- Mӝt cӝt (hoһc tұp hӧp các cӝWILHOGWUѭӡng/thuӝc tính) trong mӝt bҧng mà giá trӏ cӫa QyÿѭӧF[iFÿӏnh tӯ khóa chính (Primary Key) cӫa mӝt bҧQJNKiFÿѭӧc gӑi là khóa ngoҥi (Foreign Key).
5. 6ѫOѭӧc vӅ câu lӋnh SQL
Câu lӋnh ChӭFQăQJ
Thao tác dͷ li͏u
SELECT Truy xuҩt dӳ liӋu INSERT Bә sung dӳ liӋu UPDATE Cұp nhұt dӳ liӋu
DELETE Xóa dӳ liӋu
TRUNCATE Xóa toàn bӝ dӳ liӋu trong bҧng
Ĉ͓nh nghƭDGͷ li͏u
CREATE TABLE Tҥo bҧng DROP TABLE Xóa bҧng
ALTER TABLE Sӱa cҩu trúc bҧng
CREATE FUNCTION TҥRKjPGRQJѭӡi sӱ dөQJÿӏnh nghƭD ALTER FUNCTION SӱDÿәi hàm
LѭXKjQKQӝi bӝ Trang 57 CREATE TRIGGER Tҥo trigger
ALTER TRIGGER Sӱa trigger DROP TRIGGER Xóa trigger
6. Quy tҳc sӱ dөng tên trong SQL
- Trong câu lӋnh SQL, nӃu ta cҫn chӍ ÿӃn mӝt bҧng do m͡WQJ˱ͥi dùng khác sͧ hͷu (hiӇn nhiên là phҧLÿѭӧc phép) thì tên cͯa b̫ng phҧLÿѭӧc vi͇t sau tên cͯDQJ˱ͥi sͧ hͷu và phân
cách vӟLWrQQJѭӡi sӣ hӳu bͧi ḓu ch̭m theo công thӭc: WrQBQJѬӟi_sӡ_hӱu.tên_bҥng - Trong câu lӋnh SQL, nӃu có sӱ dөng tӯ hai c͡t trӣ lên có cùng tên trong các bҧng khác nhau thì bҳt buӝc phҧi chӍ ÿӏnh thêm tên b̫QJWU˱ͣc tên c͡t; tên b̫ng và tên c͡t ÿѭӧc phân
cách nhau bͧi ḓu ch̭m theo công thӭc: tên_bҥng.tên_cӛt
7. KiӇu dӳ liӋu
Tên kiӇu Mô tҧ
CHAR (n) KiӇu chuӛi vӟLÿӝ dài cӕ ÿӏnh
NCHAR (n) KiӃu chuӛi vӟLÿӝ dài cӕ ÿӏnh hӛ trӧ UNICODE VARCHAR (n) KiӇu chuӛi vӟLÿӝ dài chính xác
NVARCHAR (n) KiӇu chuӛi vӟLÿӝ dài chính xác hӛ trӧ UNICODE INTEGER Sӕ nguyên có giá trӏ tӯ -231 ÿӃn 231 – 1
INT 1KѭNLӇu Integer
TINYTINT Sӕ nguyên có giá trӏ tӯ ÿӃn 255 SMALLINT Sӕ nguyên có giá trӏ tӯ -ÿӃn 215 – 1 BIGINT Sӕ nguyên có giá trӏ tӯ -263 ÿӃn 263 – 1 NUMERIC (p,s) KiӇu sӕ vӟLÿӝ chính xác cӕ ÿӏnh DECIMAL (p,s) 7ѭѫQJWӵ kiӇu Numeric
FLOAT Sӕ thӵc có giá trӏ tӯ -(ÿӃn 1.79E+308 REAL Sӕ thӵc có giá trӏ tӯ -(ÿӃn 3.40E + 38 MONEY KiӇu tiӅn tӋ
BIT KiӇu bit (có giá trӏ 0 hoһc 1)
DATETIME KiӇu ngày giӡ FKtQK[iFÿӃn phҫQWUăPFӫa giây) SMALLDATETIME KiӇu ngày giӡ FKtQK[iFÿӃn phút)
BINARY Dӳ liӋu nhӏ phân vӟLÿӝ dài cӕ ÿӏnh (tӕLÿDE\WHV VARBINARY Dӳ liӋu nhӏ phân vӟLÿӝ dài chính xác (tӕLÿDE\WHV IMAGE Dӳ liӋu nhӏ phân vӟLÿӝ dài chính xác (<= 2,147,483,647 bytes) TEXT Dӳ liӋu kiӃu chuӛi vӟLÿӝ dài lӟn (tӕLÿDNêWӵ) NTEXT Dӳ liӋu kiӃu chuӛi vӟLÿӝ dài lӟn và hӛ trӧ UNICODE (tӕLÿD
1,073,741,823 ký tӵ) 8. Toán tӱ Toán tӱ Ý nghƭD a) Logic AND / OR Và / Hoһc b) So sánh = Bҵng > LӟQKѫQ < Nhӓ KѫQ >= LӟQKѫQKRһc bҵng
LѭXKjQKQӝi bӝ Trang 58 <= Nhӓ KѫQKRһc bҵng <> Khác !> Không lӟQKѫQ !< Không nhӓ KѫQ c) Danh sách IN Nҵm trong danh sách NOT IN Không nҵm trong danh sách
d) Giͣi h̩n dͷ li͏u
BETWEEN Giá_trӏ BETWEEN a AND b nghƭDOà (a *LiBWUӏ E
NOT BETWEEN Giá_trӏ NOT BETWEEN a AND b nghƭDOà (Giá_trӏ < a) AND (Giá_trӏ > b)
LIKE Mô tҧ khuôn dҥng dӳ liӋu cҫn tìm kiӃm có sӱ dөng ký tӵ ÿҥi diӋn:
% Chuӛi ký tӵ bҩt kǤ _ Mӝt ký tӵ bҩt kǤ
[] Ký tӵ bҩt kǤ trong giӟi hҥQÿѭӧc chӍ ÿӏnh
[^] Ký tӵ bҩt kǤ không nҵm trong giӟi hҥQÿѭӧc chӍ ÿӏnh
III. Table (Bҧng)
* Quy tҳc khi viӃt câu lӋnh SQL:
- Các câu lӋnh SQL không phân biӋt chӳ hoa và chӳ WKѭӡQJ7X\QKLrQÿӇ dӉ ÿӑc nên viӃt hoa tӯ khóa trong mӋQKÿӅ.
- Câu lӋnh SQL có thӇ viӃt trên mӝt dòng hay nhiӅu dòng. NKѭQJQrQYLӃt mӛi dòng mӝt mӋQKÿӅ.
- Không tách tӯ khóa trên nhiӅu dòng, không viӃt tҳt tӯ khóa. - Câu lӋnh SQL kӃt thúc bҵng dҩu chҩm phҭy (;)
1. Tҥo bҧng
Cú pháp:
CREATE TABLE tên_bҧng (
tên_cӛt thuӛc_tính_cӛt các_ràng_buӛc
[ , ...
, tên_cӛt_n thuӛc_tính_cӛt_n các_ràng_buӛc_cӛt_n ]
[ , các_ràng_buӛc_trên_bҥng ] )
7URQJÿy
tên_bҥng Tên cӫa bҧng cҫn tҥo (<=128 ký tӵ)
tên_cӛt Tên cӫa cӝt (field / WUѭӡng) cҫQÿӏnh nghƭD
thuӛc_tính_cӛt Gӗm:
• KiӇu dӳ liӋu cӫa cӝt (field). • Giá trӏ mһFÿӏnh cӫa cӝt (filed).
• IDENTITY - giá trӏ tӵ ÿӝQJWăQJ, dùng vӟi field kiӇu sӕ. • NULL / NOT NULL
các_ràng_buӛc Các ràng buӝFÿѭӧc sӱ dөng trên mӛi cӝt (field) hoһc trên bҧng.
LѭXKjQKQӝi bӝ Trang 59 Tҥo bҧng NHANVIEN gӗm các field MANV (mã nhân viên), HOTEN (hӑ và tên),
NGAYSINH (ngày sinh cӫa nhân viên), ',$&+,ÿӏa chӍ cӫa nhân viên), HSLUONG (hӋ sӕ OѭѫQJ, MADONVI (mã ÿѫQYӏ).
+ѭӟng dүn:
CREATE TABLE nhanvien (
manv NVARCHAR(10) NOT NULL, hoten NVARCHAR(50) NOT NULL, ngaysinh DATE NULL, diachi NVARCHAR(100) NULL, dienthoai NVARCHAR(10) NULL,
hsluong DECIMAL(3,2) DEFAULT (1.92) madonvi NVARCHAR(10) NOT NULL )
2. Tҥo ràng buӝc
a. Ràng buӝc CHECK:
- ChӍ ÿӏQKÿLӅu kiӋn hӧp lӋ ÿӕi vӟi dӳ liӋu khi có sӵ WKD\ÿәi dӳ liӋu trên bҧng. - Dùng vӟi các lӋnh INSERT, UPDATE.
Cú pháp:
[CONSTRAINT tên_ràng_buӝc] &+(&.ÿLӅu_kiӋn)
Ví dө 8.2:
Tҥo bҧQJ1+$19,(1QKѭYtGө WURQJÿy - NGAYSINH < '1/1/1990'
- DIENTHOAI cӫa nhân viên là mӝt chuӛi 6 chӳ sӕ. +ѭӟng dүn:
CREATE TABLE nhanvien (
manv NVARCHAR(10) NOT NULL, hoten NVARCHAR(50) NOT NULL,
ngaysinh DATE NULL
CONSTRAINT CK_nhanvien_ngaysinh CHECK (ngaysinh < '1/1/1990'),
diachi NVARCHAR(100) NULL, dienthoai NVARCHAR(10) NULL, CONSTRAINT CK_nhanvien_dienthoai
CHECK (dienthoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]____') hsluong DECIMAL(3,2) DEFAULT (1.92)
madonvi NVARCHAR(10) NOT NULL )
b. Ràng buӝc PRIMARY KEY:
- ChӍ ÿӏnh khoá chính cӫa bҧng. Cú pháp:
[CONSTRAINT tên_ràng_buӝc] PRIMARY KEY [(danh_sách_cӝt)] /ѭX ý:
• Mӛi bҧng có nhiӅu nhҩt mӝt ràng buӝc PRIMARY KEY.
LѭXKjQKQӝi bӝ Trang 60
Ví dө 8.3:
Tҥo bҧng 1+$19,(1QKѭYtGө 8.2, vӟi khoá chính là MANV +ѭӟng dүn:
CREATE TABLE nhanvien (
manv NVARCHAR(10) NOT NULL, hoten NVARCHAR(50) NOT NULL,
ngaysinh DATE NULL
CONSTRAINT CK_nhanvien_ngaysinh CHECK (ngaysinh < '1/1/1990'),
diachi NVARCHAR(100) NULL, dienthoai NVARCHAR(10) NULL, CONSTRAINT CK_nhanvien_dienthoai
CHECK (dienthoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]____') hsluong DECIMAL(3,2) DEFAULT (1.92)
madonvi NVARCHAR(10) NOT NULL, CONSTRAINT PK_nhanvien_manv PRIMARY KEY ) c. Ràng buӝc UNIQUE: - ChӍ ÿӏnh khoá phө cho bҧng. Cú pháp: [CONSTRAINT tên_ràng_buӝc] UNIQUE [(danh_sách_cӝt)] Ví dө 8.4:
Tҥo bҧQJ1+$19,(1QKѭYtGө WURQJÿykhông cho phép các nhân viên khác nhau ÿѭӧFWUQJÿLӋn thoҥi vӟi nhau.
+ѭӟng dүn:
CREATE TABLE nhanvien (
manv NVARCHAR(10) NOT NULL, hoten NVARCHAR(50) NOT NULL,
ngaysinh DATE NULL
CONSTRAINT CK_nhanvien_ngaysinh CHECK (ngaysinh < '1/1/1990'),
diachi NVARCHAR(100) NULL, dienthoai NVARCHAR(10) NULL, CONSTRAINT CK_nhanvien_dienthoai
CHECK (dienthoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]____') hsluong DECIMAL(3,2) DEFAULT (1.92)
madonvi NVARCHAR(10) NOT NULL, CONSTRAINT PK_nhanvien_manv PRIMARY KEY,
CONSTRAINT UNIQUE_nhanvien_dienthoai UNIQUE(dienthoai) )
d. Ràng buӝc FOREIGN KEY (khóa ngoҥi)
- Mӝt cӝt (hay mӝt tұp các cӝt) trong mӝt bҧQJ ÿѭӧc gӑi là khoá ngoҥi (ràng buӝc FOREIGN KEY) nӃu giá trӏ cӫD Qy ÿѭӧF [iF ÿӏnh tӯ khoá chính (PRIMARY KEY) hoһc khoá phө (UNIQUE) cӫa mӝt bҧng dӳ liӋu khác.
Cú pháp:
LѭXKjQKQӝi bӝ Trang 61 FOREIGN KEY [(danh_sách_cӝt)]
REFERENCES tên_bҧng_tham_chiӃu(danh_sách_cӝt_tham_chiӃu) [ON DELETE CASCADE | NO ACTION | SET NULL | SET DEFAULT] [ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT] 7URQJÿy
· CASCADE: Tӵ ÿӝng xoá (cұp nhұt) nӃu bҧQJKLÿѭӧc tham chiӃu bӏ xoá (cұp nhұt). · NO ACTION (MһFÿӏnh): NӃu bҧn ghi trong bҧng tham chiӃXÿDQJÿѭӧc tham chiӃu
bӣi mӝt bҧn ghi bҩt kǤ trong bҧQJÿѭӧFÿӏnh nghƭDWKì bàn ghi ÿyNK{QJÿѭӧc phép xoá hoһc cұp nhұWÿӕi vӟi cӝWÿѭӧc tham chiӃu).
· SET NULL: Cұp nhұt lҥi khoá ngoài cӫa bҧn ghi thành giá trӏ NULL (nӃu cӝt cho phép nhұn giá trӏ NULL).
· SET DEFAULT: Cұp nhұt lҥi khoá ngoài cӫa bҧn ghi nhұn giá trӏ mһFÿӏnh (nӃu cӝt FyTXLÿӏnh giá trӏ mһFÿӏnh).
Ví dө 8.5:
Tҥo bҧQJ 1+$19,(1 QKѭ Yt Gө WURQJ ÿykhoá ngoài trên cӝt MADONVI (bҧng DONVI). Giҧ sӱ rҵng bҧng DONVI ÿã ÿѭӧFÿӏnh nghƭD.
+ѭӟng dүn:
CREATE TABLE nhanvien (
manv NVARCHAR(10) NOT NULL, hoten NVARCHAR(50) NOT NULL,
ngaysinh DATE NULL
CONSTRAINT CK_nhanvien_ngaysinh CHECK (ngaysinh < '1/1/1990'),
diachi NVARCHAR(100) NULL, dienthoai NVARCHAR(10) NULL, CONSTRAINT CK_nhanvien_dienthoai
CHECK (dienthoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]____') hsluong DECIMAL(3,2) DEFAULT (1.92)
madonvi NVARCHAR(10) NOT NULL, CONSTRAINT PK_nhanvien_manv PRIMARY KEY,
CONSTRAINT UNIQUE_nhanvien_dienthoai UNIQUE(dienthoai) , CONSTRAINT FK_nhanvien_madonvi FOREIGN KEY(madonvi) REFERENCES donvi(madonvi) ON DELETE CASCADE ON UPDATE CASCADE ) 3. Sӱa cҩu trúc bҧng a. Cú pháp
ALTER TABLE tên_bҧng $''ÿӏnh_nghƭDBFӝt |
ALTER COLUMN tên_cӝt kiӇu_dӳ_liêu [NULL | NOT NULL] | DROP COLUMN tên_cӝt |
ADD CONSTRAINT tên_ràng_buӝc ÿӏnh_nghƭDBUàng_buӝc | DROP CONSTRAINT tên_ràng_buӝc
LѭXKjQKQӝi bӝ Trang 62 Bә sung vào bҧng DONVI ӣ ví dө 8.5, cӝt GHICHU
+ѭӟng dүn:
ALTER TABLE nhanvien ADD
ghichu NVARCHAR(50)
4. Xóa bҧng
a. Cú pháp
DROP TABLE tên_bҧng
b. Ví dө 8.7:
Xoá bҧng DONVI ra khӓi CSDL.
/ѭXý: Cӝt MADONVI trong bҧQJ '219, ÿDQJ ÿѭӧc tham chiӃu bӣi khoá ngoài FK_nhanvien_madonvi trong bҧng NHANVIEN.
+ѭӟng dүn:
- Xoá bӓ ràng buӝc FK_nhanvien_madonvi khӓi bҧng NHANVIEN ALTER TABLE nhanvien
DROP CONSTRAINT FK_nhanvien_madonvi - Xoá bҧng DONVI:
DROP TABLE donvi
Thӵc hành
1. KhӣLÿӝng SQL SERVER 2008:
a. Start à All programs à Microsoft SQL Server 2008 à SQL Server Management Studio b. Chͱng thc: chӑn 1 trong 2 chӃ ÿӝ
v Là cӫa Windows
v Là cӫa SQL Server
c. Chӑn Connect 2. Tҥo database:
Ӣ cӱa sә Object Explorer, click chuӝt phҧi vào Database VDXÿyFKӑn New database - Database nane: banhang
- Chӑn Ok
3. Tҥo cҩu trúc table: a. Tҥo table Nhanvien
LѭXKjQKQӝi bӝ Trang 63 * Ӣ cӱa sә Object Explorer:
- Nhҳp dҩXWUѭӟc database banhang (thành dҩu -) - Click chuӝt phҧi vào Table VDXÿyFKӑn New table
- Khai báo cҩu trúc: Ví dͭ 8.1
- /ѭXQKҳp
b. Tҥo table Donvi : tӵ thӵc hiӋn. 4. Tҥo ràng buӝc cho table
* Chӑn table Nhanvien
a. Ràng buӝc CHECK
Ví dͭ 8.2
* Ӣ cӱa sә hiӇn thӏ cҩu trúc cӫa table Nhanvien
- Click chuӝt phҧi vào field ngaysinh, chӑn CheckConstraints … - Nhҳp Add
+ (Name): gõ CK_nhanvien_ngaysinh Expression: gõ ([ngaysinh] < '1/1/1990')
- Nhҳp Add (lҫn 2)
+ (Name): gõ CK_nhanvien_dienthoai
+ Expression: gõ (dienthoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]____')
- Nhҳp Close
* Chӑn table Donvi: tӵ thӵc hiӋn cho field dienthoai.
b. Ràng buӝc PRIMARY KEY
* Chӑn table Nhanvien
Ví dͭ 8.3
* Ӣ cӱa sә hiӇn thӏ cҩu trúc cӫa table Nhanvien
- Click phҧi chuӝt vào field manv và chӑn Set Primary Key * Cho table Donvi: tӵ thӵc hiӋn cho field madonvi .
c. Ràng buӝc UNIQUE
* Chӑn table Nhanvien
Ví dͭ 8.4
* Ӣ cӱa sә hiӇn thӏ cҩu trúc cӫa table Nhanvien
- Click phҧi chuӝt vào field dienthoai và chӑn Indexes / Keys… - Nhҳp Add
+ (Name): gõ UNIQUE_nhanvien_dienthoai + Columns: dienthoai (ASC)
+ Type: Unique Key - Nhҳp Close
5. Tҥo quan hӋ (relationship) cho các table: Donvi, Nhanvien
Ví dͭ 8.5
* Ӣ cӱa sә Object Explorer
- Click chuӝt phҧi vào Database Diagrams VDXÿyFKӑn New database Diagram
- Chӑn các table tham gia tҥo quan hӋ, nhҳp Close.
- Rê field madonvi (tӯ table nhanvien) thҧ vào field madonvi (cӫa table donvi). - Khai báo:
Primary key table Foreign key table
Donvi Nhanvien madonvi madonvi
LѭXKjQKQӝi bӝ Trang 64 6. Thêm field GHICHU vào table DONVI
Ví dͭ 8.6
* Ӣ cӱa sә hiӇn thӏ cҩu trúc cӫa table Donvi
- Khai báo (ӣ cuӕi) thêm field: ghichu, nvarchar(50), NULL 7. Nhұp dӳ liӋu cho các table: Donvi, Nhanvien
* Ӣ cӱa sә Object Explorer:
- Click chuӝt phҧi vào dbo.donvi / dbo.nhanvien VDXÿyFKӑn Edit top 200 Rows
- Nhұp dӳ liӋu
LѭXKjQKQӝi bӝ Trang 65
Bài 9: CÁC CÂU LӊNH TRUY VҨN
* Xét CSDL banhang gӗm các table:
NHANVIEN, DONVI, MATHANG, NHATKYBANHANG
- Cҩu trúc:
- Dӳ liӋu:
Bҧng NHANVIEN
LѭXKjQKQӝi bӝ Trang 66
IV. Các câu lӋnh truy vҩn 1. Câu lӋnh SELECT
Công dөng:
- Chӑn các field tӯ bҧng. Cú pháp:
SELECT [ALL | DISTINCT][TOP n] danh_sách_chӑn [INTO tên_bҧng_mӟi]
FROM danh_sách_bҧng [ | khung_nhìn] [WHERE ÿLӅu_kiӋn]
[GROUP BY danh_sách_cӝt] [HAVING ÿLӅu_kiӋn]
[ORDER BY cӝt_sҳp_xӃp]
[COMPUTE danh_sách_hàm_gӝp [BY danh_sách_cӝt]]
Chú ý: Các thành phҫn trong câu lӋnh SELECT phҧLÿѭӧc sӱ dөQJWKHRÿ~QJWKӭ tӵ trên.
c. Danh sách chӑn trong câu lӋnh SELECT
- Chӑn tҩt cҧ các field Ví dө 9.1a:
Câu lӋQKVDXÿk\FKRELӃt thông tin cӫa các nhân viên trong bҧng NHANVIEN. SELECT * FROM nhanvien n1
- Ĉәi tên các cӝt trong kӃt quҧ Ví dө 9.1b:
Câu lӋQKVDXÿk\FKRELӃt HOTEN (hӑ WrQÿѭӧFÿәi thành H͕ và Tên',$&+,ÿӏa chӍ) ÿѭӧFÿәi thành Ĉӏa ChӍ cӫa các nhân viên trong bҧng NHANVIEN.
SELECT 'Hӑ và Tên' = hoten, 'Ĉӏa ChӍ' = diachi FROM nhanvien
Hoһc:
SELECT hoten 'Hӑ và Tên', diachi 'Ĉӏa ChӍ' FROM nhanvien
- Sӱ dөng cҩXWU~F&$6(ÿӇ ÿәi tên các cӝt trong kӃt quҧ Ví dө 9.1c:
Câu lӋQKVDXÿk\FKRELӃt HOTEN (hӑ tên), HSLUONG (hӋ sӕ OѭѫQJYj[Ӄp loҥLOѭѫQJ cӫa các nhân viên trong bҧng NHANVIEN theo HSLUONG (hӋ sӕ OѭѫQJ
SELECT 'Hӑ và Tên'= hoten, 'HӋ sӕ OѭѫQJ' = hsluong, 'HӋ sӕ OѭѫQJ' = CASE
WHEN hsluong = NULL THEN '.K{QJ[iFÿӏnh' WHEN hsluong <= 1.92 THEN '/ѭѫQJWKҩp' WHEN hsluong <= 3.11 THEN '/ѭѫQJWUXQJEình' WHEN hsluong <= 5.2 THEN '/ѭѫQJFDR' ELSE '/ѭѫQg rҩt cao'
END FROM nhanvien
- Thêm chuӛi ký tӵ trong kӃt quҧ Ví dө 9.1d:
Câu lӋQK VDX ÿk\ VӁ cho thêm chuӛi 'HӋ sӕ OѭѫQJ Oj' ӣ WUѭӟc cӝt HSLUONG (hӋ sӕ OѭѫQJWURQJWӯng dòng kӃt quҧ.
SELECT 'Hӑ và Tên' = hoten, 'HӋ sӕ OѭѫQJOj', 'HӋ sӕ OѭѫQJ' = hsluong FROM nhanvien
LѭXKjQKQӝi bӝ Trang 67
Ví dө 9.1e:
Câu lӋQKVDXÿk\VӁ cho HOTEN (hӑ WrQYj/821*OѭѫQJFӫa nhân viên theo công thӭc LUONG = HSLUONG * 730000.
SELECT 'Hӑ và Tên' = hoten, '/ѭѫQJ' = hsluong * 730000 FROM nhanvien
- Tӯ NKyD',67,1&7GQJÿӇ loҥi bӓ nhӳng dòng dӳ liӋu có kӃt quҧ giӕng nhau Ví dө 9.1f:
Câu lӋnh sau sӁ cho các giá trӏ hsluong khác nhau trong bҧng NHANVIEN SELECT hsluong
FROM nhanvien
- Tҥo bҧng mӟi bҵng câu lӋnh SELECT … INTO Ví dө 9.1g:
Câu lӋnh sau sӁ tҥo bҧng có tên NHANVIEN_LUU gӗm các field HOTEN (hӑ tên), ',$&+,ÿӏa chӍ) cӫa các nhân viên có HSLUONG > 1.92 tӯ bҧng NHANVIEN.
SELECT hoten, diachi INTO nhanvien_luu FROM nhanvien
WHERE hsluong > 1.92
- Sҳp xӃp kӃt quҧ $6&WăQJ'(6&JLҧm) bҵng ORDER BY