Đăng ký Đăng nhập

Tài liệu Tìm hiểu sql

.PDF
89
13
65

Mô tả:

DAI MOC QUỐC GIA HA NỘỈ I K i ; o \ ( ; f)AI HOC KIlOA i l O f r ụ M i ỉ K N 1:L1ZABI;:T1I l y n c h N\ '.IjV'MD1CỈ1 N C.liYỉĨN N A M l l A i Đ H Q G MÀ N Ộ 1 trường OAi HOC CỐNGNGHẸ - r m i la N ọ i - 1 9 9 9 j V 1 Ẹ N I.Ờ I ( Ỉ I Ớ I T H I Ệ U Cuòii sách Iiày Iiliain m ụ c clícli ” iới ihiỘLi VC II^ÒII n'j,ữ tliao tác co' sỏ' d ữ liệu vSQL. Pliạm vi m à cu ồn sácli bao h à m chira có ngliTa đã là đ ấ y đủ. tuy lìhièn, sau khi d ọ c sách bạn SC c ó một cái nhìn dầ y đủ, tống quát VC nhiìii"; khái n iệ m dãnu, sau và một kiên thức làin việc với các lệnh của nó. Mac dù cuòìì sách đưực viêì dựa vào liòLi c h u á n S Q L củ a Cục T iê u chuấii Qiiỏc gia M ỹ - ANSI - 1986, nhưnc, bạn SC s ớ m thấy rằng khôns, có san |)iiẩni S Q L nào liiện liành áp clụiig th e o tiêu c h u ẩ n đó bị thất bại. C h ú n g lỏi cò' g ă n g giới Ihiộu với bạn các lệnh AN SI, và m ặ t khác, chỉ ra n h ữ n g lĩnh vực m à inột s ố trong n h ữ n g ứiig d ụ n g c h ủ y ê u củ a S Q L khác (t hư ờng vì Iiliững lý d o ưu việt ) với tiẽu c h u ẩ n , và s ự k h á c nhau thực sự giữa c h ú n g . Cliúng lôi c h ọ n d ù n g DB2, S Q L d B A S E IV, Inf orm ix và O ra cl e c h u y ê n imhiệp được coi nh ư n h ữ n g đại diệii củ a h à n g loạt (trên 50) áp d ụ n g c ủ a SQL. D B 2 chỉ có sấn ỏ' cấc m á y vi líiih lớn có bộ n h ớ k h ổ n g lồ ( m a i n iVaincs); Informix và O r a c l e trôn m á y tính lớn, m á y tính mini và m á y tính cá nliân PC^ (Personal c o m p u te r ) và d B A S E IV S Q L chỉ có ở P Q . T r o n g suốt bài viê( bạ n sẽ Ihấy S Q L ANSI và bòn loại S Q L - n gô n ng ữ hỏi có c âu trúc n à y đã đưực sử d ụ im và urưng phảii với nh a u trong các ví dụ. Phụ lục F3 inỏ tá tổng quát íừng sàn phắm. Chuoìig 12 đifa ra niột sơ đổ so s án h các đ ặ c đ i ể m c hín h với chỉ d ẫ n vắ n tát VC nhữn g kh ác biộl củ a c h ú n g với tiêu c h u ẩ n , bấl cứ c ác ph ươ ng liộn phụ nào mà c h ú n g dira ra và một c á m n h ậ n c h u n g đối với nhữn g gì nià c h ú n g L’iong n h a u đ e sử diiiig. Tuy nhiên. CLIÔH sách này không có ý định là một chỉ dẫn đầy đủ đối với Oracle, clBASE, In f o im ix và D B 2 ! N ế u b ạ n m u ố n biết thê m chi tiết VC bất cứ áp d ụ n g đậc biệt n à o củ a SQL , h ã y t h a m kh ả o các chỉ dẫ n c ủ a c h ú n g , hoặc tha m k h á o sác h dặc biệt vồ SQL. Lưu ý đòi vứi n h ữ n g người sử d ụ n g d B A S E (và hộ c ơ sở d ữ liẹu PC khá c) . Vì hiện nay S Q L (rỏ’ nên "đổiig bộ" với d B A S E IV, nhiề u người sử d ụ n g clBASE IV sẽ tự tìm thấy họ với m ộ t hộ t h ố n g m a n g đ á y đủ đặc đ i c m S Q L "được đưa v à o ” với clBASE. T r o n g hầu hết các trườiìo; hợp, n h ữ n g nuườ i sử dụiig đó sẽ m u a clBASE vì các tiện Iighi củ a clBASE m à k h ô n g vì nhiTng nét đặc cúa SQL. N ế u bạn là một troiiíí nhữn nỉỉười này, bạ n có thổ sẽ hơi n g ạ c nhièiì khi thấy S Q L làm được nlũrng điề u m à clBASE k h ô n g thể. H o à n c ả n h của bạn có thế sẽ hơi khác với h o à n c ản h củ a phần ló'n nhữníí imirời sỉr dụiig hệ cư s ở d ữ liệu SQL, n h ữ n g người có lõ dã c h ọ n m ột hệ vSQL c h o bán thán họ theo iihũTiíí ưu đ i c m riêníí c ủ a nó. C h ú n g tôi hy v ọ n g răng cuỏn sách n à y sẽ giú p các bạn làm q u e n với SQL, và giúp bạn thấ y dirợc bạn cổ the sát nliập vSQL với d B A S E IV nhu' thê 'n à o. Nèii hail dã làm qu e n V()i inot hẹ ihoiiu kl iôn u (.lựa vào SQL (\ I c!ụ. I1 CU h a n IIIIDV d à y cíà su' cỉụnc các hẹ co’ S(V (hì liệu l*C' c h a n u haii Iiliir (ỈBASíi hciáL 1’a r a d o x ) b ạ n s ẽ t ư n h i ê n l l i â v i n ì n l i l i i o n l i i ói i SCI s á n l i SQÍ . , VÓI n h ữ n u h ớ này, có thể hoà n toán hát đáu lừ sự bâì lọi của SQL. Nhưim han phiii Iihâ!i ra ràng n h ữ n g sư so sánh như vây ỉiiốim Iihư S(1 sáiili nhữim t]iiá c a m \'ới nliưiio quá táo, ca hai đcii cổ n hữn g inùi vị riênu và ícli lợi riC'nu ci’ia cliiìníi, nhưng c h ú n g h o à n toàn khác nhau. S Q L và d B A S E chi giốim nliaii ờ c h ỗ c a !iai đêu xử lý nhữníỊ d ữ liệu trong c ù n g hệ c ơ s ở dữ liệu; Nlur liạii sẽ th ày , SQL k h ô n g phái là một đối thủ cạn h tranli vứi các hệ c ơ sơ cỉữ liệu P C "truycn th ôn g" m à sẽ được sửdiino; đè bổ XLing c ho clnìnu. 1. (ỉ i ó i th i ệ u về S Q Í . . Khái (Ịiiát. T r o n g chươnc; n à y c h ú n s tôi sữ giới thiộu với các bạn lịch sử c ủ a S Q L , với nhữni; khái niệíTi liên qiian đã c ho ra đòi SQL , và một s ố lý d o tai sao liệ SQ L được ưa c h u ộ n g hơn các hộ t h ố n c c ơ s ớ d ữ liệu "truyến th ò n g " . M u c đícli với nhrrns thôim tin cơ bán này, bạ n sẽ được transĩ bị tốt hom trước khi xem các lệnh S Q L ở chươim 2. / . / . i\'ỉnỉ câu dinh Iii^liũí ciìd SQL. Nèii hạn rniiốn tóm trít tất cá nhữns; đ i e m q u a n Irọiiii VC S Q L trciim m ột câu, câu dưới đ â y có thô ho à n toàn làm đirợc điổu đó: •SQL (đọc 1à ''Sequel" liay "Ess C ue FJI" và có nghTa là "Nc;ỏn n u ữ hỏi càu trúc") là một ngô n n g ữ c ư sư dữ liệu ciựa trên các níỊuyŨMi lác liên c Ị u a n chứa các lệnh đối vcýi d ữ liệu thực hà nh ". Phấn còn lại của clurơng nàv là í i à n h c h o việc c,iai thích SQ L thưc sẽ nízhĩa là ! ' 1 .2. I j c h s ử t ó m tắt c ủd SQl.. S Q L dược h ã n g IBM chính thức đira ra và o íĩiữa nhữĩií; nă m 70 n h ư là một ciự án IRM imhiC'n cih.1 troni; Ịiliòim. đư ợc dựa trên Iihữns; liêu clniấn củ a B. F. Coclcl c ăn ban là p h ư ơ n c ph á p mới m iê u t;i n h ữ n u qu a n hệ c ủ a (lữ liệu kièu q u a n hộ (x e m phấn 1.3.4 và chircync i3 đè' hiê't thê m chi tiết ve "qu an liộ" níihĩa là cD. T r o n c thời gian nàv IBM đã xiiâì h:in (táy đỉi c ác chi tiêl VC tác p h ẩ m của m ì n h cho phép các nhà c u n g c ấp đưa ra các hệ t h ố n g SQL rât tưctns: tự với các hệ thốníỉ của IBM. C á c hệ t h ố n s S Q L t h ư ơ n g m a i đâu tiêĩi đã đirợc đưa ra vào cuối nh ữn g n ă m 70 đè sử cỉụiiu trèn c á c m á v tính lớii V M c ủ a IRM và các hẹ đicu hàiih đa n h iệ m - Unix (Ora cl e, Ineres). n g a y tiếp sau đ ó !à SQ L /D S của IBM c h o các hệ thốim ináy tính lớn V M và VSE. Và(i n á m I9S3 IRM dưa ra S Ọ l . trèii c ơ sớ DB2 ch o !iệ điổu hànli M V S . và thiết láp ticii chiiân c h o hệ thoni; co' sớ dữ liệu m á y tính lớn. T i o i m suốt Iihiriig Iiain 80, các hệ th õn g c ư sớ dữ liệu trèii niáy tính len và m á y tíiih rnini đèii cluọc dLía vào các liê iưưiig Cịiiaii, hệ c ơ s ở SQL. Cht) lỏi gáii dây, các má y tinh cá nliâii (l^c,) k h ò n g the đưa ra klia nan g línlì toáii và Ihòi uiaiì Iriiy nhập ihòrm tin vào cĩĩa nhan h c h ó n g cán tliiòt dê đic u liàiih clio inộl liẹ ihỏnu ciã dược "cli trú" từ các liộ tliônt; đa nhi ệm ( O ia e lc cỉuiycn Ii^liiẹp, liií onni x v.v...), và tất cá Iihữim liệ thống dó da được sát nh ậ p ihành các hệ cư s ỏ ' d ữ liệu PC hiẹn hà nh (d B A SE IV SQL , K: base v.v...). ỉ . S Q L là '^i và cái I^ì klioiiíỉ Ị)iiíii Ici S Q L . N hiề u nuười n h á m lan VC vai trò ciia S Q L tr on g t h ế giới cơ sở dữ liệu. Nêu 'chúng la nhìn vào cái mà k h ô n g pliải là nó thì sẽ dễ d à n g hơn để p h á n biệt •SQL là gì. S Q L k h ô n g Ị)hải là: - Mộl hệ q u á n lí cơ s ở dữ liệu (DB MS). -- Một ns;òii Ii” ữ lập trình thủ tục. - Một imôn n g ữ thố hộ thứ 4 (4GL). S Q L là: - Mộl ng õn imữ thực hành cư s ờ d ữ liệu p h o im ịihú ( D M L ) dựii Ircii iihũTig y niệ m qu a n hệ. - Một cách mới đỡ tạo ra nhữni; hè cư sỏ' tlữ liêu c ó thổ maiii; đi đu ợ c chi.) m ỏ i triròTit; phán c ứ n » và Ị)hán m ề m . - Đ ược thict kè dế sử d ụ n g một cácli iưưiig hỗ và cá được lổng trong n g ô n iiịỊỮ tliủ tục. Tất ca điồLi Iiày đưực giúi thích chi lict hơn dưới đây. / .,ỷ /. I/Ừ (ỊIKÌH lý co' sỏ' d ữ ỉiêu ( D B M S ) là ẹ/ ? Troiii; một hệ q u a n lý cư sứ d ữ liệu củ a m á y tính, tất cà các sò liộu đ ư ợ c giữ lại dưới mộl s ố dạiig vật chất được gọi là "cơ sở d ữ liệu". V iệ c truy nhậ p sô liệu dược điồu khiến b ằ n g phán m ề m đư ợ c gọi là DBMS; Chín li là D B M S "biết" diì liẹii được cất sz,iữ ở đâ u và tron g k h u ô n d ạ n g vật chất nào. Bail ihán D B M S được truy nhập đê bổ XLiiig, đ ể c ập nhật, xoá và c h í t vân d ữ liệu - b ằ n g một 1 1 2 ,0 1 1 n g ữ c ơ sở d ữ liẹu. S Q L là m ộ t ví dụ củ a m ộ t ngỏii ngữ CO' sử d ữ liệu, bản thân nó k h ô n g phái là m ộ t DBMS. Sự khác biệt giữa "máv cư sở d ữ liệu" cuim c ấp bơi D B M S , và ng ô n n g ữ được sử d ụ n g đẽ "đicii khiên" nó là một diồLi cỊiian trọnơ. ít nhấ t vồ m ặ t lý thuyèt, cliính D B M S cỏ (hê đuực truv Iihậc) bới nhicLi n g ô n n g ữ c ơ sở d ữ liệu khá c nliau, làm ngưừi sử dụni; linli hoại (rong viộc lựa c h ọ n g giao diện ch o d ữ liệu. Tiiy nhiên, trong thưc lè hạn sẽ Ihríy ráng cìôi với phan lÓTi c;íc innc đicli chiìng Ui có thế nghĩ đèn DB MS n h ư là sự đồiiu imhui. N h ư vậy S Q L k h ô n g phái là một D B M S , nhưn « ikS là một n g ô n Iiuữ Ihưc hành cơ sở dữ liệu. ì 3 . 2 . Niỉôìì riiỉữlân Ỉrìnỉi, Híiôìì i m ữ í l n ì tuc và 4( jL s. N h ư c h ú n g tôi đã nói trên đây, S Q L là m ộ t n gô n n ụ ữ liệu D M L ) . Phải c h ă n g nó khác với c ác ngô n Iigữ m á v c h ả n g hạ n n h ư BASIC - ng ôn n g ữ lập trình bậc c ao và hư ớ n g thươiig mại c h u n g ? Câu tní lời có ve là "Có". k h ô n g phải là n gô n n g ữ th ế hệ thứ 4. C h ỗ củ a S Q L n g ô n n g ữ m á y tính được giái thích dưới đ à y thực h à n h cơ sớ clữ tính ''th ôn ơ Ihường" C O B O L - imôn n g ữ T u y nh iê n , nổ c rm c trong t h a n g đ o c ùa Sự k h á c n h a u chủ yếu giữa m ộ t n g ô n n g ữ lập trình " tm y e n th ốn g" chantĩ h ạ n n h ư C O B O L , BASIC hoặc c ( c ũ n g đư ợ c coi là "nhữno n g ô n n g ữ thê liệ th ứ 3 ”), và m ộ t 4 G L đó là n h ữ n g n g ô n n g ữ tru yề n th ốn g là "thủ tục". Nói c á c h kh á c, người sử d ự ng ngôn n g ữ t h ế hệ thứ 4 có thê đơn gián ch o m á y tính biết kết q u ả gì yêu cầii và bán thân ngô n n g ữ ịihai lự làm thê Iiào để đạt được kết q u ả đó, trong khi đó ngirời d ù n g ng ồ n n g ữ 3 G L - thứ 3 phái chí rõ c ho m á y rinh m ộ t cách ch ín h xá c làm t h ế nào đ ể đạt đư ợ c kết q u á đó. T r o n g m ộ t t h ế giới lý tưởng, tất ca việc truy nh á p với tlữ liệu m á v tính nên được tiến hà nh qua ng ôn np;ữ thứ 4 - 4 G L ; T r o n g thưc tế, nííôn n g ữ thứ 3 - 3 G L s vẫn đ ó n g vai trò lổn troĩig hriii hốt các phát Iriên ứng dụ n g . M ặ c dù S Q L nên được n h ó m vứi các n gỏ n n g ữ k h ổ n g Ihiì tục ( n h ư hạn sẽ th â y khi x e m các lệnh SQ L trong c h ư ơ n g 2), hiin thân SQ L k h ô n g phái là n g ô n n g ữ thứ 4 - 4G L . Một trong n h ữ n g ký hiệu thươim mại c ủa m ột 4 G L cíó là nó c u n g c ấp m ộ t bộ n h ữ n g c ố n g cụ ở Irìiih đ ộ c ao dưới hình thức rnàn liình và c á c lliiết k ế bá o cáo, tạo ra các tiện ích của m e n u và v.v..., giá m bói n h iệ m vụ của người sử clụim tron g việc phai tự thiết lập c á c chirctng trình n h ư vộy. 3 G L k h ô n g đư a ra n h ữ n g kiến tạo lập trình (các v ò n g lặp, c á c n h á n h v.v...) và c ũ n g c hả ng phai m ặ t ph á n giới 4 G L là dễ s ử d ụ n g . T u y nh iê n, S Q L được thiết k ế đ ể sử dụnỉĩ, h o ặ c được "lổntỊ" với c ác noo n n g ữ lập trình thủ tục (cho phép người sử d ụ n g d i m s các p h ư ơ n g tiện truy tìm d ữ liệu p h o n g phú của SQ L kết hợp với bâ't cứ c ô n g cụ lập trình n à o nổ yè u c á u ) phấ n lớn n h ữ n g noười m u a đồii sẽ th â y rằng việc áp d ụ n g SQ L c ủ a họ c ù n g với 4 G L c ũ n g g iố n g n h ư c ác tiện ns;hi làiTi c ho việc sử diiỉií: S Q L dễ d à n g hơn. Đ i ề u n à y k h ô n g có ng hĩa là bạn chí có thế sử clụníĩ S Q L từ m ộ t n g ô n n g ữ ' t r ì n h độ cao" . Các lệnh S Q L c ũ n g có thỏ đirực sử d ụ n g một c á c h tươim tác, vói người có t m y nh ậ p trực tiêp vào c ơ s ơ d ữ liệu. Sự thực, ciiôn sách n à y h ầ u n h ư tập trun g giành rièna; c h o tác d ụ n g "tirơnỉĩ củ a S Q L - Sau 4 licl, n ế u bạn k h ô n g hiểu các lệnh c ơ biĩii củ a S Q L ở Irìiili đ ộ "tidìi gian tinât" ciia c h ú n g bạn sẽ dừ n g cli C|uá xa khi cô g ắ n g lồng c h ú n g vào inột l ụ ò n n g ữ làm chii ! T u y nhiôn, nhiề u Iigircyi ha y sử d ụ n g hệ t h ố n g SQL sẽ ll A'y c á c lệnh vSQL íương đôi kh ó học, và sẽ thích d ù n g các d ạ n g 4 G L hoặc vơi c á c gi a o diộii bá o c áo hưn h o ặ c Ihiiô m ộ t người nào đó viê( đơn trèii cơ sơ S Q L c h o bằiig niộ( ngô n ngữ lliứ 3 lioặc thứ 4 - 3 G L /4 G L . VI p h ư ơ n g tiện n à y c h o phép c ác liộ sô d ữ liệu PC hiện h à n h , c h ẳ n g liạii n i ư clBASE IV, giú p S Q L tioii p h ạ m vi c á c c ấu tiúc lệnh hiộn hàn h cùa ch ún g. Ngirời d ù n g dBAvSE c ó thể s ử d ụ n g các phưư ng tiện truy (ìm d ữ liệu cua S Q L đ ể truy n h ậ p d ẽ liệu, và sỉr d ụ n g bản th<ân d B A S E n h ư là m ộ t ngôn ngữ lập trình d ể làm việc với d ữ liộLi, c h ả n g hạ n n h ư biểu d iễ n nó dưới các ci.»ng và c á c b á o cáo. Ý ngliTa vị trí c ủ a S Q L giữa 3 G L trình đ ộ c a o và 4 G L , và D B M S , được bàn t u i i g phÀn 1.5 - " íc h lợi của việc sứ d ụ n g SQL ". I .3.J. M ô liiiìlì Cỉiian Ììê lủ .nì C i i í n g tôi dã đề c ậ p clến S Q L được d ự a trên n h ữ n g n g u y ê n tắc c ủ a m ô hình cơ s ở d ữ liệu quan hẹ đấu tiên đư ợ c trình b à y bởi E.F. C o d d ( C o d d 1970). M i ư n g " q u a n liệ" nghĩa là gì ? lỉá u n h ư nh iề u c u ố n sách đã chỉ già nh c h o m ột câ u hỏi n h ư vậy. N h ư n g k l ô n g thể giãi Ihích đ à y đủ ý ng h ĩa q u a n hệ tro ng m ộ t đ o ạ n v ă n ngắ n, và c h úng lôi sẽ khôiig cô gắ ng ! ỏ đ i ể m này, c h ú n g tôi sẽ chỉ m i ê u tả mộl sô thuộc tính c ủ a hệ th ống q u a n h ệ ở rnột trình đ ộ cực ky hư cấu, chỉ n h ư víỊy bin mới c ó thể c ó m ộ t "sự c ả m Iihâii" về nó là gì. T r o n g c h ư ơ n g 13, c h ú n g tói b à n về " n h ữ n g q u y tắc chính xác ca o" củ a Cocld đ ể qu y ế t đ ị n h x e m x e m irột hộ c ó q u a n h ệ trong một chi tiết n à o d ó h a y k h ô n g , cô g ắ n g dịc h s a n g tTỘt íhứ tiếng A n h ng h iệ p d ư hơn là th e o những c ô n g thức, và chi ra c h ô n i o S Q L tuân thủ và c hỗ nào S Q L k h ô n g liiíìn thủ q u y tắc. TVt n h i ê n bạn có thể học sử clụiig vSQL một c á c h có hiộu q u ả Iigay cả nêu b in k h ô n g có khái niệin về c ơ sở lý th u y ế t c ủ a nó, chỉ vì b ạ n k h ô n g thổ lái Xỉ lốt nếu bạn không biết một chút gì về các bộ phận máy móc . Tuy nhiên, c3 m ộ t s ự hiểu biết về lý thuyết liên q u a n clù chỉ là s ơ sơ, c ũ n g sẽ g iú p bạn lliíy đ ư ợ c S Q L tr on g văii cảnh , và c h o bcỊH m ộ t cảtn n h ậ n về n h ữ n g ịiỉiát tiiển có thể có trong SQL.. Miư v ậ y c ó Ihể đ ọ c ch ươ ng 13 h o ặ c bây g i ò h o ặ c sau khi bạn đ ã h ọc m ộ t sò' lệnh S Q L . N ế u chỉ một điều bạ n m u ố n h ọc từ nó đ ó là S Q L k h ô n g phải li D M L q u a n liệ đ á y đủ thôi thì bạn sẽ học đư ợ c một điề u c ực kỳ q u a n Iiọng. 1 M ớ ỉìììììì íuiơn Ììê - ìììô tả tóììì tắt. 5 N h ư chÚDii tòi dà ĩìói ứ trèiì, ịiháii này k h ò n g n h a m lỏm lãt 12 Cịui tãc c ủ a Cotlci (lâi cá n h ữ n g qiii lác inà bấ( cứ Cịiiaii lìệ ctí sớ ilữ liẹii nàt) c ũ n g plìái liiaii lliú đirực thực sự gọi là qiiaii hệ), t ) tlây c h ú n g tòi chí m i ê u (á ló m tãl mộ( s ố ký hiệu thirofng mại của m ộ t hệ tỊiian hệ. K ý hiện t h ư ơ n g mạ i dỗ thấy nhâì củ a mọt CO’ sớ dữ liệu Cịiian hệ đ ó lìó g i ữ sò liệu tr o ng c á c b á n g g ồ m các h à n g và cột. N ê u ban đ ã d ù n g P a ra do x, d B A S E tr o ng c h ế đ ộ B R O W S E , h o ặ c Iigay cả c ơ sơ dữ liệu Lo tu s 1 - 2 - 3 (k h ô n g c ó cái n à o h o n g chúiig là h o à n toàn q u a n hệ th e o c á c qui tắc của C o d d ) thì bạn đã cổ mộl ý n i ệ m tốt vé k.hitôiì m á u ciìa c á c c ơ sở clữ liệu "lập bá ng". Đ â y là m ộ t biể u đ ổ c ủ a một b ả n g biểu đ iê n hình. 1K.) TỀN ĐỊA ( l l i KHT QUA D Ặ I RA Smith Siisan 16, Fi sh e r C los e 15.000 Robinson John 3, D e vo n G a r d e n s 70.000 Aila ms Evelyn 103, M ile En d Rcl 50.000 C ác h à n g k h ô n g th e o thứ tự khi chúiig n h ậ p t h ô n g tin n g ô n n g ữ íhao tác d ữ liệu (t ro ng tr ư ờn g h ợ p c ủ a c h ú n g tòi là S Q L ) phái đưa ra m ộ t pliirc/Dg p h á p đ è khai thác c á c tộp h ự p phụ của các cột và các hà ng, và nưi tiếp các liàiig th e o bất cứ tií\l tư n à o niìuh inuốn. Một li o n g Iihững đ ặ c đ iể m hon hèì chứiig tỏ niộl hệ là cỊiian hệ đó là k hả n ă n g sử ciụng m ộ t lệnh đ(Tii của đ ê khai thác th ông lin íừ nhiồ u b ả n g đ ổ n g tliời tioiig vSQL, lện h n à y được gọi là S E L E C T - lựa c họ n. Đ ế lấy m ộ t ví dụ từ c ư sở d ữ liệu b á n h à n g /d ặ t h à n g m à Iroiig cá c u ố n s á c h n à y sứ d ụ n g làm ví dụ ( x e m 2.4. c ó m i ê u ta đ ầ y điì), bạn có thè’ nổi; S E L E C T s u r n a m e , a m o u n t F R O M s a l e s m e n , con tra cts W H E R E s a l e m a n , s u r n a m e = con trac ts, s u r n a m e ; tie the’ h iệ n to à n bộ giá trị cú a íừng hựp đ ồ n g (từ b á n g các h ợ p đ ổ n g ) c ù n g với tên c ủ a người ch ịu trách n h i ệ m bá n h à n g (tìr b a n g n h ữ n g người b á n hàna,). C ác cột có lliể g i ữ s ô liệu dưới c ác hình thức k h á c nh a u (đó là: đặ c đ i ể m , số, n g à y ). C h ú n g c ũ n g có thể giữ m ộ t giá trị N U L L - rỗng, n g h ĩ a là "giá trị k h ô n g biết (lìhư s ự k h á c nhau lừ "để trốiig" hoặ c "O"). Sử d ụ n g c á c ký tự r ô ng - N U L L là m ộ t ví dụ cíia n h ữ n g k iế m tra (h oặ c "iihữiig ràng b u ộ c k h ỏ n o thể íách rời") m à D M L phái đ ư a ra đế đ ả m bá o rằng ch ỉ có s ố liệu ttú ng (nói m ộ t c á c h q u a n hệ) là được p h é p Iihâp. Ví du, kiếu q u a n hệ k h ô n g c h o p h é p b ạ n n h ậ p n h ữ n g hà ng sai lai. N hư bạn íhây lừ ví tlụ (rcii ctây, Iiị>ười sử dụng họ (hông lương cỊuan kliỏng c ẩ n biết chút gì VC vị tií của c ác (ệp ho ặc các cấu (lúc d ữ liệu vạt lý. Người dij ng c ũ n g khòiig cần lích cực lạo la n h ữ n g licn kèì giữa c á c b ả n g (không g i ô n g n h ư lộiih S E T R E L A T I O N c ủ a clBASE IV). D B M S c hị u trách nhiệm với lAÌ c ả n h ữ n g việc kliông sạch sẽ đ ể giữ h à n h (rình "G ia n h ậ p " các bàng b iể u đ ã Ihoá m ã n các cliÁI VÁI1 củ a bạn. Mộ( Irong n h ữ n g c ô n g cụ của nó sử d ụ n g đ ể có Ihể đ ả m đươ n g được việc Ii«ìy đ ó là Sys(em C a t a l o g - một lifii trĩr tất c ả cac chi tiết về lất cả b á n g biểu trong c ơ sở d ữ liệu m à D B M S chịu Irách n h i ệ m cíỊp nhạt. Kết q u ả là, nó có thể làm n h ữ n g viộc g iố ng như c h u y ể n d ữ liệu từ tĩĩa n:iy s a n g tĩĩa kh á c, và n g a y cả pliAn phối cluìiig cho c á c n iá y tính k há c (c hẳ ng h ạ n n h ư trên m ột m ạ n g m à k h ô n g c ầ n người sử (lụng đ ể ý clếii điều gì đã lliay đổi. J .3.5. Nìiữiiị’ ỚỊ} duiiỊỉ c ủ a lìiâ liìiili (/Iiaii lìê. Kh ôn g c ó lý d o lại sao khôiig (liể c ó Iiliiềii D M L khác nhau một cách triệt clể (ừ c á c nhà cuiig c ấ p khá c nha u á|) tlụng kiể u cỊuan hệ. N h ư n g tioiig thực lế, ngô n n g ữ liêu c h u ẩ n đã dưực m ơ tiròng tro ng suốt 2 0 n ă m q u a là SQL. ỉ uy nliiêi) "(ièu c h u ẩ n " là một sự d ừ n g từ sai. Hiện đ ã c ó hơ n 5 0 áp dụn g lìiệii h à n h c ủ a SQ L , n hư ng k h ô n g cái n à o tương lự với mộl tiêu c h u ẩ n Iiào ! K liô ng c ó bấl c ứ inộl S Q L hiộii hànli (lào h o à n (oàn là q u a n hẹ. C o d d llian vàii lnrớc sự tliẠt rằng ng a y cá D B 2 c ủa IBM chi "đạt đ ư ự c " 7 trong sô 12 qui tắc c h ín h xác cao. Do vậy m ặ c dù lý Ihiiyết q u a n liệ đ ã được c h ấ p nh ậ n n h ư là m ộ t c ơ sở hợp lý đôi vứi truy n h ậ p và baỏ qiiảii d ữ liệu, c h ú n g lôi vá n c h ư a c ó một hệ tliôìig q u a n hộ ihực thụ írôii (hị tnrờng. l Á . Ti ê u r l m ẩ n A N S I 1986. M ột thước d o thực tế áp d ụ n g cỉia S Q L là s ự phù hợp c ủ a nó với tiêu cluiắn S Q L ANSI 1986. Ti êu clniắn ANSI tưưng tự đối với tiôu chiiẢn S Q L IBM, (tnà c h o d ế n n a y vẫn là tiêu c h u ẩ n thực tô) m ặ c dìi lió c ó lìhiều k h á c biột kh á q u a n Irọng. Bạn sẽ thây lằ n g h á u hèt n h ữ n g áp d ụ n g vSQL h iệ n h à n h sẽ lự q u ả n g c á o c h ú n g Iihir là sự phù h ọ p với c«ỉ tiêu cluiẢiì IBM và ANSI. Đ ồ n g n g h i ệ p c ủ a C o d d - Chris D at e đã xuấf bản một c u ố n s á c h ký thư (và đ á n g d ọ c ) b à n về liôu c h u ẩ n ANSI, sự kh ác biệt cỉia c h ú n g với D B 2, và các lĩnh vực m à ô n g ta c ả m thấy rằng đ ó là n h ữ n g q u y ế t đ ị n h tốt h ơ có the đã được là m ra đ ể bao h à m cái gì và k h ô n g b a o h à m cái gì ( D a t e 1988). Bởi vì nh iề u á p d ụ n g S Q L hiện liàiih đã đư ợ c đưa Víào s ử d ụ n g tnrớc khi ban h à n h tiêu c h u ẩ n ANSI, có nhiề u lĩnh vực m à m ặ c dù tiêu c h u ẩ n đặ t ra nh ững cỊui tắc h ợ p lý n h ư n g hiện n a y hầu n h ư k h ô n g c ó S Q L c h í n h n à o làm theo c h ú n g ! (một ví tlụ hay về điổii này là khái niộm đ ộ c n h ấ t đ ư ợ c bàn trong 4.4.5 ). ! Ilong lự, có Iihicii lĩnh vực mà tiòu chii;iii ANSI ilưòiig Iihư c ỏ ý làm n gơ vứi các lệnh q ue n dìing dáii sao đã !ÌI11 Ihày ứ liầii hết S Q L - ví clụ, tại sao ANSI kh ôii " đưa ra một lệnh để D R O P (bó rơi) m ộl T A Ĩ Ỉ L E ( b á n g biếu) ? Và có nhiể u lình vực khác m à tiêu c h u ẩ n S Q L A N S I d ư ờ n g như trệch hướiig rõ rệt với lý íhuyết qua n hệ (ví (Jụ t ro n g việc c h o ph é p c á c hãng sao lai). ■ . ■ ■ ■ X o n g , m ặ c ciù tiêu c h u ẩ n ANSI là m ộ t đ i ể m Ih a m c h i ế u hữu ích d ù n g nó đê’ đ á n h giá m ộ t áp d ụ n g đặc biệt c ủ a SQL , nhưiig S Q L tiêu chiiắĩi A N Si k h ô n g cấn thiết là "lốt nhất" - nghTa là, S Q L là q u a n hệ nhất d ể áp dụng. C h í n h C o d d tự trích dẫ n (Cocld, 1988). N h ữ n g người bán rong D B M S đ a n g gâ'p nít ủ n g hộ n g ô n n g ữ cấu trúc chất vấ n (kế cả giai thích Iheo q u a n đ i ế m ciia IBM ha y người anh e m liọ yế u hcm AN SI cỉia nó). Đ iể u n à y g i ố n g n h ư x e m m ộ t ctàn chu ột vù ng bắc cực lụ tập trên bãi biển đế c h u ẩ n bị d iề u h à n h x u ố n g biển". Trong SIIÔÌ cuốn sách này chúng lôi sẽ chí ra các lĩnh vực mà tiêu chuẩn ANSI (.lườiig nh ư k h ô n g đi'i hoặc k h á c nha u lõ lệt với hầu hết c á c áp d ụ n g thực tế. /. 5 . icli lợi CIUỊ \ ử (Ịụniị SQL. Bạn có thể thấy khó hiểu bởi vì tại sao S Q L lại được p h ổ biến đ ế n vậy. Đ â y là m ộ t vài lý do đã đ ó n g gó p vào sự thành c ồ n g của nó. a. M ộ t sự thiết lập lý thuyết hợp lý. M ô hình q u a n hệ đã được đa sô c ác c h u y ê n gia c h ấ p Ihiiậiì n h ư là một cách "tốt hcyii" m ô tii c ấu trúc d ữ liệu. N ó |ihụ th u ộ c vào n h ữ n g p h â n tích hựp lý n g h i ê m ngặt, và tìnig hoạt đ ộ n g có thế đư ợ c c h ứ n g m i n h b ằ n g lý íhuyết toán liọc làm nển tảng. b. IBM s ử cliiiìg nó. T r o n g n g à n h c ô n g n g h iệ p m á y tính hiện nay , việc x á c đ ịn h ch ất lưcmg của tất cả các sản p h ẩ m của IBM (th ô n g thirờiig) là đủ đ ể đ á m b á o sự thành c ô n g c ủ a hãng. M ộ t khi S Q L /D S và DB2 đ ã liớ th à n h hệ t h ô n g cơ sở dữ liệu IBM tương lai c ủ a S Q L đ ã đư ợ c đ ả m báo. c. M ộ t S Q L căn c ứ vào D B M S là linh hoạt với điểu k iệ n c ủ a c á c ng ôn ngữ v.v... đ a hỗ trợ. T r o n g c á c điểu kiện điều hành c ơ sở d ữ liệu, SQ L c h i ế m vị trí tning gian giữa n g ô n n g ữ 4 G L hoặc 3 G L "trình đ ộ c a o " và p h ẩ n m ề m D B M S "trình độ thấp". 4 G L và /h o ă c 3 G L sc DBMS K h á Iinne c ủ a SQ L h à n h tlộng n h ư là một "vùng đ ệ m " giữa ng ô n ngữ lập tiìnli b ậ c c a o và |)liần m ề m D B M S bộc (hấp dưa ra một clắii môi cho inột tr o n g n h ữ n g lý d o làm c h o nó n g à y c à n g trở liên phổ biẽn. Vì vị Irí "đứng g iữ a " n à y tạo ra khả n ă n g c h o c á c bộ phận cấu thành trình clộ c ao và trình clộ th ấ p k h á c nhau cUrực c ắ m v à o x u n g q u a n h m ộ t phân giới tiôu chuẩn SQL . ít nhất về lý th uyế t, n h ữ n g Iigười sử d ụ n g cơ s ở d ữ liệu tương lai có thể lựa c h ọ n cà m á y c ơ s ở d ữ liệu ưa thích ÌKin của họ cá về mặt pliAĩi giới với S Q L cỉia họ. N h ữ n g n hà c u n g c ấ p các hộ cơ sở d ữ liệu biết rõ vể những kliả Iiáng x ả y ra bởi áị) tlụng liêu cliuẩii SQL. d. C ác hộ lỉiốiig cơ sở S Q L có (hể m a n g đi được. Mộ( t i o n g n h ữ n g hấ p d ầ n lớn c ủ a S Q L đ ó là Ỉ1 Ó đưa ra m ộ t phân giới tiêu ciniẩn d ể truy Iihập d ữ liệu q u a nh iề u môi tnrờng kh ác nhau. Người nà o dã học S Q L Irêii PC clBASE IV c ủ a aiih ta lliì anh ía có (hổ c h u y ế n s a n g chủt vÁn hệ t h ô n g D B 2 m á y tính lớn IBM với một thời gian đ à o tạo lại rất ngăn. T r o n g mồi Irưừng m ở l ộ n g x ử lý p h â n tán hiệii nay lạo ra một Ihiiận lợi lớn c h o S Q L . T ấ t Iiliiên, c u ộ c tranh luận nà y c h ỉ g i ữ lại s ự Ihạt c h o đ ê n khi người d ù n g c ả m thấy hài lò ng khi s ử d ụ n g c ác lệnh vSỌL " m â u chốt". N h ư dã đổ c ậ p Irôii dủy, một khi h ệ vSQL đư ợ c sản xuất ra "Gần gũi với người sỉr ciụng" với viộc bổ xung những c ô n g CỊI 4 G L chẳng hạn Iihư các menu, thict k ế k h u ô n inÃii và lập b á o cáo, ngircri s ử d ụ n g trở nên "bị khoẩ vào" với ưng d ụ n g đ ặ c biệ l đó. G i a o d iệ n đố i với ứn g d ụ n g khá c sẽ k h á c nh a u clôn nôi người ciùiig c ũ n g có Ihể học m ộ t c h ư ơ n g trình hoà n c hỉn h h o à n toàn mới. T u y nhiôn, rnộí s ố á|) d ụ n g S Q L hiệ n na y đã có sẩn c h o n h ữ n g m ô i tiiKTfiig ỊỊliần c ứn g, phấn m é m k há c Iihau. V í dụ: O r a c l e - có sán trong các hệ l’C D O S là m ộ t ”cư sở clữ liệu" troiig ý ng h ĩa thuầ n khiỗt - d ó là, một thực tại có c h ứ a clữ liệu và nó b a o gồrn m ộ t (ập hợp c á c lệnh d ể chất vấii d ữ liệu đó. N ó k h ô n g phái là mộl n g ô n n g ữ lập (rình g iố ng như dB A S E . C ơ s ở d ữ liẹii có thể đ ư ợ c truy nliẠp b ằ n g bất c ứ 4 G L nào m à biết "các đ i ể m m ó c nối" và o m á y tính phục vụ SQL. C ác h ệ S Q L tất n h iê m sẽ liếp tục si nh sôi n ả y nỏ' tron g suổt thê giới PC. N h ư U n i x lĩ ở thànli m ộ t sự lựa c h ọ n phổ biến hơn với các hệ PC nhiè u người d ù n g , các cơ s ở d ữ liệu c ủ a sự lựa c h ọ n sẽ là tất cả S Q L dựa trên ( I n fo rm ix , O r a c l e v.v...). IBM b a o g ồ m cà S Q L nh ư là m ộ t phần cỉia kiên lnìc ứn g d ụ n g hệ th ôn g cùa ĨIÓ ( S A A - Sy s te m s Applications A r c h i t c c t u i e ) inà có ng h ĩa là nó có niộl sự rà n g b u ộ c n à o đó đ ể tiếp lục đưa ra và phát tnéii các ứim tluim SQL; /\ii pliáni incV lọiig OS/2 (hệ tlicu hà nh tla n h iệ m I ba o go m Iiiot áp cluiii> cíia SQL; và có Iihicii m á y líiih Ịihục S Q L |)hía lliư ha dà giói ihiẹii cliC) OS/2 (ví du, sự eộiig tác giữa Ashtoii - Tale và Microsoft). rỏni tắt. Ch ư ơ n g này dà giới thiệu ban với SQ L b ằ n g c á c h giái Ihícli tóni tál vai trò của nó trong thố giới c ơ sở (lữ liệu. Bạn đã h ọ c đư ợ c cái gì g â y c á m h ứ n g c h o sự phát triển của nó (kiêu q u a n hệ cú a C o d d ) ; N ó đã sinh sôi n á y IIỚ Iihư Ihê nào CỊiia c ộ n g đ ồ n g sử d ụ ng má y d iện (oán ( mini, m á y (íiih 1(ÝI1 và nối PCs) và tại sao n h ữ n g ngirời sỉr d ụ n g c ó thể thích các hệ S Q L licni c á c C(í sở d ữ liệu kh ác (S QL là một tiêu chiiắn đã đ ã n g ký IBM n ó đã d ư a ra m ộ t D M L p h o n g phú m à có thể được dìiiig nhir là m ộ t bộ x ử lý trước h o ặ c bộ xử lý sau c h o D B MS s và /h o ặ c 4 G L s ). Tioiig c hư ơn g 2 chiìng la sẽ bắt drill xein một sô thuật Iigữ "biệt Mgữ" m à bạ n cần biết đè tiến h à n h học các lệnh SQL. 2. Cá c điều kiện C()ỉ ban SQ L . Khái quái. C h ư ơ n g này giai llìích một sô Ihiiậí ng ữ mới sử tlụ ng lioiig lìiộl hệ SQ L , câu trúc cơ b á n củ a các lệnh wSQL, và các k h u ô n m ầ u cíí Ịiháp được d ù n g bơi các lệnh. 2 /. (iiói thiêu. M ục đích của c h ư ơ n g này là giới Ihiệii b ạ n với c á c IhiiẠt ng ữ S Q L m à bạ n cáii đê’ có thể ''cù ng đi" với vSQL. Các khái n i ệ m và c á c thuật n g ữ k h á c sỗ được giới Ihiệii tio n g các c!nr(ifiig sau. Tionị> c h ư m ig này c h ú n g tôi sẽ giới Ihiệu c ư sở clữ liệu m ẫ u m à nó sẽ đư ợ c sử tlimg làm ví dụ li o n g siiỏt CUỐII sách. 2.2. Cá( C(rS(X(Ii7liệu. Th uậ t n g ữ " c ư sử d ữ liệu'' dề c ập tới toàn bộ s ự thu thậ|i số liệu liên q u a n một chủ đề đăc biệt. Một hệ thống máy tính có thế chứa lìhiềii c ơ sở clữ liệu riêng rẽ cho: - Các k h á c h h à n g và các hoá đcíii. - Các chi tièt vé nhân sự. - Kê h o a c h b á o d ư ỡ n g thiết bị vãn phòng. - N iên giá m điộn thoai cá Iiliâii của từng Iigirừi. - Cáe chi tiết vổ o tò cứa C'òng ty. 10 và v.v... Tâl nhièn, qiiyèt tÌỊiih nhũng ihiiẠl ngữ dữ liẹii gì dược dặt một cách hop lý Irong c ìm g mội cơ s ứ d ữ liệu là mộ( c ô n g việc củ a bất cứ ai (hièl kê hệ lliôìig c ơ s ở c i ữ liệu m á y línli ciiện íoáii. Một sô clưn h à n g sẽ c h i yè u c ầ u một cư s ở dữ liệu, một s ố khác sẽ dược chia tách mộl cách h ợ p lý hơ n thà nh Iihicii cơ sở. Cuốii sác h này kh ôn g nhầrn giải qu y ế t n h ữ n g vân d ề c ủ a Ihiết k ế c ơ sở d ữ liệu ( m ặ c dù c hươ ng 3 có giới ihiệu S Q L clưực sử clụiig Irong phát triển "đời s ố n g (hực" của m ộ t hệ); T u y nh iê n chỉ c ần sử clụiig c á c c ơ sở d ữ liệu S Q L sẽ c h o bạn một c a m ng h ĩ về tạo mộ! cấu Irúc đ ú n g c ủ a d ữ liệu. K h ô n g có " đ ú n g " hay "sai" luyệt đối trong thiếl k ế c ơ s ở dữ liệu m ọi cái tiiỳ thuộc và o c á c yê u CÀII cỉia dưn tlậl h à n g dặc biệt. T r o n g ví dụ trên đ ầ y , các c ơ sở d ữ liệu riêng biệt sự Ihực có Ihể là c ác h tốí nhâ t đ ể thiết kê d ữ liộu; T u y nh iê n b ạ n c ũ n g có thể Iranh luíỊiì lẳ n g thiết bị văii p h ò n g và ôtô c ủ a C ô n g ty nên " g h ép " với người sử clụiig cluing; và dan h m ụ c đ iệ n Ihoại cá nhăn s ẽ trùng lặỊ), kh ôn g chỉ người này với Iigười khá c nià c ũ n g trùng với lệp khácỉi h àn g chủ yèii. T ro ng l n r ờ n g hợp n ày , có Ihể m ộ t c ơ s ở d ữ liệu đ ơ n (nicặc clìi vói nhiều bà ng biểu riêng rẽ - xetn dưới d ă y ) sẽ ph ả n ánh các nhu cđii cỉia C ô n g ty một c ác h lốt hcTn. í’hẩn lớn c á c áp cliiĩig S Q L c ó m ộ t lệnh đ ể tạo ra c ơ s ở d ữ liộii " lỗ ng" như vAy IIÓ c ó lliể dược "lấp đ ầ y " b ằ n g n h ữ n g b ả n g biểu có c hứa d ữ liệu (hực lế. 2 /. C(/ s ử (lữ licit niỗn (Ịirực (lùtìíỉ íraiiiỊ ( uòn s á c h này. Cuôn Sílcli n à y sử tiling c ơ s ử d ữ liệu ngirời bá n/c á c hợp đ ồ n g d ể m in h h oạ cho tất cá c á c iệnh S Q L d ư ợ c luẠn bàn (rong c ác chươiig sau. N ó chứa 3 hàng " n h ữ n g íigiròi báii", "cá c h ợ p đ ồ n g " và "cá c k h á c h liàiig” . T r o n g c h ư ơ n g 3 b ạ n SC t h ấ y l ý clo c ă n b ả n đ ư a đ ế n x â y d ự n g c ơ s ở d ữ l i ệ u này và s ự tách rời d ữ liệu th à n h n h ữ n g b ả n g biểu k h á c nhau, ơ ctAy c h ú n g tồi chỉ giới lliiộii một c á c h đ ơ n g iả n c ơ s ở clữ liệu với bạn do v ậ y bạ n có thể liiểu dược n h ữ n g ví clụ đ ư ợ c d ư a ra sau đ â y tro ng c h ư ơ n g này. Mục đ íc h c ủ a c ơ sở d ữ liệu là là m c h o người q u ả n lý the o dõi đư ợ c việc tổ chức bán h à n g b ằ n g việc x e m giá ỉ rị c ác h ợ p đ ồ n g m à họ d ã ký đ ượ c là b a o nhiêu để đcỊt mục tiêu đậ( ra hàng C|UÍ đôi với họ. Các nhà quản lý cũng có Ihể xe m giá fi ị các đ ư n dặ t h à n g m à k h á c h h à n g đ ã đcặt. Bàng " n h ữ n g người b á n h à n g " b a o g ồ m c ác chi tiết c ủ a từng "cá n h â n " inột, c liẳ ng hạn nh ư sô hiệ u n h â n viên cỉia a nh la, lên, liọ, đ ịa chỉ, sô ciiện thoại và c o n sô m ục tiôu đặ t ra h à n g quý. I1 Ráiig "hợp clổnt;" chứa c á c chi liêì của IỪIÌ'J, h ọ p đ ổ i i ‘j,, kè cá tèii c ủa Iìi>ười bá n hàiig, ntỉ.ười ký đirợc hơp tlổng, lèn kh ách liiiiig, liỊ uiá h ợ p đ o n g và n g à y ký hợp đổng. Bàng "k hách h à n g ” chứa các chi liết "cá nhân'' vé từng k h á c h hàiiiỉ,, c h ầ n o h ạ n nh ư số k há ch hàng, (ên, địa chỉ, số điệ n lho;ìi v.v... 2.4. Bd/iiJ, lìàiiiỊ, cột. Trong niộl hệ cỊuáiì lý cơ sỏ dữ liệu C|uan hệ, tâì cá các ciữ liệu được iiiữ tro ng các báng. Một bá ng đưực lạp b ằ n g các h àng và các CỘI. C h ú n g tưưiig ứ n g với c á c việc ghi c h é p và CCS tr ư ờ n g h ự p tro ng m ộ t hệ Cịiián lý s ớ ciữ liệu tiLiyềii Ihống. Sô cột và h à n g cho phéịỉ trong từng b á n g mộl k h á c nh a u tr on g từng áp d ụ n g khác n h a u của SQL. Bạn cũ ng sẽ gặ p các thuật ng ữ " b á n g c ư S(V" ( b a n g ch ứa d ữ liệii "thực" nơi m à d ừ liệu mà d ữ liệu theo C]UÌ liiột cíia tự nhiê n dưự c cláiih m á y vào đ ó ) và " b á n g kết quá " (b an g "tạm thời" đirợc tạo ra khi mộ( chất vấn S E L E C T đư ợ c Ihành lập). Các b á n g kết q ua k h ô n g có sẩn c h o chất vấii xa hơn, m ặ c dù m ột sô S Q L c u n g c ấ p một lệnh c h o p h é p c h ú n g đư ợ c " c h u y ế n " s a n g c á c b á n g cơ sở. Đ ỏi khi bạn sẽ thấy các bá ng đirực (ham ch iêu n h ư các quaii hệ. Đ â y là thực (è phổ hièn iKMig eác chủ (lề (tưọc trang luận bơi các c h u y ê n ^ia c ư sớ tiư liỏu Cịiian hệ liẩu hết các chi d á n Iigirừi tlìiiig và c á c sác h giới Ihiệii tlểii >ían V(iíi "báiiR” . Bang ví dụ. IIỌ TỀN OỊA ( ill Smith Susan 16, Fishei C lo s e 15.000 Robinson J ohn 3, D ev on G a r d e n s 70.000 Adams Evelyn 103, Mile End Rcl 50.000 MỰC' TIFAJ ỌUÍ Lệ n h SQ L S E L E C T c h o ph é p c ác b a n g c ù n g Iham gia clo vậy t h ô n g tin sẽ đ ư ợ c khai thác từ nhiều h(tii một baiiiỊ inột cnch đ ổ n g thời. 2.5. U d ti h mục. S Q L c h o p h é p bạ Ihic't lập các d a n h m ụ c Iroiìg các b a n g đ ế lă ng tòc đ ộ truy n h â p d ữ liệu. Môt m ụ c lục SQ L làm việc " i o n g n h ư m ọ t m ụ c liic Irong một c u ố n sách, c h o phé p bạn "tìm" một m ụ c ngay lập (ức c h ứ khôiii> phái ííọc ỉưcVl e]ua toàii kliòi lượng (b á n^ ) clé lìm cái mà han iniiốii. Bạn c ó l!ic nghĩ cICmì inộl m u c lục nh ư là một lệp riCMiịỉ, rẽ chứa một daiih sácli "các chí dẫn" c h o clữ liệii thực tioiig háng. 12 BẢNG M Ụ C LỤC Sniith 1. Susan Robinson 2. J oh n Adams 3. Evelyn Một khi các IIUIC lục dã được tao ra troiig inộl bảng, SQL sẽ tự động qiiyêl clỊnh Iiliững inục lục nào, nếu CCK sẽ dược d ù n g c h o bất cứ chất vân dặc biệt n à o trong c ơ s ở d ữ liệu. M ặ c dù bạ n k h ô n g |ihải tạo ra bất cứ m ụ c lục n à o cả, n h ư n g trong hầu hè t c á c trường hợp hệ củ a bạii sẽ thực hiộn một cách đÀy đủ hơn nếu mỗi b ả n g dư ợ c lộp ít nhất một d a n h m ụ c k h o á chín h ( x e m 2.6). D a n h m ự c dược bà n luận đ ẩ y đủ tioiig c h ư ơ n g 9. 26 . , K ỉ ì o á c h í n h v à k h o á ì i i ^ o à i . Mỗi h à n g phải có m ộl cột h o ặ c kết hợp c ủ a nhiề u cột, nội d u n g c ủa nó phâ biột h à n g đ ó với c ác hàiig kh á c, Nói c ác h khá c, m ỗ i h à n g phải là độc nhất. Các CỘI nià làín c h o các h à n g đ ộc nhất c ù n g n h a u thì dư ợ c gọi là k h o á ch ín h củ a bảng. (T ro ng thực tế, phần lớn c ác áp d ụ n g SQ L , kể cả tiêu c h u ẩ n AN SI, thực sự k h ô n g bắl b uộ c ph.ải sử d ụ n g kh oá c hín h đ ể lìiĩii c h o nó c ó thể c ó các hàng sao lại trong m ột bảng). Nêu mộl cột nià là kh oá ch ín h trong m ột b á n g n à y nhiriig t ro n g niộl b á n g k há c (k h ô n g phải l.ì khoá ch ín h của b ả n g đó) thì được coi là một kh oá ngoài (rôn b ả n g lliứ hai. 2.7. C á r lệnh SQ L. S Q L có k h o ả n g 30 lệnh dược sỉr d ụ n g đổ thao tác hệ c ơ sử ciữ liệu. Đ c làm c h o clỗ nhớ, các lệnh này c ó Ihể được chia thành 3 nhóm; Các lệnh dịiih nghĩa d ữ liệu (n h ư C R E A T E T A B L E ) . Cac lộiih tha o lác clữ liệu (n h ư S E L E C T , U P D A T E ) . C á c lệnh diều khiển d ữ liệu ( n h ư C O M M I T , R O L L B A C K ) . Con sô c h ín h xác củ a các lệnh sẽ thay đổi giữa các áp d ụ n g SQ L . Lĩnh vực khác nhau lớn nhấ t về con sô và k h u ô n m ẫ u củ a các lệnh đ ó là đ ị n h ngliTa d ữ liệu. Phu lục A dưa ra một da nh sách các lệnh cỉia vSQL ANSI b ằ n g claiìh m ụ c , cù ng với một ĩiiièii la tóm (ắl về chức n ă n g c ủ a chú ng. 2.fS. D iên lììột ( àii lệnìi SQL. 13 M ột câu lệnh SQ L bao g ồ m lệnh S Q L được ticỊ) kiện lự ch ọ n hoạc uý th;k' nào cán Ihiết đế lìoàn hợp lý. Ví dụ, iộnh S Q L S E L E C T (được d ù n g đ c c ác cột từ một hoặc nhiều bá ng) t r ư i h à n h niột c âu nói bới bấl cứ cac điéii Ihàiìh niòl thao lác SQL khai Ihác các h à n g hoãc lệnh như: S E L E C T siirnaiìie F R O M sal e me n; Các từ g iố n g n h ư S E L E C T và F R O M đirực coi nỉur n h ữ n g lừ giànli riêng. Đ i ể u này có ng h ĩa rằng bạn k h ô n g thể ghi tên c ủ a c h ú n g vào cân trúc dữ liệu c h ả n g hạn Iihư c ác bủng h o ặ c c ác cột. H á u hct c ác áp cliing SQ L cổ k h o a n g 150 t ừ d à n l i liêng. Tât cá các từ d à n h riêng phái đưực tách riêng khỏi c á c lừ hoẠc imic tlữ liệu mới đ â y b ằ n g ít nhất m ộ t dấ u cách. Do vậy. S E L E C T * F R O M sale me n; là h ợ p các h, trong khi S E L E C T * F R O M s ale me n ; là k h ô n g hựp cách. T u y nhiên, trong m ộ t sô phần cỉia câu lênh, drúi c á c h k h ô n g qiKin Irong. Ví dụ, S Q L có thế h à n g c h ấ p nhận: S E L E C T s u rn a in e F R O M s a l e m c n W H E R E s u r n a m e = "Smith" và S E L E C T s u r n a m e F R O M s a l e m e n VVỈ l E R E .surname = "Smith" hoặc S E L E C T s u r n a m e , e m p n o , i|l target F R O M s a le m e n ; và S E L E C T s u r n a m e , ernpno, target F R O M salem eii; C á c lộnli S Q L luôn luôn có nhiéii Iham s ố h o ặ c c á c điổii kiệ n lự chọn đi th e o với ch úng. Đ i ề u n à y có ng hĩ a rằng m ộ t c â u lệiih đư n có thể kết thúc khi nó k há dài. V í dụ, lệnh S E L E C T có sáu lựa c h ọ n k h á c nh a u (và thậm c h í nh ỉé u hơn tro ng m ộ t vài áp d ụ n g ) một sự kết h ợ p củ a mộl sô ha y tất cá các lựa c h ọ n đ ó c ó thể được d ù n g dể c h ọ n lọc d ữ liệu c h ín h xác đực Iruy n h ậ p từ c ác bảng. Đ ô làin c h o các cdii lệnh đó ctirực hiểu rõ liưii, b ạ n c ó Ihể c hia c h ú n g thành nh iề u h à n g khi bạn đ á n h máy. V í du SELECT Sa le m e n. s u rn a m e , S a le m e n. e m p n o , Contracl. a m o u n t, 14 C o n l i a c l s . C d at e F R O M Sal cnicn. conlracls W I IEK B Salcnicii. em|)iio = conlracts. c n ip n o A N D c o nlia cl s . a m o u n t > 3 0 0 0 0 O R D E R BY s a le m e n . s u r n a m e ; Ban CÓ the cilia câu lệnh lliàiih nhiều clòiig ở bất cứ diểni n à o bạn lliích, mặc dù Ihỏiig Ihirờng và rõ ràng - các đon gián là đặ( từng inệiih dề lliành lừiig clòiig khác nhau Iiliir vois dụ Irôii đây. Bạn có thể dịch chuyển clAu d ò n g dể làm c ho c ấu tn ìc c âu lẹnh dề theo dõi hơn - S Q L SC cliỉ bỏ q u a lìliững dấu c á c h k h ố n g c ắ n Ihiôt. Mộ í s ố th a m sô đôi với lệnh là uỷ thác, m ộ t sô khá c đíc h thực là tự chọn. T r o n g ví dụ S E L E C T írêii đfty, nhu cầu uỷ tỉiác d u y nhất là một h a y nhiêu lên cột hơn, và các biing đ ể cliất vấiì, phải đư ợ c địn h lõ; các inệnli clê W H E R E và O R D E R By là fự c họn . 2 . ( S . I . C h ữ llitíòiìị’ Ììoãc cl ìữ lìOd. 'I rong hầu hết các ứng d ụ n g c ủ a SQL, bạn có thể đá nh các lệnh và các tôn lriròfiig bằ ng cà c h ừ lioa, c h ữ thườ ng, hotặc c ả c h ữ hoa và c h ữ thường. Do vậy, ví dụ, O r a c l e sẽ h.ài lòng c h ấ p nh ậ n (và d ư a ra c ù n g kết q ua cho): S E L E C T a m o u n t F R O M contracls; vn select A M O U N T fro m C O N T R A C T S ; Tu y nhiên Info rmi x đòi hỏi tâl cá các lừ lệnh phải là c h ữ Ihưòlig và (liều chỉiih 2 ví dụ Irôn đAy nô n ghi: selcct A M O U N T fro m C O N T R A C T S ; lioặc select a m o u n t from co ntracts; Tro ng c uốn s á c h n à y c h ú n g tôi h ư ỏ n g clÃn c ác lệnh S Q L dưới cicỊiig viết hoa dổ làm c h ú n g nổi bạt lên t ro n g pliổn còn lại c ủ a bài viôì. C ác tên cộí và bảng dược viết chữ Ihirờng. Chì khi m à c ác Irưừng hựp c h ữ hoa / c h ữ tliirờng có Ihể tạ la s ự k h á c n h a u ctối với kết quả của m ột chấn vấĩi thì là lúc bạn phải định rõdữ liệu bạn niiiốn Iruy nliỘỊ). D o vẠy: S E L E C T í i i s t n a n i c , SLiniamc F R O M s a l e m e n W H E R E s u r n a m e = "Smilh"; Sc cho niộl b á n g kcì Cịiia k há c với 15 SE L E C T fiisliianie, .siiin;(inc F K O M salcincii W H E R E siirnanic = " S M IT H " ; 2.S.2. l)(lii cliuin ( Oil. N h ư ban CÓ thế thấy, các lệnh là các từ tièng Anh. Bạn cìiiìịi sẽ g ậ p các clấu c h â m ., dấu ,, dấu c h ấ m phẩy và clấii ng o ặ c Dâu châVii Ịihẩy được d ù n g trong nhiề u ứng d ụ n g S Q L đ ế kết lliúc một câu lệnh SQL: S E L E C T s u r n a m e F R O M s a le m e n; K.hỏiig phải trứ cả các ứiig d u ng đcii đòi hỏi dấu chain phẩy ở cuối liàng c âu lệnh; tiiy nhiên, gẩn nh ư tất ca sẽ c h ấ p nh ậ n nó nế u b ạ n d iể n vào nó. C u ố n sách này luôn luôn sử d ụ n g dấu c h ấ m ph ẩ y chỉ kết (hiìc c ủ a một câu lệnlì. Dấu [)liẩy để tách các danli m ụ c c ủa các tên cột. V í dụ: S E L E C T s u r n a m e , a ddre ss , q l target F R O M s a le s m e n ; Dâìi chấm để tách têm bảng và tên cột. Trong tìnli liLiống khi bạn đang khai (hác d ữ liệu từ hai b ả n g một lúc và khi m à mộl cột với c ù n g m ột tên xuất hiệti ở cả hai bang, bạn sẽ phải chỉ rõ bạii m u ố n lấy cá c chi liéì CỘI lừ báiig nào. V í du; S E L E C T sal e m e n . s u r n a m e , co nt iacts . a m oim l, c o n tr a c ts , siirnanic FR (3 M s alesmen, contracts; Drill n g o ặ c b a o g ồ m tất cả n h ữ n g t h ô n g tin ciìa điặc tliếni kiểu d ừ liệu (x e m c h ư ơ n g 4 bàn về các kiểu d ữ liệu SQL). D o V ậy. S E L E C T fir stname, s u r n a m e F R O M s a l e s m e n W H E R E s u r n a m e = 'Smith'; bỏ dấu n g o ặ c sẽ c h o một thông bá o lỗi. T ó m tất. T r o n g chưcnig này bạn đã học các Ihiiật n g ữ c ơ ban và c á c ngiiyèn tác vể c á c h cliìng S Q L m à bạn sẽ c ắn để hiểu các lệnh SQL. Trong chương sau chúng la sẽ nhìn vào một ví CÌỊI "đời Ihực" vổ mội hệ SQ)L có Ihê đưực lạo ra nlnr llic n.ìo, được sứ d ụ n g n h ư thố nào và được thay đổi như thê Iiào đổ phán ánh nhu cáu thay đổi của I i g ư ừ i sử tiling. 3. M ột ví dụ vé íhiết lập một hệ S Q L . 16 Khái qiiál. C h ư ơ n g này hướ ng tliui VC S Q L clirợc ciìiiig d c phát li icn "clừi thực" cLÌa I hệ cơ sỏ' d ữ liệu. Clníiig lôi giói Ihiộii Iiiột s ố ciích lẹnh SQL phổ biến, và xcin xem chung có Ihể linh hoạt (hay dổi cơ sỏf d ữ liệu n h ư Ihế nào n h ư những ý iưởiig pliát íriển ccủa ủ a nyười người sử clụiig. cluiiR. Các lệnh c hí nh được đ ề cậ p trong c h ư ơ n g này. CREATE TABLE INSERT V A LU ES SELECT C R E A T E VIEW GRANT REVOKE CREA TCIN D EX 3 I . Giói (hiệu. Trước khi cluing ta bắt đ ầ u kiế m tra các lệiih S Q L m ộ t các h chi tiêt tr ong một s ố ít c h ư ư n g tiếp theo, nó lất bổ ích với bạn nếu có m ột c ả m ng h ĩ vê S Q L thực (ế đ ư ợ c sử d ụ n g nh ư t h ế n à o tr on g thiết k ế c ơ s ở clữ liệu. C h ư ơ n g Iiày c h o (hấy S Q L có Ihể dượ c sử d ụ n g Iihư t h ế n à o Irong phát triển (hực l ế của mộ( liộ thông. C h ú n g ỉa SC Ihấy S Q L c ó thể dỗ d à n g đối pỊió VỚI v iệ c c h ô n g đ ỡ "cííc lỗi" của người d ù n g trong Ihiết k ế dữ liệu - các lôi mà, tiiy nhiên, phản ánh cách người d ù ng Ihực sự lĩnh hội dược và làm viộc VỚI ciữ Ịiệii c ủa a n h ta, n h ư đổ c h ô n g lại với kiểu "lỗi" thì d ữ liộu pliái (lược tô chức Iheo hệ lliốiig m á y (inh. S Q L ciiôi c ù n g c ũ n g sẽ Ihuyèl phục người d ù n g áp d ụ n g các cấu tnìc d ữ liộu d ầ y đủ, trong khi tiếp tục c h o phé p a n h ta Iriiy ĩihệp v«ì x e m xél clữ liệu the o c á c h m à dối với an h ta d ư ò n g Iiliư là tlễ c ả m nhậíi nhấl. C h ư ơ n g nìiy c ũ n g sẽ giỏi thiệu vói bạn mộl sô lộnli S Q L cơ bull do vẠy bạ n có Ihổ iiliẠii dược "sự h ưử ng ứng n g a y " c ủ a Iihững gì có licii q u a n clôn Ihict lẠịi lìiột hệ c ơ sử d ữ liộu vSQL. Trong Cík ví dụ nêu dưới dây, mục clícli không nhằm giải thích clÀy dủ các hoại d ộ n g cỉia các lộnli S Q L clưực sử d ụ n g . C h ú n g (ôi giải thích c h u n g vê chức n ă n g c ủ a lệnh ỏ n h ữ n g c h ỗ cần thiết, và chỉ ra lệnh có th ể (ìm thấ y ở clủii được bao h à m (rong bất cứ c h ỗ sâu kín n à o của c u ố n sách. M ụ c đ íc h của chirơng n à y là lạo c h o bạn m ộ t c ả m nhẠn vổ k hả n ă n g và p h ạ m vi c ủ a SQL, klicMig phải b ằ n g mộl chỉ d ẫ n cú p h á p s âu xa. Bạn c ũ n g sẽ tliấy rằng c h ú n g tôi k h ô n g n h ầ m b a o h à m lất cả c á c lệnh m à có lliổ k h ô n g thổ Iránh kliỏi licn cỊiian đôn thiêì lập một hệ t h ố n g thực sự. 17 Iliực tè, nh ư Ixui sẽ thấy, liaii hêt các ví clii đ c u x o a y tỊiiaiili lệiili S E L E C T l à l ẹ n h I i i à c h o p l i ÓỊ ) n g ư ờ i d ù n g k l i ò i p h ụ c c á c l i à i i g , c á c c ọ t l ừ I i l i ữ i i g l i i u i ị ; thirc lọi. 3.2. ỉ liìrt ké nìôt ( o' só' (lữ liừii. Miic đícli ciìa bàì cứ một ai khi thiêt lâp m ột liệ cơ sư clữ liệu phái là lliiêt láp niộl hệ nià nó Ịihán áiih thè giới ihực cúa việc sử d ụ n g dữ liệii c à n g gáii gũi c à n g lốt. Nhiều Iigười sỉr cliiiig khác n ha u sẽ có n h ữ n g các h clùiig k h á c nha u đối với c ù n g rnột d ữ liệu; inộl số người d ù n g k h ô n g cán x e m một s ố ph ầ n của c ơ scV clữ liệii và v.v... Do vậy liệ t h ố n g cân phái c u n g c a p Iihữiìg m ụ c tiêu khác nh a u đối với dữ liệu. Liên CỊiian đôn vân đề nà y là nhu cáu c u n g cấp một sự an toàn cho cơ sư tlữ liệu, kế cá trong ý tliức c ủ a n h ữ n g người sử d ụ n g chí đưực Iiỷ qiiyổn đê nhâỊ-) n h ữ n g (lữ liệu đặc biệl, và troiig việc xử lý đ ú n g đắii n h ữ n g giao dịc h mà bị bỏ lửng. Ai m u ố n một cư sớ clừ liệu báii - câ|) nhật 'ì V ấ n còn một sự su y xét cấn thicl nữa đ ó là k h ò n g clữ ỉiệu nào cầii phải sao lại khắ p mọi nơi t ro n g c ơ s ư d ữ liệu, c ẩ n thận với sự nh ầ n i lẫn tai hại đ ó có thể xáy ra nếu giá san p h ẩ m của C'ông ty hạn xuất liiện trong bang tồn kho là 2 0 0 £ n hưn g trong tẹp hoá đơn lại là 100 £. Tâ t nhièn, Irong m ộ t t h ế giới lý tưíVng hộ c ơ sư tlữ liệu nê n đ ư ợ c lâ[) kè lioạch I11ỘI các h ho à n háo tiirức khi Ii‘4 ười khai Ihác chưa từng bào gity c h ạ n i vào rnột hàn phíin. Nh ưng trong Ihế giới ihực, sự lioàii thiện Iihư vây liiénì khi xáy r:i- tJ:íy la sự ihưc đác biỏl liiệii nay mà SQL. đi tn'\ v à o thế giới PC, Iiưi inà sự tiếp cận tmyểiì Ihốn g c ủa người d ù n g đã llìàiih thói qiicii clỏi với việc lương đối ilổ sử (.lụiig, cliổu kh iê u b ong (hực CÍƠII, các ứng tlụii'; đicn Irợ giúp, có kluiyiih hư ớ n g rẽ Iiháiili và viêl ỉiệ Irưỏc sail cló inới giái quyc l n h ữ n g m ắ c mớ. S Q L khôiig cổ nhữn g c ô n g Ihức thần th ông dế c ủ n g c ố nhữiig thiết k ế "tôV Iiluriig nó c ó sư linh hoại ch o phéịi người clìiiig phát triến các hệ "pliâii lán" và rổi sau tló hoà hợp cluing; nó đưa ra n h ữ n g biệii ịihÓỊ) Ihoá m ã n đẽ kiếin tra s ự an toàn; và nó đira ra n h ữ n g giới haii toàn vẹn nià có the giú p đ á m b á o rang nliững vấn đề như việc sao chéị-) các d ữ liệu khỏiii> cán sẽ klìôny x á y ra. Nêu c h ú n g ta tiếp tục x e m inột ví till vổ liếii bộ "điủii liình" cíia người sử cỉụng t r o n o phái Iiiến một hệ đế ph;in ánh chính xác các nhu cáu và sở liệu đời Ihưc của anh ta, chúng ta sẽ thấy lằiig S Q L cung cấp một c ô n g cụ lất d ễ sỉr d ụ n g đ c làm việc đó. -VJ. S/'f (Ìinìíị S Q Ỉ, (lơ tdo inòt C(f s ơ d ữ hê n. .V.V / Hi' vi du. 18
- Xem thêm -

Tài liệu liên quan