Ngän ngỉỵ SQL
Chỉång 3:
CẠC NGÄN NGỈỴ THAO TẠC DỈỴ LIÃÛU 3.1 Ngän ngỉỵ truy váún dỉỵ liãûu SQL
Trong mủc ny trçnh by ngän ngỉỵ dỉỵ liãûu (Structered Query Language), SQL l ngän
ngỉỵ con dỉỵ liãûu âỉc xạc nháûn l ráút mảnh , phäø dủng v lải dãù sỉí dủng . SQL l ngän ngỉỵ
phi th tủc, chøn mỉûc v âiãøn hçnh. Do váûy hiãûn nay ráút nhiãưu sn pháøm pháưn mãưm âãưu
âỉåüc ci âàût SQL nhỉ : Oracle, DB2,
Trong pháưn ny s trçnh by cạc kh nàng ca ngän ngỉỵ SQL. Phẹp toạn cå bn
trong SQL l phẹp ạnh xả âỉåüc miãu t bàòng khäúi lãûnh SELECT - FROM - WHERE. Cạc
mãûnh âãư ca ngän ngỉỵ SQL s âỉåüc trçnh by chi tiãút bàòng vê dủ.
Cạc thût ngỉỵ trong Cå Såí Dỉỵ Liãûu quan hãû nhỉ quan hãû , thüc tênh , bäü, âỉåüc
thay thãú bàòng cạc thût ngỉỵ nhỉ : Bng( Table), cäüt(colum), bn ghi(Record) hồûc
hng(Row) trong SQL.
Chụng ta s xem cạc chỉïc nàng cå bn ca mäüt hãû qun trë Cå Såí Dỉỵ Liãûu nhỉ
cung cáúp ngän ngỉỵ âënh nghéa dỉỵ liãûu (DDM), Ngän ngỉỵ thao tạc dỉỵ liãûu(DML) , tçm kiãúm
v bo vãû dỉỵ liãûu âỉåüc thãø hiãûn trong ngän ngỉỵ SQL nhỉ thãú no.
1. Âënh nghéa dỉỵ liãûu
Trong SQL cho phẹp ngỉåìi sỉí dủng tảo cạc dỉỵ liãûu nhỉ Bng(table), Khung nhçn(View),
v cạc táûp chè säú(Index)
* Lãûnh tảo bng
Cụ phạp: CREAT TABLE Ten_Bang(Atr1 Type [NOT NULL], Atr2 Type [NOT
NULL], )
Trong âọ Ten_Bang: tãn ca table tảo ra; tãn bng l xáu k tỉû báút k khäng cọ k hiãûu
träúng v khäng trng våïi tỉì khọa
Atr1, Atr2 : Tãn cạc thüc tênh (Cạc cäüt ca bng)
Type: Kiãøu dỉỵ liãûu cho thüc tênh. Mäüt säú loải dỉỵ liãûu thỉåìng dng nhỉ:
integer
(P# INTEGER NOT NULL, PNAME VARCHAR(10) NOT NULL, WEIGHT INTEGER
NOT NULL, COLOR VARCHAR(10) NOT NULL, CITY VARCHAR(30) NOTNULL)
- Tảo bng SP:
CREATE TABLE SP
(S# INTEGER NOT NULL, P# INTEGER NOT NULL, QTY INTEGER,SDATE DATE
NOT NULL, PRICE DECIMAL(8,2)).
Vo dỉỵ liãûu :
Cọ ba cạch âãø vo dỉỵ liãûu cho bng nhỉ sau
INSERT INTO S(S#,SNAME,AGES,CITY)
VALUE(1,’Thanh Huong’, 30,’ TP Ho Chi Minh’)
Nãúu vë trê ca cạc cäüt trong bng cäú âënh, ta cọ thãø viãút
INSERT INTO S
VALUE(1,’Thanh Huong’, 30,’ TP Ho Chi Minh’)
Ngỉåìi vo dỉỵ liãûu cọ thãø qn vë trê cạc cäüt, khi âọ ta cọ thãø biãøu diãùn nhỉ sau:
INSERT INTO S(S#,AGES,CITY, SNAME)
VALUE(1, 30, ’ TP Ho Chi Minh’, ’Thanh Huong’)
2. Tçm Kiãúm dỉỵ liãûu Trong SQL
Âáy l chỉïc nàng cå bn nháút ca SQL, cho phẹp ngỉåìi sỉí dủng tçm kiãúm cạc thäng tin
trãn Cå Såí Dỉỵ Liãûu våïi Cáu lãûnh SELECT FROM WHERE
Cụ phạp:
SELECT [*| DISTINCT] Danh sạch cạc cäüt âỉa ra
FROM Tãn_Bng/Tãn_View
[WHERE biãøu thỉïc âiãưu kiãûn]
[GROUP BY Danh sạch cạc cäüt]
[HAVING biãøu thỉïc âiãưu kiãûn]
[ORDER BY Tãn_cäüt [ASC/DESC]
Gii thêch cạc tham säú bàòng cạc vê dủ
Ngän ngỉỵ SQL
FROM SP
WHERE ‘94-04-24’ - SDATE =10
Tçm kiãúm sỉí dủng IN v BETWEEN
Tçm nhỉỵng màût hng â cung cáúp cọ giạ tỉì 1000 âãún 2000
SELECT P#
FROM SP
WHERE PRICE BETWEEN 1000 AND 2000
Tçm m säú nhỉỵng nh cung cáúp â cung cáúp êt nháút mäüt trong cạc màût hng P1,P2,P3
Ngọn ngổợ SQL
SELECT S#
FROM SP
WHERE P# IN (P1,P2,P3)
CAẽC HAèM THặ VIN
Cuợng giọỳng nhổ caùc ngọn ngổợ Cồ Sồớ Dổợ Lióỷu khaùc, Trong SQL coù caùc haỡm mỏựu gọửm
COUNT, MAX, MIN, SUM, AVG. Rióng haỡm COUNT khi coù õọỳi sọỳ laỡ * coù nghộa laỡ
õóỳm sọỳ baớng ghi thoớa maợn yóu cỏửu tỗm kióỳm maỡ khọng quan tỏm õóỳn bỏỳt kyỡ cọỹt naỡo.
Vờ du
Cho bióỳt sọỳ lỏửn mỷt haỡng P2 õaợ õổồỹc cung cỏỳp
SELECT COUNT(*)
FROM SP
WHERE P#=P2
Tỗm hióỷu sọỳ mỷt haỡng P1 baùn mọỹt lỏửn nhióửu nhỏỳt vaỡ mọỹt lỏửn ờt nhỏỳt cuớa haợng S1
SELECT MAX(QTY) - MIN(QTY)
FROM SP
WHERE S#=S1 AND P#=P1
Tỗm kióỳm nhồỡ móỷnh õóử GROUPE BY
Tỗm maợ sọỳ nhổợng mỷt haỡng maỡ mọựi nhaỡ cung cỏỳp õaợ cung cỏỳp cho khaùch haỡng.
SELECT S#,P#
trong vê dủ trãn ta cọ thãø viãút
SELECT PNAME,P#
FROM P
WHERE COLOUR = ‘RED’
ORDER BY 2 ASC
Tçm kiãúm våïi cáu hi phỉïc tảp
Trong pháưn ny s trçnh by viãûc tçm kiãúm dỉỵ liãûu trãn nhiãưu bng thäng qua phẹp kãút näúi
hồûc viãûc sỉí dủng cạc ạnh xả läưng.
Kh nàng kãút näúi dỉỵ liãûu
Trong phẹp kãút näúi, cạc cäüt tham gia kãút näúi phi cọ miãưn trë l so sạnh âỉåüc våïi nhau. Tãn
cäüt ca cạc bng khạc nhau cọ thãø viãút tỉåìng minh qua tãn bng.
Vê Dủ:
Våïi mäùi màût hng âỉåüc cung cáúp , hy cho biãút m säú ca màût hng v âëa chè ca hng
â cung cáúp màût hng âọ.
SELECT DISTINCT P#, CITY
FROM SP, S
WHERE SP.S# =S.S#
nh xả läưng
Ta cọ thãø sỉí dủng nhỉỵng mãûnh âãư SELECT läưng nhau
Vê dủ:
Tçm tãn nhỉỵng hng â cung cáúp màût hng P2
SELECT SNAME
FROM S
WHERE S# IN( SELECT S#
FROM SP
WHERE P#=’P2’)
Ngän ngỉỵ SQL
SELECT PNAME
FROM P
WHERE P#= ANY
SELECT P#
FROM SP
WHERE S#=’S1’
Tçm tãn nhỉỵng nh cung cáúp cung cáúp êt nháút mäüt màût hng mu â
SELECT SNAME
Ngän ngỉỵ SQL
FROM S
WHERE S#= ANY
SELECT S#
FROM SP,S,P
WHERE S.S#=SP.S# AND P.P#=SP.P# AND COLOUR=’RED’
Tçm m säú nhỉỵng nh cung cáúp säú lỉåüng mäyt láưn mäüt màût hng no âọ låïn hån hồûc bàòng
säú lỉåüng mäùi láưn cung ỉïng ca hng
SELECT S#
FROM SP
WHERE QTY >= ALL
SELECT QTY
FROM SP
Mãûnh âãư trãn hon ton tỉång âỉång våïi
SELECT S#
FROM SP
WHERE QTY = (SELECT MAX( QTY)
FROM SP)
Tçm nhỉỵng hng chỉa hoảt âäüng
SELECT *
FROM S
haỷn:
Giaớ sổớ ta coù baớng W coù cuỡng lổồỹc õọử nhổ baớng P. khi õoù móỷnh õóử sau õỏy seợ bọứ sung vaỡo
baớng P tỏỳt caớ nổợng bọỹ tổỡ baớng W nhổợng mỷt haỡng coù mỏửu õoớ
INSERT INTO P
SELECT *
FROM W
WHERE COLOUR =RED + Xoùa caùc bọỹ
Cuù phaùp DELETE FROM tón_baớng
[WHERE btõk]
Vờ duỷ:
Loaỷi boớ haợng S1 ra khoới baớng S
DELETE
FROM S
WHERE S#=S1
Loỹai boớ caùcmỷt haỡng õổồỹc cung cỏỳp sau ngaỡy 20 -5- 1994
DELETE
FROM SP
WHERE SDATE >1994-5-20
Loaỷi boớ caùc haợng chổa cung cỏỳp mỷt haỡng naỡo
DELETE
FROM S
WHERE S# NOT IN (SELECT S# FROM SP)
+ Sổớa õọứi dổợ lióỷu
Ngän ngỉỵ SQL
cọ thãø cọ chiãưu tàng gim khạc nhau, thỉï tỉû âỉåüc tênh tỉì trại qua phi
Vê dủ tảo tãûp chè säú 14 cho bng SP theo cäüt S# tàng dáưn v theo cäüt P# gim dáưn
CREATE INDEX 14 ON SP(S# ASC, P# DESC)
4. Cạc mãûnh âãư an ton dỉỵ liãûu
Âáy l úu täú khäng thãø thiãúu âỉåüc âäúi våïi mäüt hãû qun trë Cå Såí Dỉỵ Liãûu âãø bo vãû dỉỵ
liãûu v ngàn chàûn nhỉỵng ngỉåìi khäng âỉåüc phẹp truy cáûp. Cạc quưn truy cáûp vo Cå Såí
Ngän ngỉỵ SQL
Dỉỵ Liãûu gäưm: Read(âc), Write(ghi), Insert(bäø sung), Update(Sỉía
âäøi),Select(chn),Delete(xọa)Run(chảy).
Viãûc phán phạt quưn truy cáûp vo Cå Såí Dỉỵ Liãûu do ngỉåìi qun trë Cå Såí Dỉỵ Liãûu do
ngỉåìi qun trë Cå Såí Dỉỵ Liãûu (database administrator -DBA) thỉûc hiãûn båíi lãûnh sau:
Giạn quưn truy cáûp cho ngỉåìi sỉí dủng: Lãûnh GRANT
cụ phạp: GRANT Quưn truy cáûp ON Tãn_bng/view TO Tãn_User [ with GRANT
option]
Tỉì khọa
with GRANT option
âãø cho ngỉåìi âỉåüc cáúp quưn cọ thãø tiãúp tủc trao quưn cho
ngỉåìi khạc. Nãúu tãn_User l
Public
hồûc
Word
thç cọ nghéa l cho mi ngỉåìi sỉí dủng.
Vê dủ: trao quưn sỉí dủng bng S cho cä Häưng
GRANT READ ON S TO HONG
with GRANT option
Lãûnh ny cä Häưng cọ thãø trao quưn âc bng S cho ngỉåìi dng khạc
Hy b quưn truy cáûp:
REVOKE Tãn_quưn ON tãn_bng FROM Tãn_User