1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Giao_trinh_SQL pdf

157 256 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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: Nguyn Tu 2 LI M U Ngôn ng SQL( Structured Query Language) đc s dng trong hu ht các h qun tr c s d liu đ truy vn và sa đi c s d liu. Ngôn ng SQL h tr các truy vn da trên các phép toán đi s quan h, đng thi cng cha các lnh sa đi c s d liu và mô t lc đ c s d liu .Nh vy, SQL va là mt ngôn ng thao tác d liu, va là mt ngôn ng đnh ngha d liu. Ngoài ra SQL cng tiêu chun hoá nhiu lnh c s d liu khác. Có nhiu phiên bn khác nhau ca SQL. Trc tiên, có ba bn chun. ó là ANSI ( American National Standards Institute) SQL. Sau đó đn nm 1992, bn chun SQL-92 ra đi gi là SQL2. Gn đây nht, chun SQL-99 ( trc đó gi là SQL3) m rng SQL2 vi các đc trng quan h-đi tng và mt s kh nng mi khác. Ngoài ra còn có nhiu phiên bn ca SQL đc các nhà bán các h qun tr c s d liu sn xut. Các phiên bn này có tt c các kh nng ca chun ANSI nguyên gc và chúng cng phù hp vi các m rng ca SQL cng nh các tính cht ca chun SQL-99. Trong giáo trình này chúng tôi trình bày da trên chun SQL-99. Giáo trình g m ba chng: Chng 1: SQL c bn, trình bày các truy vn c bn trên các bng c s d liu, các kiu d liu c bn trong SQL và cách to c s d liu đn gin trong SQL Chng 2: Các ràng buc và các trigger. Chng này trình bày các loi ràng buc : ràng buc min, ràng buc khóa, ràng buc toàn vn thc th, ràng buc toàn vn tham chiu, các ràng buc khác và cách th hin chúng trong SQL. Chng 3 : Lp trình vi SQL, trình bày các phng pháp l p trình trong SQL: lp trình nhúng, SQL đng, các hàm và các th tc PSM, s dng giao din gi. Ngoài ra, chng này còn đ cp đn vn đ an toàn trên c s d liu SQL. Cui mi chng có tng kt các vn đ trình bày trong chng và mt s bài tp.  hiu đc giáo trình này bn đc cn phi có các kin thc v c s d liu quan h. Do hn ch v th i gian và kinh nghim, chc chn giáo trình vn còn nhiu thiu sót. Mong các bn đc góp ý, phê bình. Chúng tôi xin cm n trc và ha s tip thu đ hoàn thin giáo trình hn. Ngôn ng SQL – Tác gi: Nguyn Tu 3 MC LC Trang Li m đu 2 Mc lc 3 Chng I SQL c bn 6 1.1 Các truy vn đn gin trong SQL 6 1.1.1 Phép chiu trong SQL 9 1.1.2 Phép chn trong SQL 10 1.1.3 So sánh các xâu 11 1.1.4 Ngày tháng và thi 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 Sp xp th t d liu ra 15 1.2 Các truy vn bao gm nhiu hn mt quan h 17 1.2.1 Tích và ni trong SQL 17 1.2.2 Làm rõ ngha các thuc tính 19 1.2.3 Các bin b 20 1.2.4 Các phép hp, giao, tr các truy vn 21 1.3 Các truy vn con 23 1.3.1 Các truy vn con to ra các giá tr vô hng 23 1.3.2 Các điu kin có bao hàm các quan h 23 1.3.3 Các điu ki n có bao hàm các b 25 1.3.4 Các truy vn con tng quan vi nhau 26 1.3.5 Các truy vn con trong mnh đ FROM 27 1.3.6 Các biu thc ni ca SQL 28 1.3.7 Ni t nhiên 28 1.3.8 Ni ngoài 29 1.4 Các phép toán quan h đy đ 29 1.4.1 Loi b trùng lp 32 1.4.2 Trùng lp trong phép hp, phép giao, phép tr 26 1.4.3 Nhóm và s kt hp 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 mnh đ HAVING 31 1.5 Sa đi c s d liu 36 1.5.1 Chèn 32 1.5.2 Xóa 34 1.5.3 Cp nht 35 1.6 nh ngha mt lc đ quan h  trong SQL 39 1.6.1 Các kiu d liu 36 1.6.2 Các khai báo bng đn gin 37 1.6.3 Sa đi các lc đ quan h 37 1.6.4 Các giá tr ngm đnh 38 1.6.5 Các ch s 38 Ngôn ng SQL – Tác gi: Nguyn Tu 4 1.6.6 Nhp môn v la chn 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 vn các khung nhìn 45 1.7.3 t tên li các thuc tính 46 1.7.4 Sa đi các khung nhìn 47 1.7.5 Gii thích các truy vn có cha các khung nhìn 48 1.8 Tng kt chng I và bài tp 49 Chng II Các ràng buc 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 vi UNIQUE 59 2.1.3 Làm có hiu lc các ràng buc khóa 54 2.1.4 Mô t các ràng buc khóa ngoài 55 2.1.5 Duy trì toàn vn tham chiu 56 2.1.6 Làm chm vic kim tra ràng buc 58 2.2 Các ràng buc trên các thuc tính và các b 60 2.2.1 Các ràng buc NOT NULL 61 2.2.2 Các ràng buc kim tra da trên các thuc tính 61 2.2.3 Các ràng buc kim tra da trên các b 63 2.3 Sa đi các ràng buc 64 2.3.1 t tên cho các ràng buc 64 2.3.2 Sa đi các ràng buc trên các bng 64 2.4 Các ràng buc mc lc đ và các trigger 65 2.4.1 Khng đ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 Tng kt chng II và bài tp 75 Chng III Lp trình 77 3.1 SQL trong môi trng lp trình 77 3.1.1 Vn đ tr ngi không phù hp 78 3.1.2 Giao din ngôn ng ch/SQL 79 3.1.3 Phn khai báo 80 3.1.4 S dng các bin dùng chung 81 3.1.5 Các câu lnh Select đn hàng 82 3.1.6 Con tr ( Cursor) 84 3.1.7 Cp nht bng con tr 87 3.1.8 Bo v khi s cp nht đng thi 88 3.1.9 Con tr cun 90 3.1.10 SQL đng 91 3.2 Các th tc đc lu gi trong lc đ 93 Ngôn ng SQL – Tác gi: Nguyn Tu 5 3.2.1 To các hàm và các th tc PSM 93 3.2.2 Mt vài dng câu lnh đn gin trong PSM 95 3.2.3 Các câu lnh r nhánh 96 3.2.4 Các truy vn trong PSM 98 3.2.5 Vòng lp trong PSM 99 3.2.6 Vòng lp FOR 101 3.2.7 Nhng câu lnh lp khác 102 3.2.8 Nhng loi tr trong PSM 103 3.2.9 S dng các hàm và các th tc PSM 105 3.3 Môi trng SQL 105 3.3.1 Môi trng 106 3.3.2 Lc đ 107 3.3.3 Danh mc 108 3.3.4 Client và Server trong môi trng SQL 109 3.3.5 Kt ni 109 3.3.6 Phiên 110 3.3.7 Module 111 3.4 S dng giao din mc gi 112 3.4.1 Nhâp môn SQL/CLI 112 3.4.2 X lý các lnh 115 3.4.3 Ly d liu ra t kt qu truy vn 116 3.5 Giao tác trong SQL 118 3.5.1 Xp 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 mc cô lp khác 128 3.6 An toàn và cp quyn trong SQL 137 3.6.1 Các quyn 138 3.6.2 To các quyn 139 3.6.3 Tin trình kim tra các quyn 140 3.6.4 Cp các quyn 141 3.6.5 Biu đ grant 143 3.6.6 Hy b các quyn 144 3.7 Tng kt chng III và bài tp 149 Ph lc I : C s d liu “CÔNGTY” 153 Ph lc II: C s d liu “MÁY TÍNH” 156 Tài li u tham kho 157 Ngôn ng SQL – Tác gi: Nguyn Tu 6 CHNG I : SQL C BN Ging nh các ngôn ng bc cao khác, ngôn ng SQL đc xây dng da trên các ch cái, các ch s, các ký t ( du phép toán, du ngn, du cách và các ký t đc bit) và mt tp các t khóa. Mt lnh ca SQL có th đc vit trên mt dòng hoc nhiu dòng, kt thúc bng du chm phy “;”. Ngôn ng SQL đc chia thành ba nhóm: - Ngôn ng đnh ngha d liu dùng đ mô t cu trúc ca c s d liu ( các bng, các khung nhìn, các thuc tính, các ch mc, .) - Ngôn ng thao tác d liu cho phép thc hin các thao tác trên c s d liu nh cp nht c s d liu và truy vn ly ra các thông tin t c s d liu. - Ngôn ng kim soát d liu bao gm các lnh dùng đ qun lý các giao tác, các quyn truy cp d liu, kt ni v i server Ngôn ng SQL có th s dng theo hai kiu: kiu trc tip và lp trình. SQL trc tip cho phép thc hin mt truy vn và nhn đc kt qu ngay tc khc. SQL lp trình cho phép s dng SQL trong mt chng trình vit bng ngôn ng ngôn ng lp trình bc cao khác ( C, Pascal, ), hoc vit các chng trình con. Trong chng này chúng ta s làm quen vi các lnh c bn ca SQL. Các lnh này đc minh ha da trên mt c s d liêu “CÔNGTY” cho  phn PHLC ca giáo trình. 1.1 CÁC TRUY VN N GIN TRONG SQL . Gi s chúng ta mun đa ra các nhân viên ca đn v có MãsV = 5 , chúng ta vit trong SQL nh sau SELECT * FROM NHÂNVIÊN WHERE Mã sV = 5 ; Truy vn này trình bày dng đc trng select-from-where ca hu ht các truy vn SQL. • .Mnh đ FROM cho quan h hoc các quan h mà truy vn tham chiu đn. Trong ví d trên, quan h đó là NHÂNVIÊN. • M nh đ WHERE là mt điu kin, ging nh điu kin chn trong đi s quan h. Các b phi tho mãn điu kin chn đ phù hp vi truy vn. iu kin  đây là thuc tính MãsV ca b phi có giá tr 5. Tt c các b đáp ng điu kin đó s tho mãn đi u kin chn. Ngôn ng SQL – Tác gi: Nguyn Tu 7 • Mnh đ SELECT nói các thuc tính nào ca các b đáp ng điu kin s đc đa ra nh mt phn ca câu tr li. Du * trong ví d này ch ra rng tt c các thuc tính ca b s đc đa ra. Kt qu ca truy vn là mt quan h cha tt c các b do tin trình này sn xut ra. Mt cách gii thích truy v n này là xem xét tng b giá tr ca quan h đc k ra trong mnh đ FROM. iu kin trong mnh đ WHERE đc áp dng cho b. Chính xác hn, các thuc tính đc k ra trong mnh đ WHERE đc thay th bng các giá tr ca thuc tính đó  trong b. Sau đó, điu kin đc tính, và nu đúng thì các thành phn xut hin trong mnh đ SELECT đc sn xut ra nh là m t b ca câu tr li. 1.1.1 Phép chiu trong SQL a) Chúng ta có th chiu mt quan h do mt truy vn SQL sn xut ra lên trên mt s thuc tính ca nó.  làm điu đó,  v trí ca du * trong mnh đ SELECT ta lit kê ra mt s thuc tính ca ca quan h đc ch ra trong mnh đ FROM. Kt qu s đc chiu lên các thuc tính đc lit kê. Ví d 1 : a ra Hđm và Tên ca các nhân viên  đn v có mã s bng 5. Chúng ta có th vit : SELECT Hđm, Tên FROM NHÂNVIÊN WHERE MãsV =5; Kt qu là mt bng có hai ct, có tên là Hđm và Tên. Các b ca bng này là các cp, mi cp gm Hđm và Tên ca nhân viên, đó là các nhân viên ca đn v có mã s bng 5. Bng kt qu có dng nh sau: Hđm Tên Lê Vân Trn c Nam Nguyn Sn V Hng Giang b) ôi khi chúng ta mun to ra mt quan h vi đu ct khác vi các thuc tính ca quan h đc k ra trong mnh đ FROM. Chúng ta có th vit sau tên ca thuc tính mt t khoá AS và mt bí danh (alias), bí danh đó s tr thành đu ct Ngôn ng SQL – Tác gi: Nguyn Tu 8 ca quan h kt qu. T khoá AS là tu chn, ngha là có th vit bí danh đi ngay sau tên thuc tính mà không cn phi có t khoá AS. Ví d 2: Ta có th sa đi ví d 1  trên đ đa ra mt quan h có các thuc tính Hnhânviên và Tênnhânviên thay cho v trí ca Hđm và Tên nh sau: SELECT Hđm AS Hnhânviên , Tên AS Tênnhânviên FROM NHÂNVIÊN WHERE MãsV = 5 ; Bng kt qu có dng nh sau: Hnhânviên Tên nhânviên Lê Vân Trn c Nam Nguyn Sn V Hng Giang c) Mt tu chn khác trong mnh đ SELECT s dng mt biu thc  v trí ca mt thuc tính. Ví d 3 : Chúng ta mun đa ra Hđm, Tên và lng sau khi đã đc tng 10% ca các nhân viên  đn v có mã s bng 5. Ta vit: SELECT Hđm, Tên, Lng*1.1 AS Lngmi FROM NHÂNVIÊN WHERE MãsV =5; Kt qu Hđm Tên Lngmi Lê Vân 3300 Trn c Nam 4400 Nguyn Sn 4180 V Hng Giang 2750 d) Chúng ta cng có th cho phép mt hng nh là mt biu thc trong mnh đ SELECT . Ví d 4: Ta mun đa thêm t ‘ngàn đng’ vào sau giá tr ca lng, ta vit: SELECT Hđm, Tên, Lng*1.1 AS Lngmi, ‘ngàn đng’ AS nvtính FROM NHÂNVIÊN WHERE MãsV =5; Ngôn ng SQL – Tác gi: Nguyn Tu 9 Kt qu Hđm Tên Lngmi nvtính Lê Vân 3300 ngàn đng Trn c Nam 4400 ngàn đng Nguyn Sn 4180 ngàn đng V Hng Giang 2750 ngàn đng Chúng ta đã sp xp mt ct có tên là nvtính và mi b trong câu tr li s có hng ‘ngàn đng’  ct th t. 1.1.2 Phép chn trong SQL Phép toán chn ca đi s quan h và nhiu th na sn có trong mnh đ WHERE ca SQL. Các biu thc đi sau WHERE bao gm các biu thc điu kin ging nh các biu thc điu ki n trong các ngôn ng lp trình. Chúng ta có th xây dng các điu kin bng cách so sánh các giá tr s dng sáu phép toán so sánh =, <>, <, >, <=, >= . Các giá tr có th đc so sánh bao gm các hng và các thuc tính ca các quan h đc k ra sau FROM. Chúng ta cng có th áp dng các phép toán s hc thông thng nh +, -, *, / đi vi các giá tr s trc khi chúng ta so sánh chúng và áp dng phép ni || đi vi các xâu. Mt ví d v phép so sánh là MãsV = 5  trong các ví d  trên. Thuc tính Mãs V đc kim tra xem có bng hng 5 hay không. Hng này là mt giá tr s. Các hng s, nh các s nguyên và s thc đc s dng và đc ghi nh cách thông thng trong các ngôn ng lp trình. Ngoài các hng s còn có các hng xâu. Các xâu trong SQL đc ghi bng cách đt chúng và trong cp du nháy đn, ví d, ‘Hà ni’ . Kt qu ca mt phép so sánh là mt giá tr lô gic TRUE hoc FALSE. Các giá tr lô gic có th đc kt hp bng các phép toán logic AND, OR, NOT vi các ý ngh a ca chúng. Ví d 5 : Truy vn sau đây hi v Hđm, Tên và Giitính ca các nhân viên  đn v có mã s bng 5 và Giitính = ‘Nam’ SELECT Hđm, Tên, Giitính FROM NHÂNVIÊN WHERE ( MãsV =5) AND ( Giitính = ‘Nam’); Kt qu Hđm Tên Giitính Lê Vân Nam Ngôn ng SQL – Tác gi: Nguyn Tu 10 Trn c Nam Nam Nguyn Sn Nam Trong điu kin này, chúng ta có AND ca hai giá tr logic. Các giá tr đó là các phép so sánh bình thng. Tip theo, ta xét ví d sau: SELECT Hđm, Tên FROM NHÂNVIÊN WHERE ( MãsV =5) AND ( Giitính = ‘N’ OR Lng <= 3000); Hđm Tên Lê Vân V Hng Giang Truy vn này đòi hi các nhân viên hoc là n hoc có lng nh hn hoc bng 3000. Chú ý rng các phép so sánh có th nhóm li bng vic s dng các du ngoc đn. Các du ngoc là cn thit bi vì th t u tiên ca các phép toán lô gic trong SQL là ging nh trong các ngôn ng lp trình, AND có th t cao hn OR, NOT có th t cao hn c AND và OR. 1.1.3 So sánh các xâu Hai xâu là b ng nhau nu chúng là cùng mt dãy ký t. SQL cho phép các mô t các kiu xâu khác nhau, ví d, các mng 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 bng mt trong các phép toán “ nh hn”nh là < hoc >=, chúng ta đang hi xem có phi xâu này đi trc xâu kia trong th t t đin. Nh vy, nu a 1 a 2 …a n và b 1 b 2 …b m là hai xâu, thì xâu th nht là “nh hn” xâu th hai nu hoc a 1 < b 1 , hoc nu a 1 = b 1 và a 2 < b 2 , hoc a 1 = b 1 , a 2 = b 2 và a 3 < b3 …Ta cng nói rng a 1 a 2 …a n < b 1 b 2 …b m nu n<m và a 1 a 2 …a n = b 1 b 2… b n , ngha là xâu th nht là mt tin t đúng ca xâu th hai. Víd ‘na’ < ‘nam’. SQL cng cung cp kh nng đ so sánh các xâu trên c s mt mu đi chiu đn gin. Mt dng la chon ca biu thc logic là s LIKE p trong đó s là mt xâu và p là mt mu đi chiu. Mt mu đi chiu là mt xâu có s dng hai ký t đc bit % và _ . Các ký t thông thng trong p ch  đi sánh đc vi chính chúng  trong s, nhng % có th đi sánh vi mt dãy có 0 hoc nhiu hn các ký t trong s, và _ đi sánh vi bt k ký t nào trong s. Giá tr ca [...]... 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. Chng 3 : Lp trình vi SQL, trình bày các phng pháp l p trình trong SQL: lp trình nhúng, SQL đng, các hàm và các th tc PSM, s dng giao. chun SQL- 99 ( trc đó gi là SQL3 ) m rng SQL2 vi các đc trng quan h-đi tng và mt s kh nng mi khác. Ngoài ra còn có nhiu phiên bn ca SQL

Ngày đăng: 20/12/2013, 23:15

HÌNH ẢNH LIÊN QUAN

Hình 3.1: Việc xử lý các ch−ơng trình với các câu lệnh SQL nhúng - Tài liệu Giao_trinh_SQL pdf
Hình 3.1 Việc xử lý các ch−ơng trình với các câu lệnh SQL nhúng (Trang 86)
Hình 3.15: Sự tổ chức của các yếu tố cơ sở dữ liệu trong môi tr−ờng - Tài liệu Giao_trinh_SQL pdf
Hình 3.15 Sự tổ chức của các yếu tố cơ sở dữ liệu trong môi tr−ờng (Trang 114)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w