Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 157 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
157
Dung lượng
1,1 MB
Nội dung
NGÔN NG SQL Ngôn ng SQL – Tác gi: Nguyn Tu 2 LI M U Ngôn ng SQL( Structured Query Language) đc s dng trong hu ht các h qun tr c s d liu đ truy vn và sa đi c s d liu. Ngôn ng SQL h tr các truy vn da trên các phép toán đi s quan h, đng thi cng cha các lnh sa đi c s d liu và mô t lc đ c s d liu .Nh vy, SQL va là mt ngôn ng thao tác d liu, va là mt ngôn ng đnh ngha d liu. Ngoài ra SQL cng tiêu chun hoá nhiu lnh c s d liu khác. Có nhiu phiên bn khác nhau ca SQL. Trc tiên, có ba bn chun. ó là ANSI ( American National Standards Institute) SQL. Sau đó đn nm 1992, bn chun SQL-92 ra đi gi là SQL2. Gn đây nht, chun SQL-99 ( trc đó gi là SQL3) m rng SQL2 vi các đc trng quan h-đi tng và mt s kh nng mi khác. Ngoài ra còn có nhiu phiên bn ca SQL đc các nhà bán các h qun tr c s d liu sn xut. Các phiên bn này có tt c các kh nng ca chun ANSI nguyên gc và chúng cng phù hp vi các m rng ca SQL cng nh các tính cht ca chun SQL-99. Trong giáo trình này chúng tôi trình bày da trên chun SQL-99. Giáo trình g m ba chng: Chng 1: SQL c bn, trình bày các truy vn c bn trên các bng c s d liu, các kiu d liu c bn trong SQL và cách to c s d liu đn gin trong SQL Chng 2: Các ràng buc và các trigger. Chng này trình bày các loi ràng buc : ràng buc min, ràng buc khóa, ràng buc toàn vn thc th, ràng buc toàn vn tham chiu, các ràng buc khác và cách th hin chúng trong SQL. Chng 3 : Lp trình vi SQL, trình bày các phng pháp l p trình trong SQL: lp trình nhúng, SQL đng, các hàm và các th tc PSM, s dng giao din gi. Ngoài ra, chng này còn đ cp đn vn đ an toàn trên c s d liu SQL. Cui mi chng có tng kt các vn đ trình bày trong chng và mt s bài tp. hiu đc giáo trình này bn đc cn phi có các kin thc v c s d liu quan h. Do hn ch v th i gian và kinh nghim, chc chn giáo trình vn còn nhiu thiu sót. Mong các bn đc góp ý, phê bình. Chúng tôi xin cm n trc và ha s tip thu đ hoàn thin giáo trình hn. Ngôn ng SQL – Tác gi: Nguyn Tu 3 MC LC Trang Li m đu 2 Mc lc 3 Chng I SQL c bn 6 1.1 Các truy vn đn gin trong SQL 6 1.1.1 Phép chiu trong SQL 9 1.1.2 Phép chn trong SQL 10 1.1.3 So sánh các xâu 11 1.1.4 Ngày tháng và thi gian 12 1.1.5 Các giá tr null và các so sánh bao hàm null 13 1.1.6 Giá tr logic UNKNOWN 14 1.1.7 Sp xp th t d liu ra 15 1.2 Các truy vn bao gm nhiu hn mt quan h 17 1.2.1 Tích và ni trong SQL 17 1.2.2 Làm rõ ngha các thuc tính 19 1.2.3 Các bin b 20 1.2.4 Các phép hp, giao, tr các truy vn 21 1.3 Các truy vn con 23 1.3.1 Các truy vn con to ra các giá tr vô hng 23 1.3.2 Các điu kin có bao hàm các quan h 23 1.3.3 Các điu ki n có bao hàm các b 25 1.3.4 Các truy vn con tng quan vi nhau 26 1.3.5 Các truy vn con trong mnh đ FROM 27 1.3.6 Các biu thc ni ca SQL 28 1.3.7 Ni t nhiên 28 1.3.8 Ni ngoài 29 1.4 Các phép toán quan h đy đ 29 1.4.1 Loi b trùng lp 32 1.4.2 Trùng lp trong phép hp, phép giao, phép tr 26 1.4.3 Nhóm và s kt hp trong SQL 27 1.4.4 Các phép toán nhóm 28 1.4.5 Nhóm 29 1.4.6 Các mnh đ HAVING 31 1.5 Sa đi c s d liu 36 1.5.1 Chèn 32 1.5.2 Xóa 34 1.5.3 Cp nht 35 1.6 nh ngha mt lc đ quan h trong SQL 39 1.6.1 Các kiu d liu 36 1.6.2 Các khai báo bng đn gin 37 1.6.3 Sa đi các lc đ quan h 37 1.6.4 Các giá tr ngm đnh 38 1.6.5 Các ch s 38 Ngôn ng SQL – Tác gi: Nguyn Tu 4 1.6.6 Nhp môn v la chn ch s 34 1.7 Khung nhìn 44 1.7.1 Khai báo các khung nhìn 44 1.7.2 Truy vn các khung nhìn 45 1.7.3 t tên li các thuc tính 46 1.7.4 Sa đi các khung nhìn 47 1.7.5 Gii thích các truy vn có cha các khung nhìn 48 1.8 Tng kt chng I và bài tp 49 Chng II Các ràng buc và các trigger 57 2.1 Khóa và khóa ngoài 58 2.1.1 Mô t khóa chính 59 2.1.2 Các khóa đc mô t vi UNIQUE 59 2.1.3 Làm có hiu lc các ràng buc khóa 54 2.1.4 Mô t các ràng buc khóa ngoài 55 2.1.5 Duy trì toàn vn tham chiu 56 2.1.6 Làm chm vic kim tra ràng buc 58 2.2 Các ràng buc trên các thuc tính và các b 60 2.2.1 Các ràng buc NOT NULL 61 2.2.2 Các ràng buc kim tra da trên các thuc tính 61 2.2.3 Các ràng buc kim tra da trên các b 63 2.3 Sa đi các ràng buc 64 2.3.1 t tên cho các ràng buc 64 2.3.2 Sa đi các ràng buc trên các bng 64 2.4 Các ràng buc mc lc đ và các trigger 65 2.4.1 Khng đnh ( Assertion) 65 2.4.2 Trigger 69 2.4.3 Các trigger trong SQL 69 2.4.4 Các trigger Instead-of 74 2.5 Tng kt chng II và bài tp 75 Chng III Lp trình 77 3.1 SQL trong môi trng lp trình 77 3.1.1 Vn đ tr ngi không phù hp 78 3.1.2 Giao din ngôn ng ch/SQL 79 3.1.3 Phn khai báo 80 3.1.4 S dng các bin dùng chung 81 3.1.5 Các câu lnh Select đn hàng 82 3.1.6 Con tr ( Cursor) 84 3.1.7 Cp nht bng con tr 87 3.1.8 Bo v khi s cp nht đng thi 88 3.1.9 Con tr cun 90 3.1.10 SQL đng 91 3.2 Các th tc đc lu gi trong lc đ 93 Ngôn ng SQL – Tác gi: Nguyn Tu 5 3.2.1 To các hàm và các th tc PSM 93 3.2.2 Mt vài dng câu lnh đn gin trong PSM 95 3.2.3 Các câu lnh r nhánh 96 3.2.4 Các truy vn trong PSM 98 3.2.5 Vòng lp trong PSM 99 3.2.6 Vòng lp FOR 101 3.2.7 Nhng câu lnh lp khác 102 3.2.8 Nhng loi tr trong PSM 103 3.2.9 S dng các hàm và các th tc PSM 105 3.3 Môi trng SQL 105 3.3.1 Môi trng 106 3.3.2 Lc đ 107 3.3.3 Danh mc 108 3.3.4 Client và Server trong môi trng SQL 109 3.3.5 Kt ni 109 3.3.6 Phiên 110 3.3.7 Module 111 3.4 S dng giao din mc gi 112 3.4.1 Nhâp môn SQL/CLI 112 3.4.2 X lý các lnh 115 3.4.3 Ly d liu ra t kt qu truy vn 116 3.5 Giao tác trong SQL 118 3.5.1 Xp hàng theo th t 119 3.5.2 Atomicity 121 3.5.3 Giao tác 123 3.5.4 Read-only transaction 124 3.5.5 Dirty read 125 3.5.6 Các mc cô lp khác 128 3.6 An toàn và cp quyn trong SQL 137 3.6.1 Các quyn 138 3.6.2 To các quyn 139 3.6.3 Tin trình kim tra các quyn 140 3.6.4 Cp các quyn 141 3.6.5 Biu đ grant 143 3.6.6 Hy b các quyn 144 3.7 Tng kt chng III và bài tp 149 Ph lc I : C s d liu “CÔNGTY” 153 Ph lc II: C s d liu “MÁY TÍNH” 156 Tài li u tham kho 157 Ngôn ng SQL – Tác gi: Nguyn Tu 6 CHNG I : SQL C BN Ging nh các ngôn ng bc cao khác, ngôn ng SQL đc xây dng da trên các ch cái, các ch s, các ký t ( du phép toán, du ngn, du cách và các ký t đc bit) và mt tp các t khóa. Mt lnh ca SQL có th đc vit trên mt dòng hoc nhiu dòng, kt thúc bng du chm phy “;”. Ngôn ng SQL đc chia thành ba nhóm: - Ngôn ng đnh ngha d liu dùng đ mô t cu trúc ca c s d liu ( các bng, các khung nhìn, các thuc tính, các ch mc, .) - Ngôn ng thao tác d liu cho phép thc hin các thao tác trên c s d liu nh cp nht c s d liu và truy vn ly ra các thông tin t c s d liu. - Ngôn ng kim soát d liu bao gm các lnh dùng đ qun lý các giao tác, các quyn truy cp d liu, kt ni v i server Ngôn ng SQL có th s dng theo hai kiu: kiu trc tip và lp trình. SQL trc tip cho phép thc hin mt truy vn và nhn đc kt qu ngay tc khc. SQL lp trình cho phép s dng SQL trong mt chng trình vit bng ngôn ng ngôn ng lp trình bc cao khác ( C, Pascal, ), hoc vit các chng trình con. Trong chng này chúng ta s làm quen vi các lnh c bn ca SQL. Các lnh này đc minh ha da trên mt c s d liêu “CÔNGTY” cho phn PHLC ca giáo trình. 1.1 CÁC TRUY VN N GIN TRONG SQL . Gi s chúng ta mun đa ra các nhân viên ca đn v có MãsV = 5 , chúng ta vit trong SQL nh sau SELECT * FROM NHÂNVIÊN WHERE Mã sV = 5 ; Truy vn này trình bày dng đc trng select-from-where ca hu ht các truy vn SQL. • .Mnh đ FROM cho quan h hoc các quan h mà truy vn tham chiu đn. Trong ví d trên, quan h đó là NHÂNVIÊN. • M nh đ WHERE là mt điu kin, ging nh điu kin chn trong đi s quan h. Các b phi tho mãn điu kin chn đ phù hp vi truy vn. iu kin đây là thuc tính MãsV ca b phi có giá tr 5. Tt c các b đáp ng điu kin đó s tho mãn đi u kin chn. Ngôn ng SQL – Tác gi: Nguyn Tu 7 • Mnh đ SELECT nói các thuc tính nào ca các b đáp ng điu kin s đc đa ra nh mt phn ca câu tr li. Du * trong ví d này ch ra rng tt c các thuc tính ca b s đc đa ra. Kt qu ca truy vn là mt quan h cha tt c các b do tin trình này sn xut ra. Mt cách gii thích truy v n này là xem xét tng b giá tr ca quan h đc k ra trong mnh đ FROM. iu kin trong mnh đ WHERE đc áp dng cho b. Chính xác hn, các thuc tính đc k ra trong mnh đ WHERE đc thay th bng các giá tr ca thuc tính đó trong b. Sau đó, điu kin đc tính, và nu đúng thì các thành phn xut hin trong mnh đ SELECT đc sn xut ra nh là m t b ca câu tr li. 1.1.1 Phép chiu trong SQL a) Chúng ta có th chiu mt quan h do mt truy vn SQL sn xut ra lên trên mt s thuc tính ca nó. làm điu đó, v trí ca du * trong mnh đ SELECT ta lit kê ra mt s thuc tính ca ca quan h đc ch ra trong mnh đ FROM. Kt qu s đc chiu lên các thuc tính đc lit kê. Ví d 1 : a ra Hđm và Tên ca các nhân viên đn v có mã s bng 5. Chúng ta có th vit : SELECT Hđm, Tên FROM NHÂNVIÊN WHERE MãsV =5; Kt qu là mt bng có hai ct, có tên là Hđm và Tên. Các b ca bng này là các cp, mi cp gm Hđm và Tên ca nhân viên, đó là các nhân viên ca đn v có mã s bng 5. Bng kt qu có dng nh sau: Hđm Tên Lê Vân Trn c Nam Nguyn Sn V Hng Giang b) ôi khi chúng ta mun to ra mt quan h vi đu ct khác vi các thuc tính ca quan h đc k ra trong mnh đ FROM. Chúng ta có th vit sau tên ca thuc tính mt t khoá AS và mt bí danh (alias), bí danh đó s tr thành đu ct Ngôn ng SQL – Tác gi: Nguyn Tu 8 ca quan h kt qu. T khoá AS là tu chn, ngha là có th vit bí danh đi ngay sau tên thuc tính mà không cn phi có t khoá AS. Ví d 2: Ta có th sa đi ví d 1 trên đ đa ra mt quan h có các thuc tính Hnhânviên và Tênnhânviên thay cho v trí ca Hđm và Tên nh sau: SELECT Hđm AS Hnhânviên , Tên AS Tênnhânviên FROM NHÂNVIÊN WHERE MãsV = 5 ; Bng kt qu có dng nh sau: Hnhânviên Tên nhânviên Lê Vân Trn c Nam Nguyn Sn V Hng Giang c) Mt tu chn khác trong mnh đ SELECT s dng mt biu thc v trí ca mt thuc tính. Ví d 3 : Chúng ta mun đa ra Hđm, Tên và lng sau khi đã đc tng 10% ca các nhân viên đn v có mã s bng 5. Ta vit: SELECT Hđm, Tên, Lng*1.1 AS Lngmi FROM NHÂNVIÊN WHERE MãsV =5; Kt qu Hđm Tên Lngmi Lê Vân 3300 Trn c Nam 4400 Nguyn Sn 4180 V Hng Giang 2750 d) Chúng ta cng có th cho phép mt hng nh là mt biu thc trong mnh đ SELECT . Ví d 4: Ta mun đa thêm t ‘ngàn đng’ vào sau giá tr ca lng, ta vit: SELECT Hđm, Tên, Lng*1.1 AS Lngmi, ‘ngàn đng’ AS nvtính FROM NHÂNVIÊN WHERE MãsV =5; Ngôn ng SQL – Tác gi: Nguyn Tu 9 Kt qu Hđm Tên Lngmi nvtính Lê Vân 3300 ngàn đng Trn c Nam 4400 ngàn đng Nguyn Sn 4180 ngàn đng V Hng Giang 2750 ngàn đng Chúng ta đã sp xp mt ct có tên là nvtính và mi b trong câu tr li s có hng ‘ngàn đng’ ct th t. 1.1.2 Phép chn trong SQL Phép toán chn ca đi s quan h và nhiu th na sn có trong mnh đ WHERE ca SQL. Các biu thc đi sau WHERE bao gm các biu thc điu kin ging nh các biu thc điu ki n trong các ngôn ng lp trình. Chúng ta có th xây dng các điu kin bng cách so sánh các giá tr s dng sáu phép toán so sánh =, <>, <, >, <=, >= . Các giá tr có th đc so sánh bao gm các hng và các thuc tính ca các quan h đc k ra sau FROM. Chúng ta cng có th áp dng các phép toán s hc thông thng nh +, -, *, / đi vi các giá tr s trc khi chúng ta so sánh chúng và áp dng phép ni || đi vi các xâu. Mt ví d v phép so sánh là MãsV = 5 trong các ví d trên. Thuc tính Mãs V đc kim tra xem có bng hng 5 hay không. Hng này là mt giá tr s. Các hng s, nh các s nguyên và s thc đc s dng và đc ghi nh cách thông thng trong các ngôn ng lp trình. Ngoài các hng s còn có các hng xâu. Các xâu trong SQL đc ghi bng cách đt chúng và trong cp du nháy đn, ví d, ‘Hà ni’ . Kt qu ca mt phép so sánh là mt giá tr lô gic TRUE hoc FALSE. Các giá tr lô gic có th đc kt hp bng các phép toán logic AND, OR, NOT vi các ý ngh a ca chúng. Ví d 5 : Truy vn sau đây hi v Hđm, Tên và Giitính ca các nhân viên đn v có mã s bng 5 và Giitính = ‘Nam’ SELECT Hđm, Tên, Giitính FROM NHÂNVIÊN WHERE ( MãsV =5) AND ( Giitính = ‘Nam’); Kt qu Hđm Tên Giitính Lê Vân Nam Ngôn ng SQL – Tác gi: Nguyn Tu 10 Trn c Nam Nam Nguyn Sn Nam Trong điu kin này, chúng ta có AND ca hai giá tr logic. Các giá tr đó là các phép so sánh bình thng. Tip theo, ta xét ví d sau: SELECT Hđm, Tên FROM NHÂNVIÊN WHERE ( MãsV =5) AND ( Giitính = ‘N’ OR Lng <= 3000); Hđm Tên Lê Vân V Hng Giang Truy vn này đòi hi các nhân viên hoc là n hoc có lng nh hn hoc bng 3000. Chú ý rng các phép so sánh có th nhóm li bng vic s dng các du ngoc đn. Các du ngoc là cn thit bi vì th t u tiên ca các phép toán lô gic trong SQL là ging nh trong các ngôn ng lp trình, AND có th t cao hn OR, NOT có th t cao hn c AND và OR. 1.1.3 So sánh các xâu Hai xâu là b ng nhau nu chúng là cùng mt dãy ký t. SQL cho phép các mô t các kiu xâu khác nhau, ví d, các mng ký t có đ dài c đnh và các danh sách ký t có đ dài thay đi. Khi chúng ta so sánh các xâu bng mt trong các phép toán “ nh hn”nh là < hoc >=, chúng ta đang hi xem có phi xâu này đi trc xâu kia trong th t t đin. Nh vy, nu a 1 a 2 …a n và b 1 b 2 …b m là hai xâu, thì xâu th nht là “nh hn” xâu th hai nu hoc a 1 < b 1 , hoc nu a 1 = b 1 và a 2 < b 2 , hoc a 1 = b 1 , a 2 = b 2 và a 3 < b3 …Ta cng nói rng a 1 a 2 …a n < b 1 b 2 …b m nu n<m và a 1 a 2 …a n = b 1 b 2… b n , ngha là xâu th nht là mt tin t đúng ca xâu th hai. Víd ‘na’ < ‘nam’. SQL cng cung cp kh nng đ so sánh các xâu trên c s mt mu đi chiu đn gin. Mt dng la chon ca biu thc logic là s LIKE p trong đó s là mt xâu và p là mt mu đi chiu. Mt mu đi chiu là mt xâu có s dng hai ký t đc bit % và _ . Các ký t thông thng trong p ch đi sánh đc vi chính chúng trong s, nhng % có th đi sánh vi mt dãy có 0 hoc nhiu hn các ký t trong s, và _ đi sánh vi bt k ký t nào trong s. Giá tr ca [...]... là m t bi n b M i l n s d ng c a R trong m nh FROM c theo sau b ng m t t khoá AS và 18 Ngôn ng SQL – Tác gi : Nguy n Tu tên c a bi n b T khóa AS là không b t bu c, có th có ho c không.Trong ph m vi tài li u này, chúng ta s b qua t khoá AS Trong các m nh SELECT và WHERE, chúng ta có th làm rõ ngh a các thu c tính c a R b ng cách thêm vào tr c chúng m t bi n b thích h p và m t d u ch m Nh v y, m t . trong SQL. Chng 3 : Lp trình vi SQL, trình bày các phng pháp l p trình trong SQL: lp trình nhúng, SQL đng, các hàm và các th tc PSM, s dng giao. chun SQL- 99 ( trc đó gi là SQL3 ) m rng SQL2 vi các đc trng quan h-đi tng và mt s kh nng mi khác. Ngoài ra còn có nhiu phiên bn ca SQL