Tæng quan vÒ ng«n ng÷ sql
1
I_Giíi thiÖu chung vÒ SQL 1>.SQL lµ g×? -SQL lµ viÕt t¾t cña Structure Query Language,nã lµ mét c«ng cô qu¶n lý d÷ liÖu ®îc sö dông phæ biÕn ë nhiÒu lÜnh vùc .HÇu hÕt c¸c ng«n ng÷ bËc cao ®Òu cã tr×nh hç trî SQL nh Visual BASic,Oracle,Visual C... Trong Oracle tÊt c¶ c¸c ch¬ng tr×nh vµ ngêi sö dông ph¶i sö dông SQL ®Ó truy nhËp vµo d÷ liÖu trong CSDL cña Oracle. C¸c ch¬ng tr×nh øng dông vµ c¸c c«ng cô Oracle cho phÐp ngêi sö dông truy nhËp tíi CSDL mµ kh«ng cÇn sö dông trùc tiÕp SQL. Nhng nh÷ng øng dông ®ã khi ch¹y ph¶i sö dông SQL. 2>.LÞch sö ph¸t triÓn: -SQL ®îc ph¸t triÓn tõ ng«n ng÷ SEQUEL2 bëi IBM theo m« h×nh Codd t¹i trung t©m nghiªn cøu cña IBM ë California ,vµo nh÷ng n¨m 70 cho hÖ thèng QTCSDL lín. -§Çu tiªn SQL ®îc sö dông trong c¸c ng«n ng÷ qu¶n lý CSDL vµ ch¹y trªn c¸c m¸y ®¬n lÎ. Song do sù ph¸t triÓn nhanh chãng cña nhu cÇu x©y dùng nh÷ng CSDL lín theo m« h×nh kh¸ch chñ( trong m« h×nh nµy toµn bé CSDL ®îc tËp trung trªn m¸y chñ (Server)). Mäi thao t¸c xö lý d÷ liÖu ®îc thùc hiÖn trªn m¸y chñ b»ng c¸c lÖnh SQL m¸y tr¹m chØ dïng ®Ó cËp nhËp hoÆc lÊy th«ng tin tõ m¸y chñ). Ngµy nay Ph¹m Minh Quý - Database
1
Tæng quan vÒ ng«n ng÷ sql
2
trong c¸c ng«n ng÷ lËp tr×nh bËc cao ®Òu cã sù trî gióp cña SQL. NhÊt lµ trong lÜnh vùc ph¸t triÓn cña Internet ng«n ng÷ SQL cµng ®ãng vai trß quan träng h¬n. Nã ®îc sö dông ®Ó nhanh chãng t¹o c¸c trang Web ®éng.. SQL ®· ®îc viÖn tiªu chuÈn quèc gia Mü (ANSI)vµ tæ chøc tiªu chuÈn quèc tÕ (ISO) chÊp nhËn nh mét ng«n ng÷ chuÈn cho CSDL quan hÖ .Nhng cho ®Õn nay chuÈn nµy cha ®a ra ®ñ 100%.Nªn c¸c SQL nhóng trong c¸c ng«n ng÷ lËp tr×nh kh¸c nhau ®· ®îc bæ xung më réng cho SQL chuÈn cho phï hîp víi c¸c øng dông cña m×nh.Do vËy cã sù kh¸c nhau râ rµng gi· c¸c SQL. 3>.§Æc ®iÓm cña SQL vµ ®èi tîng lµm viÖc: a>§Æc ®iÓm: -SQL lµ ng«n ng÷ tùa tiÕng Anh. -SQL lµ ng«n ng÷ phi thñ tôc,Nã kh«ng yªu cÇu ta c¸ch thøc truy nhËp CSDL nh thÕ nµo TÊt c¶ c¸c th«ng b¸o cña SQL ®Òu rÊt dÔ sö dông vµ Ýt kh¶ n¨ng m¾c lçi . -SQL cung cÊp tËp lÖnh phong phó cho c¸c c«ng viÖc hái ®¸p DL +ChÌn,cËp nhËt ,xo¸ c¸c hµng trong mét quan hÖ +T¹o,söa ®æi,thªm vµ xo¸ c¸c ®èi tîng trong cña CSDL. +§iÒu khiÓn viÖc truy nhËp tíi c¬ së d÷ liÖu vµ c¸c ®èi tîng cña CSDL ®Ó ®¶m
Ph¹m Minh Quý - Database
2
Tæng quan vÒ ng«n ng÷ sql
3
b¶o tÝnh b¶o mËt cña c¬ së DL +®¶m b¶o tÝnh nhÊt qu¸n vµ sù rµng buéc cña CSDL. -Yªu cÇu duy nhÊt ®Ó sö dông cho c¸c hái ®¸p lµ ph¶i n¾m v÷ng ®îc c¸c cÊu tróc CSDL cña m×nh. b>§èi tîng lµm viÖc cña SQL: -Lµ c¸c b¶ng ( tæng qu¸t lµ c¸c quan hÖ )d÷ liÖu hai chiªï .C¸c b¶ng nµy bao gåm mét hoÆc nhiÒu cét vµ hµng.C¸c cét gäi lµ c¸c trêng ,c¸c hµng gäi lµ c¸c b¶n ghi.Cét víi tªn gäi vµ kiÓu d÷ liÖu (kiÓu dl cña mçi cét lµ duy nhÊt)x¸c ®Þnh t¹o nªn cÊu tróc cña b¶ng (Ta cã thÓ dïng lÖnh Desc[ribe] TABLE-name ®Ó xem cÊu tróc cña b¶ng ,phÇn tuú chän[] cã thÓ ®îc bá trong Oracle).Khi b¶ng ®· ®îc tæ chøc hÖ thèng cho mét môc ®Ých nµo ®ã cã mét CSDL 4>.C¸c kiÓu d÷ liÖu c¬ b¶n cña SQL: -Integer:Sè nguyªn:-2147483648 ®Õn 2147483647 -Smallinteger:-32768 ®Õn 32767 -Number(n,p):sè thËp ph©n ®é dµi tèi ®a lµ n kÓ c¶ p ch÷ sè thËp ph©n(kh«ng tÝnh dÊu chÊm). -char (n):x©u cã ®é dµI cè ®Þnh lµ n n<=255 -varchar(n):x©u cã ®é dµI biÕn ®æi (0-:-n) -long varchar :x©u cã ®é dµi kh«ng cè ®Þnh,®é dµi cã thÓ thay ®æi 4Kb-:-32Kb -Date:D÷ liÖu kiÓu ngµy. Ph¹m Minh Quý - Database
3
Tæng quan vÒ ng«n ng÷ sql
4
II_Giíi thiÖu c¸c tËp lÖnh c¬ b¶n cña SQL: -TËp lÖnh SELECT:§©y lµ lÖnh thêng ®îc dïng nhiÒu nhÊt trong CSDL ,nã thêng ®îc sö dông ®Ó nhËn d÷ liÖu tõ CSDL. -TËp lÖnh INSERT,UPDATE,DELETE:c¸c lÖnh nµy thêng hay ®îc dïng ®Ó vµo mét hµng míi,söa ®æi hay xo¸ bá c¸c hµng ®· tån t¹i trong c¸c quan hÖ cña CSDL. -TËp lÖnh CREATE,ALTER,DROP:Ba lÖnh nµy dïng ®Ó t¹o,thay ®æi,xo¸ bá bÊt kú cÊu tróc d÷ liÖu nµo cña c¸c quan hÖ nh b¶ng ,VIEW,INDEX.. -TËp lÖnh GRANT,REVOKE:Hai lÖnh nµy ®îc sö dông ®Ó cho phÐp quyÒn truy nhËp hay kh«ng cho phÐp quyÒn truy nhËp tíi CSDL cña Oracle vµ cÊu tróc bªn trong nã. Trong phÇn giíi thiÖu c¸c tËp lÖnh nµy ta dïng ba b¶ng quan hÖ sau lµm vÝ dô minh ho¹: R1(Nh©n viªn) (#NV,Ho_tªn,Nsinh,nghÒ nghiÖp,§×a chØ,l¬ng) R2(Liªn kÕt) (#NV,#MP) R3(phong) (#Mp,Tªn_phong,tel) 1>LÖnh SELECT: *MÖnh ®Ò SELECT t¬ng øng víi to¸n tö project(phÐp chiÕu π) cña ®¹i sè quan hÖ.Nã ®îc dïng ®Ó t¹o danh s¸ch c¸c thuéc tÝnh mµ ta mong muèn.Khèi lÖnh SELECT gåm cã ba mÖnh ®Ò chÝnh: +SELECT:x¸c ®Þnh néi dung cña c¸c cét cÊn ®a ra. Ph¹m Minh Quý - Database
4
Tæng quan vÒ ng«n ng÷ sql
5
+FROM:danh s¸ch c¸c quan hÖ ®îc quÐt qua +WHERE:øng víi mét kh¼ng ®Þnh lùa chän cña ®¹I sè quan hÖ.Nã lµ mét kh¼ng ®Þnh liªn quan ®Õn c¸c thuéc tÝnh cña quan hÖ xuÊt hiÖn trong mÖnh ®Ò FROM: -Mét hái ®¸p cu¶ SELECT thêng cã d¹ng: SELECT [distinct]*/A1..An FROM r1..rm [WHERE p]; Trong ®ã : Ai lµ c¸c thuéc tÝnh rj lµ c¸c quan hÖ (cã thÓ lµ c¸c TABLEs,VIEWs..)Ta cã thÓ dïng c¸c bÝ danh cho c¸c Ai,rj. p:lµ ®IÒu kiÖn rµng buéc. ë ®©y WHERE cã thÓ cã hoÆc kh«ng. Dïng *®Ó chØ tÊt c¶ c¸c thuéc tÝnh cña c¸c quan hÖ ®îc chän -Hái ®¸p nµy tong ®¬ng víi biÓu diÔn sau trong quan hÖ: πA1..An[S p(r1..rm)] -§Ó lo¹i bá c¸c bé gi¸ trÞ (c¸c hµng) trïng nhau ta thªm tõ kho¸ Distinct vµo sau SELECT (tríc ®©y SQL thªm tõ kho¸ unique). -Trong kh¼ng ®Þnh p:ta cã thÓ dïng c¸c liªn tõ logic and,or,not khi kÕt hîp nhiÒu ®iÒu kiÖn VD1:§Ó hiÖn c¸c th«ng tin vÒ mét nh©n viªn nµo ®ã gåm(#,Hä_tªn,N_sinh,Chøc_vô,®Þa_chØ,l¬ng) SELECT Distinc * FROM R1; Ph¹m Minh Quý - Database
5
Tæng quan vÒ ng«n ng÷ sql
6
*§a ra (hä_tªn,Nsinh,chøc_vô,®Þa_chØ,l¬ng,tªn_phßng) víi ®IÒu kiÖn l¬ng>500.000 vµ ®ia_chØ kh«ng ë Hµ néi SELECT Ho_tªn,Nsinhn,chøc_vô,®Þa_chØ,l¬ng,tªn_phßng FROM Nh©nviªn R1,Liªnkªt R2,Phong R3 WHERE (R1.l¬ng>500.000) and (not R1.®Þa_chØ=’Hµ néi’) and (R1.#NV=R2.#NV) and (R2.#MP=R3.#MP); -Trong lÖnh trªn ta ®· dïng R1,R2,R3 lµm bÝ danh cho Nh©nviªn, Liªnkªt,Phong C¸c bÝ danh ®ã chØ cã t¸c dông trong mét c©u lÖnh C¸c vÝ dô sau nµy ta dïng R1,R2,R3 ®Ó thay cho c¸c b¶ng trªn cho gän Cã 4 to¸n tö hay ®îc dïng víi c¸c kiÓu d÷ liÖu.Trong mÖnh ®Ò WHERE lµ: In (not In) Between..and..(not between..) Like(not like) Is null (not is Null). +To¸n tö In (not In):dïng ®Ó kiÓm tra gi¸ trÞ trong(kh«ng n»m trong) mét danh s¸ch ®îc chØ ra. VÝ d ô :®a ra nh÷ng ngêi cã ®ia_chØ ë Hµ néi vµ Hµ t©y. SELECT * FROM R1 WHERE ®ia_chØ in (‘Hµ néi’,’Hµ t©y’); Ph¹m Minh Quý - Database
6
Tæng quan vÒ ng«n ng÷ sql
7
+To¸n tö Between..and..(not ..) : kiÓm tra gi¸ trÞ n»m gi÷a (kh«ng n»m gi÷a) mét ph¹m vi ®îc chØ ra. VD :®a ra nh÷ng ngêi cã l¬ng n»m trong kho¶ng (500.000-:-1.000.000). SELECT * FROM R1 WHERE l¬ng between 500.000 and 1.000.000; +To¸n tö like (not like):dïng ®Ó kiÓm tra nh÷ng gi¸ trÞ gièng (kh«ng gièng) víi gi¸ tri sau like,thêng sö dông víi x©u ký tù vµ khi ta kh«ng biÕt chÝnh x¸c gi¸ trÞ cÇn t×m kiÕm hoÆc gi¸ trÞ cÇn t×m kiÕm gièng mét mÉu nµo ®ã.Trong SQL ngêi ta sö dông ký hiÖu % cho x©u con vµ ‘_’cho 1 ký tù bÊt kú. VD:T×m nh÷ng ngêi cã tªn mµ cã ký tù ®Çu tiªn bÊt kú,ký tù tiÒp theo lµ OA vµ tiÕp theo lµ d·y ký tù bÊt kú: SELECT *FROM R1 WHERE hoten=’_OA%’; +To¸n tö Is Null (not is Null):kiÓm tra cho c¸c gi¸ trÞ rçng (kh«ng rçng); VD:§a ra tÊt c¶ nh÷ng nh©n viªn mµ ®· cËp nhËt ®Þa chØ SELECT *FROM R1 WHERE Dia_chi Not Is Null; -C¸c hµm hay ®îc sö dông trong mÖnh ®Ò SELECT: +AVG:tÝnh gi¸ trÞ trung b×nh cña mét hoÆc nhiÒu trêng bá qua c¸c gi¸ trÞ rçng. VD:tÝnh l¬ng TB cña c¬ quan: SELECT AVG(l¬ng) FROM R1; Ph¹m Minh Quý - Database
7
Tæng quan vÒ ng«n ng÷ sql
8
+Count:®îc dïng ®Ó ®Õm c¸c bé (hµng) VD:§IÓm tæng sè b¶n ghi tõ R1 cã long>500.000 SELECT count(*) FROM R1 WHERE l¬ng>500.000 +Hµm Max:t×m gi¸ trÞ lín nhÊt cña biÓu thøc: VD:t×m ngêi cã l¬ng lín nh¸t trong R1 cã ®Þa chØ ë Hµ T©y SELECT Max(l¬ng) FROM R1 WHERE ®Þa_chØ=’Hµ_t©y’; +Hµm Min:t×m gi¸ trÞ nhá nhÊt cña biÓu thøc: VD:t×m ngêi cã l¬ng nhá nh¸t trong R1 cã ®Þa chØ ë Hµ T©y SELECT Min(l¬ng) FROM R1 WHERE ®Þa_chØ=’Hµ_t©y’; +Hµm Sum:tÝnh tæng gi¸ trÞ bá qua gi¸ trÞ rçng. VD:TÝnh tæng l¬ngcña c¬ quan SELECT Sum(l¬ng) FROM R1; -NgoµI 3 mÖnh ®Ò chÝnh trªn ta cßn cã thÓ : +T×m kiÕm theo nhãm nhê mÖnh ®Ò GROUP BY®îc sö dông®Ó ph©n chia c¸c bé thµnh c¸c nhãm nhá . VD:§a ra danh s¸ch c¸c nh©n viªn theo nhãm ®Þa chØ SELECT *FROM R1 Group by §ia_chØ; Thêng ®i víi mÖnh ®Ò Group by lµ mÖnh ®Ò Having by sö dông ®Ó chØ ra nh÷ng h¹n chÕ cña c¸c nhãm ®îc hiÓn thÞ.Chó ý r»ng mÖnh ®Ò Having by chØ ®i víi Group by vµ ®iÒu Ph¹m Minh Quý - Database
8
Tæng quan vÒ ng«n ng÷ sql
9
kiÖn cña nã chØ t¸c ®éng ®Õn tõng nhãm b¶n ghi ®îc chØ ra ë mÖnh ®Ò Group by chø kh«ng t¸c ®éng ®Õn toµn b¶ng. VD: §a ra danh s¸ch c¸c nhãm nh©n viªn cïng chøc vô vµ cã l¬ng >500.000 SELECT * FROM R1 Group by chøc_vô Having by l¬ng>500.000 -S¾p xÕp theo mét hoÆc nhiÒu trêng ta dïng mÖnh ®Ò ORDER BY (colum1/[ASc|Desc] ..) +ASc s¾p xÕp theo chiÒu t¨ng (ngÇm ®Þnh) +Desc s¾p xÕp theo chiÒu gi¶m VD S¾p xÕp nh©n viªn theo chiÒu gi¶m theo l¬ng ,nÕu cïng møc l¬ng th× theo s¾p xÕp theo chiÒu xÕp theo chiÒu t¨ng ho_tªn SELECT * FROM R1 ORDER BY l¬ng/Desc,ho_tªn; 2>Nhãm lÖnh INSERT,UPDATE,DELETE: *INSERT: Dïng ®Ó chÌn dl vµo mét quan hÖ chóng ta cã thÓ t¹o ra 1 bé ®Ó chÌn vµo hoÆc mét tËp c¸c bé tõ hái ®¸p SELECT ®Ó chÌn vµo Có ph¸p cña lÖnh: INSERT INTO R[A1..An] VALUES(vl1..) VD:chÌn 1 hµng (‘020’,’NguyÔn träng NghÜa’,B¶o vÖ’,’Hµ néi’,’800.000’)vµo R1 INSERT INTO R1 VALUES Ph¹m Minh Quý - Database
9
Tæng quan vÒ ng«n ng÷ sql
10
(‘020’,’NguyÔn träng NghÜa’,B¶o vÖ’,’Hµ néi’,800.000); *UPDATE Dïng ®Ó sö ®æi gi¸ trÞ cña mét ho¨c nhiÒu bé ®· tån t¹i trong quan hÖ có ph¸p cu¶ lÖnh UPDATE R SET..[WHERE p] VD:-l¬ng cña tÊt c¶ c¸c nh©n viªn cña c¬ quan cïng t¨ng 5% UPDATE R1 SET l¬ng=l¬ng*1,05 -chØ t¨ng l¬ng cña nh÷ng ngêi cã l¬ng<500.000 vµ t¨ng 10% UPDATE R1 SET l¬ng=l¬ng*1,1 WHERE l¬ng<500.000 *DELETE: Dïng ®Ó xo¸ bá 1 hoÆc nhiÒu bé trong quan hÖ Có ph¸p: DELETE FROM R[WHERE P] nh÷ng bé nµo tho¶ m·n ®k P th× míi bÞ huû bá khái quan hÖ R VD: DELETE FROM R1 WHERE ng_sinh>’01-011935’; Xo¸ bá tÊt c¶ c¸c nh©n viªn ta dïng lÖnh DELETE FROM R1; Chó ý:lÖnh DELETE chØ thao t¸c víi 1 quan hÖ.Muèn huû c¸c bé tõ nhiÒu quan hÖ ta dïng DELETE cho mçi quan hÖ.LÖnh DELETE chØ ®¸nh dÊu c¸c b¶n ghi chø cha thùc sù xo¸ h¼n ,ta cã thÓ kh«i phôc l¹i ®îc .§Ó xo¸ h¼n ta Ph¹m Minh Quý - Database
10
Tæng quan vÒ ng«n ng÷ sql
11
dung lÖnh COMMIT ,khi ®· ra lÖnh nµy ta kh«ng thÓ kh«i phôc l¹i ®îc n÷a .Khi cha ra lÖnh COMMIT ta cã thÓ kh«i phôc l¹i b»ng c¸ch dïng lÖnh ROLLBACK. 3>Nhãm lÖnh CREATE,ALTER,DROP: a>LÖnh CREATE LÖnh nµy dïng ®Ó t¹o ra c¸c quan hÖ nh TABLE,VIEW,INDEX *CREATE TABLE -B¶ng lµ mét cÊu tróc c¬ b¶n ®Ó cÊt gi÷ trong hÖ thèng quan hÖ.Cã khu«n d¹ng hai chiÒu gåm cã c¸c cét vµ hµng.Nãlµ yÕu tè c¬ b¶n cho c¸c thao t¸c kh¸c nhau.Cã thÓ nãi viÖc t¹o b¶ng lµ bíc ®Çu tiªn quan träng nhÊt ®Ó thiÕt lËp CSDL. -Có ph¸p cña lÖnh nµy: CREATE TABLE table-name(colom_name type(size)..) Khi t¹o ra b¶ng chóng ta ph¶i chØ ra kiÓu d÷ liÖu cña cét vµ mçi cét chØ cã thÓ cã m«t kiÓu d÷ liªô duy nhÊt.Khi t¹o b¶ng ta cã thÓ ®a ra c¸c rµng buéc C¸c rµng buéc cña c¸c trêng cã thÓ lµ : primary key,foreign ket ,unique,not null ... VD:t¹o b¶ng nh©n viªn CREATE TABLE NHAN_VIEN (#NV varchar(4) constraint NV_Primary key,ho_tªn Varchar(25),Ng_sinh date,chøcvô varchar(20),®ia_chØ varchar(30).l¬ng number(7)); Ph¹m Minh Quý - Database
11
Tæng quan vÒ ng«n ng÷ sql
12
trong VD trªn ta t¹o ra mét rµng buéc lµ #NV ®îc ®Þnh nghÜa lµ primary key -Ta còng cã thÓ t¹o ra b¶ng míi víi cÊu tróc vµ d÷ liÖu tõ 1 b¶ng kh¸c. Có ph¸p: CREATE TABLE TABLE_name[(colum_name..)]AS SELECT statement; VD:t¹o ra 1 b¶ng míi cã tªn lµ NVN (#NV,hä_tªn) tõ b¶ng NHAN_VIEN CREATE TABLE NVN AS SELECT #NV,hä_tªn FROM NHAN_VIEN; *CREATE VIEW: -VIEWs gièng nh nh÷ng window mµ th«ng qua nh÷ng window nµy d÷ liÖu cã thÓ ®îc xem hoÆc thay ®æi. Nã cã thÓ ®îc t¹o ra dùa trªn mét hay nhiÒu b¶ng trong CSDL.Nã lµ mét b¶ng ¶o kh«ng tån t¹i thùc sù trong CSDL.Nhng nã cã thÓ ®îc truy nhËp nh lµ c¸c b¶ng th«ng thêng.Ta cã thÓ nhËn ®îc c¸c hµng tõ VIEW víi c¸c lÖnh SELECT vµ trong hÇu hÕt c¸c trêng hîp cña viÖc UPDATE,INSERT,DELETE hµng tõ CSDL th«ng qua VIEW.Cã mét vµI trêng hîp kh«ng cho phÐp UPDATE tõ CSDL. -ViÖc sö dông VIEW cã rÊt nhiÒu h÷u Ých trong viÖc: +H¹n chÕ viÖc truy nhËp CSDL .SELECT tõ mét VIEW cã thÓ hiÓn thÞ phÇn h¹n chÕ cña CSDL mét c¸ch nhanh chãng. Ph¹m Minh Quý - Database
12
Tæng quan vÒ ng«n ng÷ sql
13
+Cho phÐp ngêi dïng t¹o ra nh÷ng hái ®¸p ®¬n gi¶n ®Ó nhËn ®îc kÕt qu¶ tõ nh÷ng hái ®¸p phøc t¹p mµ kh«ng cÇn biÕt c¸ch thøc nèi c¸c b¶ng nh thÕ nµo. +Cung cÊp c¸c phÇn tö d÷ liÖu ®éc lËp cho ngêi sö dông vµ c¸c chong tr×nh viÕt øng dông dÉn ®Õn ®¶m b¶o cho viÖc b¶o mËt d÷ liÖu ,che dÊu d÷ liÖu nµo ®ã khái mét user nµo ®ã. Có ph¸p : CREATE [or REPLACE/FORCE] VIEW view_name [colum..] AS Query,[with check option] -OR REPLACE:cho phÐp mét VIEW ®îc t¹o ra thËm chÝ nÕu mét VIEW ®· tån t¹i cã cïng tªn nh vËy.Do ®ã nã sÏ thay thÕ VIEW cò. -FORCE:cho phÐp t¹o ra VIEW thËm chÝ c¸c b¶ng c¬ së cha tån t¹i nhng c¸c b¶ng ph¶i tån t¹i tríc khi VIEW ®ã ®îc sö dông -MÖnh ®Ò WITH CHECK OPTION:chØ ra r»ng viÖc INSERT,UPDATE thùc hiÖn th«ng qua VIEW lµ kh«ng cho phÐp. VD: T¹o VIEW cã tªn NV_phong tõ R1,R2,R3 gåm c¸c trêng Hä_tªn,phßng CREATE VIEW NV_phong AS SELECT hotªn,tªnphong FROM R1,R2,R3 WHERE (R1.#NV=R2.#NV)and (R2.#MP=R3.#MP) with check option; *CREATE INDEX
Ph¹m Minh Quý - Database
13
Tæng quan vÒ ng«n ng÷ sql
14
B¶ng chØ sè lµ mét ®èi tîng ®Æc biÖt ®îc t¹o ra ®Ó cung cÊp cho viÖc truy nhËp tíi b¶ng trong CSDL mét c¸ch nhanh chãng Có ph¸p: CREATE INDEX index_name ON table(colum) VD: CREATE INDEX Nh©n _ vien_id ON NHAN_VIEN (Hä_tªn); b> LÖnh ALTER -Dïng ®Ó hoÆc lµ thªm mét hay nhiÒu trêng vµo b¶ng hoÆc söa ®æi mét cét hiÖn t¹i.SQL ANSI chuÈn kh«ng cho phÐp huû bá c¸c cét. -Có ph¸p: ALTER TABLE TABLE_name ADD | MODIFY | DROP option (colum Datatype..) +ADD:thªm cét míi +MODIFY:söa ®æi cét +DROP option xo¸ bá c¸c rµng buéc VD1:thªm trêng gia ®×nh kiÓu char(1) vµo R1 ALTER TABLE R1 ADD gia ®×nh char(1); VD2:Thay ®æi trêng §Þa_chØ Varchar(30) trong R1 thµnh §Þa_ChØ(20): ALTER TABLE R1 MODIFY §Þa_ChØ varchar(20); VD3:Huû bá rµng buéc trêng kho¸ #NV trong R1 ALTER TABLE R1 DROP constraint NV_prim c>LÖnh DROP Ph¹m Minh Quý - Database
14
Tæng quan vÒ ng«n ng÷ sql
15
-Dïng ®Ó xo¸ bá mét quan hÖ,khi ta xo¸ bá mét b¶ng c¬ së th× tÊt c¶ c¸c VIEW,INDEX ®îc ®Þnh nghÜa trªn b¶ng ®ã sÏ bÞ xo¸ bá . Có phap: DROP TABLE/VIEW/INDEX Name; VD:Xãa bá Nh©n_viªn_id; DROP INDEX Nh©n_viªn_id; 4>TËp lÖnh GRANT,REVOKE: *§Ó kiÓm tra quyÒn truy nhËp CSDL dïng lÖnh GRANT Có ph¸p: GRANT privileges ON object TO (user/public)[WITH GRANT OPTION] -c¸c quyÒn (privileges) truy nhËp CSDL: +Read(®äc) +SELECT(chän) +write(ghi) +INSERT(bæ sung) +UPDATE(söa ®æi) +DELETE,run. -§èi tîng (object) :lµ tªn c¸c quan hÖ hoÆc tªn c¸c ch¬ng tr×nh. -Tªn nguêi sö dông:Tªn cña mét ngêi ,mét nhãm ngêi hoÆc danh s¸ch ngêi public:cho tÊt c¶ mäi ngêi cïng ®îc sö dông. -Tõ kho¸ :with grant OPTION:®¶m b¶o ®Ó ngêi sö dông cã thÓ tiÕp tôc trao quyÒn sö dông cho ngêi kh¸c. VD:cho phÐp SELECT,INSERT,UPDATE trªn b¶ng R1 cho NghÜa,Kh«i Ph¹m Minh Quý - Database
15
Tæng quan vÒ ng«n ng÷ sql
16
GRANT SELECT,INSERT,UPDATE ON R1 TO NghÜa,Kh«i with grant option; NghÜa,Kh«i cã thÓ trao quyÒn trªn cho ngêi kh¸c. *§Ó huû bá quyÒn truy nhËp Có ph¸p:REVOKE privileges ON object FROM user VD:®Ó huû bá quyÒn UPDATE tõ NghÜa: REVOKE UPDATE ON R1 FROM NghÜa; Lêi kÕt thóc: Trong bµi nµy t«i muèn tr×nh bµy víi c¸c b¹n vÒ ng«n ng÷ SQL chuÈn ®Ó c¸c nhãm kh¸c cã thÓ tham kh¶o .Nhng do tµi liÖu vª SQL chuÈn kh«ng cã ,mµ t«i chØ tham kh¶o c¸c tµi liÖu vÒ SQL sö dông cho truy nhËp CSDL cña ORACLE cho nªn trong khi tr×nh bµy cã khi " L¹m dông" vÒ SQL sö dông trong ORACLE . RÊt mong c¸c b¹n gãp ý kiÕn!
Ngêi tr×nh bÇy : Ph¹m Minh Quý_K40B Tµi liÖu tham kh¶o : +INTRODUCTION TO ORACLE : SQL PL/SQL AND SQL*PLUS
Ph¹m Minh Quý - Database
16
Tæng quan vÒ ng«n ng÷ sql
17
Ph¹m Minh Quý - Database
17