You are on page 1of 10

Ngn ng SQL Chng 3: CAC

NGN NG THAO TAC D LIU

3.1 Ngn ng truy vn d liu SQL Trong muc nay trnh bay ngn ng d liu (Structered Query Language), SQL la ngn ng con d liu oc xac nhn la rt manh , ph dung va lai d s dung . SQL la ngn ng phi thu tuc, chun mc va in hnh. Do vy hin nay rt nhiu san phm phn mm u c cai t SQL nh : Oracle, DB2,... Trong phn nay se trnh bay cac kha nng cua ngn ng SQL. Phep toan c ban trong SQL la phep anh xa c miu ta bng khi lnh SELECT - FROM - WHERE. Cac mnh cua ngn ng SQL se c trnh bay chi tit bng v du. Cac thut ng trong C S D Liu quan h nh quan h , thuc tnh , b,.... c thay th bng cac thut ng nh : Bang( Table), ct(colum), ban ghi(Record) hoc hang(Row) trong SQL. Chung ta se xem cac chc nng c ban cua mt h quan tr C S D Liu nh cung cp ngn ng nh ngha d liu (DDM), Ngn ng thao tac d liu(DML) , tm kim va bao v d liu c th hin trong ngn ng SQL nh th nao. 1. nh ngha d liu Trong SQL cho phep ngi s dung tao cac d liu nh Bang(table), Khung nhn(View), va cac tp ch s(Index) Cu phap: CREAT TABLE Ten_Bang(Atr1 Type [NOT NULL], Atr2 Type [NOT NULL],...) Trong o Ten_Bang: tn cua table tao ra; tn bang la xu ky t bt ky khng co ky hiu trng va khng trung vi t khoa Atr1, Atr2 : Tn cac thuc tnh (Cac ct cua bang) Type: Kiu d liu cho thuc tnh. Mt s loai d liu thng dung nh: integer: s nguyn t -2 174 483 648 n 2 174 483 648 Smallinteger: s nguyn t - 32 768 n 32 767 decimal(n,p) s thp phn vi dai ti a n k ca p ch s thp phn ( khng tnh du chm thp phn). T khoa number trong SQL oc dung trong dang d liu nay. float: s du phy ng char(n): xu ky t co dai c nh n, n 255 varchar(n) xu ky t co dai bin i, dai xu co th t 0 n n va c xac nh tai thi im a d liu vao lu tr date: d liu dang ngay thang ch th NOT NULL bao rng gia tr cua thuc tnh o khng c thiu trong cac b cua quan h

* Lnh tao bang

Ngn ng SQL V Du: Tao C S D Liu gm 3 bang S(nha cung cp SUPPLIERS), P ( San phm PRODUCTS) va bang SP (Cung cp) nh sau: - Tao bang S: CREATE TABLE S ( S# INTEGER NOT NULL,SNAME VARCHAR(8) NOT NULL,AGES INTEGER NOT NULL, CITY VARCHAR(30) NOT NULL) Chu y: NULL la gia tr ngm nh - Tao bang P:(Bang san phm) CREATE TABLE P (P# INTEGER NOT NULL, PNAME VARCHAR(10) NOT NULL, WEIGHT INTEGER NOT NULL, COLOR VARCHAR(10) NOT NULL, CITY VARCHAR(30) NOTNULL) - Tao bang SP: CREATE TABLE SP (S# INTEGER NOT NULL, P# INTEGER NOT NULL, QTY INTEGER,SDATE DATE NOT NULL, PRICE DECIMAL(8,2)).

Co ba cach vao d liu cho bang nh sau INSERT INTO S(S#,SNAME,AGES,CITY) VALUE(1,Thanh Huong, 30, TP Ho Chi Minh) Nu v tr cua cac ct trong bang c nh, ta co th vit INSERT INTO S VALUE(1,Thanh Huong, 30, TP Ho Chi Minh) Ngi vao d liu co th qun v tr cac ct, khi o ta co th biu din nh sau: INSERT INTO S(S#,AGES,CITY, SNAME) VALUE(1, 30, TP Ho Chi Minh, Thanh Huong) 2. Tm Kim d liu Trong SQL y la chc nng c ban nht cua SQL, cho phep ngi s dung tm kim cac thng tin trn C S D Liu vi Cu lnh SELECT.....FROM....WHERE Cu phap: SELECT [*| DISTINCT] Danh sach cac ct a ra FROM Tn_Bang/Tn_View [WHERE biu thc iu kin] [GROUP BY Danh sach cac ct] [HAVING biu thc iu kin] [ORDER BY Tn_ct [ASC/DESC] Giai thch cac tham s bng cac v du

Vao d liu :

Ngn ng SQL 2.1 Tm kim theo cu hoi n gian

Tm kim khng iu kin:

i. Cho bit danh sach cac nha cung cp: SELECT * FROM S Du * co ngha la chon toan b cac ct trong bang. bang kt qua sau khi thc hin mt mnh SQL ung la mt quan h (Co ngha la khng co cac b trung nhau) th phai co t khoa DISTINCT. SELECT DISTINCT PNAME FROM SP

Tm kim vi iu kin n gian

Tm ma s cua nhng nha cung cp a cung cp mt hang P2 SELECT S# FROM SP WHERE P#=P2

Tm kim co x ly xu ky t

Tm nhng mt hang ban trc ngay 94-04-24 10 ngay SELECT P# FROM SP WHERE 94-04-24 - SDATE =10

X ly ngay thang

X ly xu ky t gn ung con goi la phep tnh thng minh trong trng hp ngi s dung khng nh ro tn ngi hoc a danh ... v du la Hoa hay Hoan khi o ta co th vit SELECT * FROM S WHERE SNAME LIKE HOA% Trong SQL s dung ky hiu % la thay th cho mt xu con bt ky, du phn cach _ thay th cho mt ky t. A%B : Xu ky t bt u bng ch A va kt thuc bng ch B %A Xu ky t bt ky kt thuc bng ch A A_B : Xu bao gm 3 ky t , ky t th 2 la bt ky A_ : Xu co hai ky t, ky t u la A

Tm kim s dung IN va BETWEEN

Tm nhng mt hang a cung cp co gia t 1000 n 2000 SELECT P# FROM SP WHERE PRICE BETWEEN 1000 AND 2000 Tm ma s nhng nha cung cp a cung cp t nht mt trong cac mt hang P1,P2,P3

Ngn ng SQL SELECT S# FROM SP WHERE P# IN (P1,P2,P3) CAC HAM TH VIN Cung ging nh cac ngn ng C S D Liu khac, Trong SQL co cac ham mu gm COUNT, MAX, MIN, SUM, AVG. Ring ham COUNT khi co i s la * co ngha la m s bang ghi thoa man yu cu tm kim ma khng quan tm n bt ky ct nao. V du Cho bit s ln mt hang P2 a c cung cp SELECT COUNT(*) FROM SP WHERE P#=P2 Tm hiu s mt hang P1 ban mt ln nhiu nht va mt ln t nht cua hang S1 SELECT MAX(QTY) - MIN(QTY) FROM SP WHERE S#=S1 AND P#=P1 Tm kim nh mnh GROUPE BY Tm ma s nhng mt hang ma mi nha cung cp a cung cp cho khach hang. SELECT S#,P# FROM SP GROUPE BY S# trong mnh nay bang d liu SP c ly ra, sau o phn thanh nhom theo ma s cua ngi cung cp (S#). Co ngha la cac b co cung gia tr S# se c xp lin tip nhau, ht nhom nay n nhom khac. Tm kim nh mnh HAVING Mnh HAVING thng c s dung cung mnh GROUP BY. Sau HAVING la biu thc iu kin. Biu thc iu kin nay khng tac ng vao toan bang c ch ra mnh FROM ma ch tac nnnnn lt n tng nhom cac ban ghi a ch ra tai mnh GOUP BY. V du: Tm ma s nhng nha cung cp a cung cp t nht hn hai mt hang SELECT S# FROM SP GROUP BY S# HAVING CUONT (DISTINCT P#)>2 Tm kim co sp xp Tm tn cac mt hang mau o va sp xp theo th t cua ma s mt hang SELECT PNAME,P#

Ngn ng SQL FROM P WHERE COLOUR = RED ORDER BY P# ASC Mnh ORDER BY cho phep ta sp xp cac ct theo th t tng dn (ASC) hoc giam dn (DESC), ngm nh la ASC Mnh ORDER BY co th sp xp theo nhiu ct. Nu no ng sau mnh GROUP BY th min tac ng la tng nhom cua ct c ch ra trong mnh GROUP BY. Nu ct sp xp co mt mnh SELECT th trong mnh ORDER BY co th ch cn ch ra s th t cua ct o trong danh sach tham chiu la u.

trong v du trn ta co th vit SELECT PNAME,P# FROM P WHERE COLOUR = RED ORDER BY 2 ASC

Tm kim vi cu hoi phc tap

Trong phn nay se trnh bay vic tm kim d liu trn nhiu bang thng qua phep kt ni hoc vic s dung cac anh xa lng. Kha nng kt ni d liu Trong phep kt ni, cac ct tham gia kt ni phai co min tr la so sanh c vi nhau. Tn ct cua cac bang khac nhau co th vit tng minh qua tn bang. V Du: Vi mi mt hang c cung cp , hay cho bit ma s cua mt hang va a ch cua hang a cung cp mt hang o. SELECT DISTINCT P#, CITY FROM SP, S WHERE SP.S# =S.S# Anh xa lng Ta co th s dung nhng mnh SELECT lng nhau V du: Tm tn nhng hang a cung cp mt hang P2 SELECT SNAME FROM S WHERE S# IN( SELECT S# FROM SP WHERE P#=P2)

Ngn ng SQL

Phep lng nhau co th lng nhiu mc hoc s dung s dn tro gia cac khi mi khi hng ti mt bang khac nhau V du: Tm tn cac hang khng cung ng mt hang P1 SELECT SNAME FROM S WHERE P1 NOT IN SELECT P# FROM SP WHERE S#= S.S# Trong SQL con cho phep tm kim trn nhiu bang nh mnh e EXISTS (tn tai) V du:

Tm kim nhng nha cung cp a cung cp t nht mt mt hang nao o SELECT * FROM S WHERE EXISTS (SELECT * FROM SP WHERE SP.S#=S.S#) Hoc co th biu din bng cach khac SELECT * FROM S WHERE 0< (SELECT COUNT(*) FROM SP WHERE SP.S#=S.S#) Tm kim co s dung lng t ANY va ALL Tm tn nhng mt hang co ma s mt hang la mt hang nao o ma hang S1 a cung cp SELECT PNAME FROM P WHERE P#= ANY SELECT P# FROM SP WHERE S#=S1 Tm tn nhng nha cung cp cung cp t nht mt mt hang mau o SELECT SNAME

Ngn 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 Tm ma s nhng nha cung cp s lng myt ln mt mt hang nao o ln hn hoc bng s lng mi ln cung ng cua hang SELECT S# FROM SP WHERE QTY >= ALL SELECT QTY FROM SP Mnh trn hoan toan tng ng vi SELECT S# FROM SP WHERE QTY = (SELECT MAX( QTY) FROM SP) Tm nhng hang cha hoat ng SELECT * FROM S WHERE NOT EXISTS SELECT * FROM SP WHERE SP.S# = S.S# Chu y mnh NOT EXISTS co gia tr ung (True) nu kt qua cua cu hoi sau no la mt tp rng. Tm kim co cha phep tnh tp hp Tm ma s nhng hang hin thi cha cung cp mt mt hang nao ca SELECT S# FROM S MINUS SELECT S# FROM SP Tm tn cac hang cung cp, cung cp tt ca cac mt hang SELECT SNAME FROM S WHERE ( SELECT P#

Ngn ng SQL FRPM SP WHERE S#=S.S#) = (SELECT P# FRPM P) 3. Cac lnh cp nht d liu Thm mt b vao trong quan h Cu phap: INSERT INTO Tn_Bang(Danh sach tn ct) VALUES(Danh sach cac tr) [cu hoi con] V du: co th b sung mt tp cac ban ghi la kt qua x ly cua mt cu hoi nao o, chn han: Gia s ta co bang W co cung lc nh bang P. khi o mnh sau y se b sung vao bang P tt ca nng b t bang W nhng mt hang co mu o INSERT INTO P SELECT * FROM W WHERE COLOUR =RED

+ Xoa cac b Cu phap DELETE FROM tn_bang [WHERE btk] V du: Loai bo hang S1 ra khoi bang S DELETE FROM S WHERE S#=S1 Loai bo cacmt hang c cung cp sau ngay 20 -5- 1994 DELETE FROM SP WHERE SDATE >1994-5-20 Loai bo cac hang cha cung cp mt hang nao DELETE FROM S WHERE S# NOT IN (SELECT S# FROM SP) + Sa i d liu

Ngn ng SQL Cu phap: UPDATE [Tn_bang] SET [Tn_ct=Biu thc,...] [FROM Tn_Bang] [WHERE btk] V du: i mau cac mt hang P2 thanh mau vang UPDATE P SET COLOUR = YELLOW WHERE P#= P2 + Thm mt ct vao bang Cu phap: ALTER TABLE Tn_Bang [ADD/MODIFY][(Tn_ct Kiu d liu ] ADD: Thm ct mi vao MODIFY : Sa ct da co trong quan h V du: thm ct DONGIA ( n gia) cho bang SP vi kiu d liu dang s thp phn ALTER TABLE SP ADD DONGIA DECIMAL(8.2) + Xoa bang: cu phap: DROP TABLE Tn_bang Xoa VIEW Cu phap DROP VIEW Tn_view Tao tp ch s Trong SQL khng co c ch t ng tao tp ch s cho cac ct cua bang. Vic tao tp ch s do ngi dung thuc hin. Cu phap nh sau: CREATE [UNIQUE] INDEX tn_tp_ch_s ON tn_bang (tn_ct [ASC|DESC]) Huy bo ch s th s dung mnh DROP INDEX tn_tp_ch_s V du:tao tp ch s 13 theo ct City tng dn cua bang S CREATE INDEX 13 ON S(CITY ASC) Trong SQL co th t chc a ch s, tc la t chc mt tp ch s cho nhiu ct, mi ct co th co chiu tng giam khac nhau, th t c tnh t trai qua phai V du tao tp ch s 14 cho bang SP theo ct S# tng dn va theo ct P# giam dn CREATE INDEX 14 ON SP(S# ASC, P# DESC) 4. Cac mnh an toan d liu y la yu t khng th thiu c i vi mt h quan tr C S D Liu bao v d liu va ngn chn nhng ngi khng c phep truy cp. Cac quyn truy cp vao C S

Ngn ng SQL D Liu gm: Read(oc), Write(ghi), Insert(b sung), Update(Sa i),Select(chon),Delete(xoa)Run(chay). Vic phn phat quyn truy cp vao C S D Liu do ngi quan tr C S D Liu do ngi quan tr C S D Liu (database administrator -DBA) thc hin bi lnh sau: Gian quyn truy cp cho ngi s dung: Lnh GRANT cu phap: GRANT Quyn truy cp ON Tn_bang/view TO Tn_User [ with GRANT option] T khoa with GRANT option cho ngi c cp quyn co th tip tuc trao quyn cho ngi khac. Nu tn_User la Public hoc Word th co ngha la cho moi ngi s dung. V du: trao quyn s dung bang S cho c Hng GRANT READ ON S TO HONG with GRANT option Lnh nay c Hng co th trao quyn oc bang S cho ngi dung khac Huy bo quyn truy cp: REVOKE Tn_quyn ON tn_bang FROM Tn_User v du:Rut lai quyn oc bang S cua User Hng REVOKE READ ON S FROM HONG

You might also like