Giáo trình cơ sở dữ liệu Giaùo trỗnh thổỷc haỡnh SQL7UDQJ*,lv,7+,j864/6WUXFWXUHG4XHU\/DQJXDJHODQJQQJÔFVGXÊQJFKRFDFKÊTXDQWUF VGOLÊX TXDQKÊ 1JQ QJ 64/ FKXQ ÔF D UD EL $16,$PHULFDQ1DWLRQDO 6WDQGDUGV ,QVWLWXGH YD ,62 ,QWHUQDWLRQDO 6WDQGDUGV 2UJDQL]DWLRQ YLSKLQ EDQ PL QKÂW KLÊQ QD\ OD SKLQ EDQ 64/ SKLQ EDQ ÔF D UD QP0ÊFGXFRQKLXQJQQJNKDFQKDXÔFDUDFKRFDFKÊTXDQWU&6'/TXDQKÊ64/ODQJQQJÔFVGXÊQJUÔQJUDLKLÊQQD\WURQJUÂWQKLXKÊWKÂQJ&6'/WKQJPDÊLQK2UDFOH64/6HUYHU'%0LFURVRIW$FFHVV7KQJTXD64/QJLVGXÊQJFRWKGĂGDQJQKQJKDÔFGOLÊXWKDRWDFYLGOLÊX0ÊWNKDF\ODQJQQJFRWQKNKDLEDRQQQRGĂVGXÊQJYDFXQJYYÊ\PDWUQQSKELÂQ*LDRWULQKQD\QKPFXQJFÂSFKREDÊQWDLOLÊXWKDPNKDRWQJÂL\XYFDFFXOÊQK JLDRWDF 64/ V GXÊQJFKRKÊ TXDQ WU &6'/ 0LFURVRIW64/ 6HUYHU*LDRWUQKEDRJPEÂQFKQJ&KQJJLLWKLÊXPÔWVÂFXOÊQKVGXÊQJWURQJYLÊFQKQJKDFDFÂLWÔQJGOLÊXQKEDQJGOLÊXNKXQJQKQYDFKPXÊF &KQJ WUQK ED\ EÂQ FX OÊQK WKDR WDF G OLÊX OD 6(/(&7 ,16(5783'$7(YD'(/(7(WURQJRWÊSWUXQJFKX\ÂXFXOÊQK6(/(&7&KQJFÊSÂQKDLFXOÊQKLXNKLQOD*5$17YD5(92.(VGXÊQJWURQJYLÊFFÂSSKDWYDKX\ERTX\QFXDQJLVGXÊQJ&6'/ &KQJ JLL WKLÊX Y WKX WXÊF OX WU YD WULJJHU j\ OD QKQJ ÂL WÔQJ&6'/ÔFVGXÊQJQKPWQJKLÊXQQJNKLVGXÊQJ&6'/7URQJFKQJSKXÊOXÊFFKXQJWLJLLWKLÊXFÂXWUXFYDGOLÊXFXDFDFEDQJVGXÊQJWURQJFDFYGXÊFKQJEDÊQWLÊQWUDFXYDÂLFKLÂXYLFDFYGXÊDQX1JRDLUDWURQJFKQJQD\FRQFRFDFKDPWKQJVGXÊQJWURQJ64/6HUYHUFDFEDÊQWKDPNKDRWURQJWKÊFKDQK0ÊFGXDUÂWFÂJQJQKQJJLDRWUQKNKQJWKWUDQKXÔFFDFVDLVRW5ÂWPRQJQKÊQÔFVÊJRS\FXDFDFEDÊQJLDRWUQKQJD\FDQJKRDQWKLÊQKQTrỏửn Nguyón PhongCChhổổồồnngg 11:: NNGGNN NNGGặặẻẻ ậậNNHH NNGGHHẫẫAA DDặặẻẻ LLIIUU1JQQJQKQJKDGOLÊXEDRJPFDFFXOÊQKFKRSKHSQJLVGXÊQJQKQJKD&6'/YDFDFÂLWÔQJWURQJ&6'/QKFDFEDQJFDFNKXQJQKQFKPXÊF7DREDQJGOLX'OLÊXEQWURQJPÔW&6'/ÔFWFKFOXWUWURQJFDFEDQJ%QWURQJFDFEDQJGOLÊXÔFWFKFGLGDÊQJFDFGRQJYDFDFFÔW0ĂLPÔWGRQJELXGLĂQPÔWEDQJKLGX\QKÂWYDPĂLPÔWFÔWELXGLĂQFKRPÔWWUQJ&DFWKXFWQKOLQTXDQQEDQJ.KLWDÊRYDODPYLÊFYLFDFEDQJGOLÊXWDFQSKDL\ÂQFDFWKXÔFWQKNKDFWUQEDQJQKNLXGOLÊXFDFUDQJEXÔFFDFNKRDFDFTXLWF&DFWKXÔFWQKQD\ÔFVGXÊQJQKPWDÊRUDFDFUDQJEXÔFWRDQYHÊQWUQFDFFÔWWUQJWUQEDQJFXQJQKWDÊRUDFDFWRDQYHÊQWKDPFKLÂXJLDFDFEDQJGOLÊXWURQJ&6'/D.LXGOLX0ĂLPÔWFÔWWUQJFXDPÔWEDQJXSKDLWKXÔFYDRPÔWNLXGOLÊXQKÂWQKDÔFQKQJKDWWUF0ĂLPÔWNLXGOLÊXTXLQKFDFJLDWUGOLÊXÔFFKRSKHSÂLYLFÔWR&DFKÊTXDQWU&6'/WKQJFXQJFÂSFDFNLXGOLÊXFKXQQJRDLUDFRQFRWKFKRSKHSQJLVGXÊQJQKQJKDFDFNLXGOLÊXNKDFGÊDWUQFDFNLXGOLÊXDFR'L\ODPÔWVÂNLXGOLÊXWKQJÔFVGXÊQJWURQJJLDRWDF64/BinaryBitCharDatetimeDecimalFloatImageIntMoneyNcharNtextNvarcharRealSmalldatetimeSmallintSmallmoneyTextTinyintVarbinaryVarcharE&DFUDQJEXF&21675$,1767UQFDFEDQJGOLÊXFDFUDQJEXÔFÔFVGXÊQJQKPFDFPXÊFFKVDX 4XLQKFDFJLDWUGOLÊXKD\NKXQGDÊQJGOLÊXÔFFKRSKHSFKÂSQKÊQWUQFDFFÔWFXDEDQJUDQJEXÔF&+(&. 4XLQKJLDWUPÊFQKFKRFDFFÔWUDQJEXÔF'()$8/7Giaùo trỗnh thổỷc haỡnh SQL7UDQJ 7DÊRQQWQKWRDQYHÊQWKÊFWKWURQJPÔWEDQJGOLÊXYDWRDQYHÊQWKDPFKLÂXJLDFDF EDQJ G OLÊX WURQJ &6'/ UDQJ EXÔF 35,0$5< .(< 81,48( YD)25(,*1.(<&KXQJWDVHWPKLXFKLWLÂWKQYFDFUDQJEXÔFQD\SKQWUQKED\YFXOÊQK&5($7(7$%/(7DREDQJEQJWUX\YQ64/7DÊRFDFEDQJODPÔWNKXTXDQWURQJWURÔQJWURQJTXDWUQKWKLÂWNÂYDFDLGÊWFDF&6'/%QWURQJFDF&6'/PĂLPÔWEDQJWKQJÔFVGXÊQJQKPELXGLĂQWKQJWKLYFDFÂLWÔQJWURQJWKÂJLLWKÊFYDKRÊFELXGLĂQPÂLTXDQKÊJLDFDFÂLWÔQJRjFRWKWFKFWÂWPÔWEDQJGOLÊXEDÊQWQKÂWFQSKDL[DFQKÔFFDF\XFXVDX %DQJÔFVGXÊQJQKPPXÊFFKJYDFRYDLWURQKWKÂQDREQWURQJ&6'/" %DQJVHEDRJPQKQJFÔWQDRYDNLXGOLÊXFKRFDFFÔWRODJ" 1KQJFÔWQDRFKRSKHSFKÂSQKÊQJLDWU18// &RVGXÊQJFDFUDQJEXÔFFDFPÊFQKKD\NKQJYDQÂXFRWKVGXÊQJXYDQKXWKÂQDR" 1KQJFÔWQDRVHRQJYDLWURODNKRDFKQKNKRDQJRDLNKRDGX\QKÂW"1KQJGDÊQJFKPXÊFQDRODFQWKLÂWYDFQXD7DREDQJGOLXjWDÊRPÔWEDQJWURQJ&6'/EDÊQVGXÊQJFXOÊQK&5($7(7$%/(FRFXSKDSQKVDX CREATE TABLE table_name ( {colname_1 col_1_properties [constraints_1 ] [,{colname_2 col_2_properties [constraints_2 ]] . [,{colname_N col_N_properties [constraints_N ]] [table_constraints] )7URQJR- table_name:7QEDQJ FQWDÊR 7QFXD EDQJ SKDL GX\QKÂWWURQJPĂL&6'/YDSKDLWXQWKHRFDFTXLWFYQKGDQK- colname_i:7QFXDFÔWWKLWURQJEDQJ&DFFÔWWURQJPĂLTráön Nguyãn PhongEDQJSKDLFRWQNKDFQKDXYDSKDLWXQWKHRFDFTXLWF YQK GDQK 0¡L P¤W EDQJSKDL FR WQK¢WP¤WF¤W- col_i_properties:&DFWKX¤FWQKFXDF¤WWKLTXLQKNL XGOL£XFXDF¤WYDFKQKF¤W FRFKRSKHSFK¢SQK£QJLDWU18//KD\NKQJ- constraints_i:&DF UDQJ EX¤F Q¢X FR WUQ F¤W WK L QK FDFUDQJEX¤FYNKRDFDFP£FQKFDFTXLQKYNKXQGD£QJGOL£X- table_constraint:&DFUDQJEX¤FWUQEDQJGOL£X9GX&XO£QKGL\WK£FKL£QKYL£FWD£REDQJ1+$19,(1EDRJPFDFF¤W0$19+27(11*$<6,1+',$&+,',(17+2$,CREATE TABLE nhanvien(manv char(10) not null,hoten char(30) not null,ngaysinh datetime null,diachi char(50) null,dienthoai char(6) null)E6GXQJFDFUDQJEXFWURQJEDQJGOLXDDDD5DQJEXF&+(&.5DQJEX¤F&+(&.¤FVGX£QJ FKQKFDFJLDWUKD\NKXQGD£QJGOL£XFRWK ¤F FK¢S QK£Q ¢L YL P¤W F¤W 7UQ P¤W F¤W FR WK FR QKLX UDQJ EX¤F&+(&.j NKDLEDRP¤WUDQJEX¤F&+(&.¢LYLP¤WF¤WQDRRWDVGX£QJFXSKDSQKVDX [CONSTRAINT constraint_name] CHECK (expression)7URQJRH[SUHVVLRQODP¤WEL XWKFORJLFTXLQKJLDWUKD\NKXQGD£QJFXDGOL£X¤FFKRSKHS.KLRFKQKQJJLDWUGOL£XQDRODPFKRH[SUHVVLRQQK£QJLDWUXQJPL¤FFK¢SQK£Q9GXj TXLQKL£QWKRD£LFXDQKQYLQSKDLFRGD£QJFKQJKD£QFXO£QKYGX£¤FYL¢WQKVDXCREATE TABLE nhanvien(Giaùo trỗnh thổỷc haỡnh SQL7UDQJ manv char(10) not null, hoten char(30) not null, ngaysinh datetime null, diachi char(50) null, dienthoai char(6) nullconstraint check_dienthoai check (dienthoai like '[0-9][0-9][0-9] [0-9][0-9] [0-9]'))DDDD5DQJEXF'()$8/75DQJEXÔF'()$8/7ÔFVGXÊQJTXLQKJLDWUPÊFQKFKRPÔWFÔW*LDWUQD\VHWÊÔQJÔFJDQFKRFÔWQD\NKLQJLVGXÊQJEVXQJPÔWEDQJKLPDNKQJFKQKJLDWUFKRFÔW7UQPĂLFÔWFKFRWKFRQKLXQKÂWPÔWUDQJEXÔF'()$8/7WFODFKFRWKFRWÂLDPÔWJLDWUPÊFQKj NKDL EDR PÔW JLD WU PÊF QK FKR PÔW FÔW WD FK QK PÔW UDQJ EXÔF'()$8/7FKRFÔWEQJFDFKVGXÊQJFXSKDSVDX [CONSTRAINT constraint_name] DEFAULT {const_expression nonarguments_function NULL}9 GX &X OÊQK GL \ FK QK JLD WU PÊF QK OD NKQJ ELÂW FKR FÔW',$&+,WURQJEDQJ1+$19,(1YGXÊCREATE TABLE nhanvien(manv char(10) not null,hoten char(30) not null,ngaysinh datetime null,diachi char(50) default 'khọng bióỳt',dienthoai char(6) null)DDDD5DQJEXF35,0$5<.(<muYGXÊQD\FKXQJWLNKQJÊWWQFKRUDQJEXÔF'()$8/7.KLRKÊTXDQWU&6'/VHWÊÔQJÊWWQFKRUDQJEXÔFQD\7X\QKLQGĂGDQJFKRYLÊFTXDQWUEDÊQQQÊWWQFKRFDFUDQJEXÔFTráön Nguyãn Phong5DQJEX¤F35,0$5<.(<¤FVGX£QJ QKQJKDNKRDFKQKFXDEDQJ0¤WUDQJEX¤F35,0$5<.(<DPEDRUQJNKQJFRFDFJLDWUWUXQJO£S¤FDYDRWUQFDFF¤W+D\QRLFDFKNKDFJLDWUFXDNKRDFKQKVHJLXSFKRWD[DFQK¤FGX\QK¢WP¤WGRQJEDQJKLWURQJEDQJGOL£X0¡LP¤WEDQJFKFRWK FRGX\QK¢WP¤WNKRDFKQKYDEDQWKQNKRDFKQKNKQJFK¢SQK£QJLDWU18//5DQJEX¤F35,0$5<.(<ODFVFKRYL£FDPEDRWQKWRDQYH£QWK£FWK FXQJQKWRDQYH£QWKDPFKL¢Xj NKDLEDRP¤WUDQJEX¤F35,0$5<.(<ED£QVGX£QJFXSKDSVDX [CONSTRAINT constraint_name ] PRIMARY KEY [CLUSTERED|NONCLUSTERED] [( colname [,colname2 [ .,colname16]])]1¢XNKRDFKQKFXDP¤WEDQJFKODP¤WF¤WNKLRED£QNKQJFQWKL¢WSKDLFKQKGDQKVDFKFDFF¤WVGX£QJUDQJEX¤FPFF¤W7URQJWUQJK¤SNKRDFKQKODP¤WW£SK¤SWKDLF¤WWUOQED£QSKDLFKQKGDQKVDFKFDFF¤WVGX£QJUDQJEX¤FPFEDQJ9GXWD£REDQJ1+$19,(1YLNKRDFKQKOD0$19CREATE TABLE nhanvien(manv char(10) primary key,hoten char(30) not null,ngaysinh datetime null,diachi char(50) null,dienthoai char(6) null)FXO£QKWUQFRWK YL¢WQKVDXCREATE TABLE nhanvien(manv char(10) not null,hoten char(30) not null,ngaysinh datetime null,diachi char(50) null,dienthoai char(6) nullconstraint pk_nv primary key(manv))Giaùo trỗnh thổỷc haỡnh SQL7UDQJD 5DQJEXF81,48(7KD\YVGXÊQJNKRDFKQKEDÊQFRWKVGXÊQJUDQJEXÔF81,48(DPEDRWQKWRDQYHÊQWKÊFWK6GXÊQJUDQJEXÔF81,48(WUQPÔWKD\QKLXFÔWEWEXÔFFDFJLDWUGOLÊXWUQPÔWKD\QKLXFÔWQD\NKQJÔFWUXQJOÊSQKDXjNKDLEDRPÔWUDQJEXÔF81,48(EDÊQVGXÊQJFXSKDSOÊQKVDX\ [CONSTRAINT constraint_name] UNIQUE [CLUSTERED | NONCLUSTERED] [colname1 [,colname2 [ .,colname16]])]D 5DQJEXF)25(,*1.(<&DFEDQJEQWURQJPÔW&6'/WKQJFRPÂLTXDQKÊYLQKDX&DFPÂLTXDQKÊQD\ÔF[DFQKGÊDWUQWQKEQJQKDXJLDPÔWKD\QKLXWUQJFXDEDQJQD\YLPÔWKD\QKLXWUQJFXDEDQJNKDF1ÂXPÔWKD\QKLXFÔWQDRRFXDPÔWEDQJFRJLDWUÔF[DFQKWPÔWKD\QKLXWUQJNKRDFXDEDQJNKDFWKFDFFÔWRÔFJRÔLODFRUDQJEXÔFNKRDQJRDÊLIRUHLJQNH\&DFUDQJEXÔF)25(,*1.(<ÔFVGXÊQJNÂWKÔSYLFDFUDQJEXÔF35,0$5<.(<YD81,48(QKPDPEDRWQKWRDQYHÊQWKDPFKLÂXJLDFDFEDQJÔFFKQKjNKDLEDRNKRDQJRDÊLEDÊQVGXÊQJFXSKDSOÊQKQKVDX [CONSTRAINT constraint_name ] [FOREIGN KEY (colname [,colname2 [ .,colname16]])] REFERENCES reference_table [(ref_colname [,ref_colname2 [ .,ref_colname 16]])] 9 GX 7DÊR KDL EDQJ 1+$19,(10$19 +27(1 1*$<6,1+ ',$&+,',(17+2$,0$'9YD'219,0$'97(1'9WKHRKQKGL\CREATE TABLE donvi(1+$19,(10$19+27(11*$<6,1+',$&+,',(17+2$,0$'9'219,0$'97(1'9+QK Tráön Nguyãn Phong madv char(2) primary key, tendv char(20) not null)CREATE TABLE nhanvien( manv char(10) primary key, hoten char(20) not null, ngaysinh datetime null, diachi char(50) default 'khong biet', dienthoai char(6) check(dienthoai like '[0-9][0-9][0-9] [0-9][0-9][0-9]'), madv char(2) foreign key(madv) references donvi(madv))6DLEDQJ6DXNKLDWD£REDQJED£QFRWK WL¢QKDQKVD LF¢XWUXFKD\WKX¤FWQKFXDEDQJQKE VXQJF¤WE VXQJNKRDWKD\ LFDFUDQJEX¤Fj FRWK VXD LEDQJED£QVGX£QJFXO£QK$/7(5FRFXSKDSQKVDXALTER TABLE table_name [ADD {col_name column_properties [column_constraints] [[,]table_constraint ] } [,{next_col_name|next_table_constraint}] .] [DROP [CONSTRAINT] constraint_name1 [, constraint_name2] .]9GX7D£RP¤WUDQJEX¤FFKREDQJ'219,WUQF¤W0$'9TXLQKPDQYSKDLFRGD£QJKDLFKV¢YGX£ ALTER TABLE donvi ADD CONSTRAINT check_madv CHECK (madv LIKE ‘[0-9][0-9]’)Giaùo trỗnh thổỷc haỡnh SQL7UDQJ&KPXFLQGH[&DFFKPXÊFÔFVGXÊQJQKPKĂWUÔYLÊFWUX\FÊSÂQFDFGRQJGOLÊXÔFQKDQKFKRQJGÊDWUQFDFJLDWUFXDPÔWKD\QKLXFÔW&KPXÊFÔFFKLDUDODPKDLORDÊLFKPXÊF WXÊ QKRPFOXVWHUHG LQGH[YD FKPXÊF NKQJ WXÊ QKRP QRQFOXVWHUHGLQGH[ 0ÔWFKPXÊFWXÊQKRPODPÔWFKPXÊFPDWURQJRWKWÊORJLFFXDFDFNKRDWQJWÊQKWKWÊYÊWO\FXDFDFGRQJWQJQJWQWDÊLWURQJEDQJ0ÔWEDQJFKFRWKFRWÂLDPÔWFKPXÊFWXÊQKRP 0ÔWFKPXÊFNKQJWXÊKRPODPÔWFKPXÊFPDWURQJRWKWÊORJLFFXDFDFNKRDNKQJQKWKWÊYÊWO\FXDFDFGRQJWURQJEDQJ&DFFKPXÊFWXÊQKRPKĂWUÔYLÊFWUX\FÊSÂQFDFGRQJGOLÊXQKDQKKQQKLXVRYLFDFFKPXÊFNKQJWXÊQKRP.KLWDNKDLEDRPÔWNKRDFKQKKD\NKRD81,48(WUQPÔWKD\QKLXFÔWQDRRFXDEDQJKÊTXDQWU&6'/VHWÊÔQJWDÊRFKPXÊFWUQFDFFÔWR%DÊQFRWKWDÊRWKPFDFFKPXÊFNKDFEQJFDFKVGXÊQJFXOÊQKFRFXSKDSQKVDX CREATE [CLUSTEREDNONCLUSTERED] INDEX index_name ON table_name(column_name [, column_name] .)9GX&XOÊQKGL\VHWDÊRPÔWFKPXÊFNKQJWXÊQKRPWUQFÔW0$'9FXDEDQJ1+$19,(1 CREATE NONCLUSTERED INDEX idx_nhanvien_madv ON nhanvien(madv).KXQJQKQ9LHZ0ÔWNKXQJQKQFRWKFRLQKODPÔWeEDQJDRfFRQÔLGXQJÔF[DFQKWPÔWWUX\YÂQ0ÔWWUX\YÂQTXHU\ODPÔWWÊSFDFFKGĂQLQVWUXFWLRQQKPWUX\[XÂWYDKLQWKGOLÊXWFDFEDQJWURQJ&6'/&DFWUX\YÂQÔFWKÊFKLÊQEQJFDFKVGXÊQJFXOÊQK6(/(&7ÔFFÊSÂQWURQJFKQJ0ÔWNKXQJQKQWURQJJLÂQJQKPÔWEDQJYLPÔWWÊRFDFWQFÔWYDFDFGRQJGOLÊX7X\QKLQNKXQJQKQNKQJWQWDÊLQKODPÔWFÂXWUXFOXWUGOLÊXWURQJ&6'/'OLÊXEQWURQJNKXQJQKQWKÊFFKÂWODGOLÊXÔF[DFQKWPÔWKD\QKLXEDQJFVYDGRRSKXÊWKÔFYDRFDFEDQJFV&DFNKXQJQKQWKQJÔFVGXÊQJEQWURQJ&6'/QKPFDFPXÊFFKVDX\ 6GXÊQJNKXQJQKQWÊSWUXQJWUQGOLÊXÔF[DFQKTráön Nguyãn Phong• 6GX£QJNKXQJQKQ QJLDQKRDWKDRWDFGOL£X• 6GX£QJNKXQJQKQ WX\EL¢QGOL£X• 6GX£QJNKXQJQKQ [X¢WNK XH[SRUWGOL£X• 6GX£QJNKXQJQKQ EDRP£WGOL£Xj WD£RNKXQJQKQED£QVGX£QJFXO£QKFRFXSKDSQKVDX CREATE VIEW view_name[(column_name [, column_name] .)] AS select_statement7URQJRVHOHFWBVWDWHPHQWODP¤WFXO£QK6(/(&7GXQJ WUX\[X¢WGOL£XWP¤WKD\QKLXEDQJ.KLWD£RNKXQJQKQFQOX\P¤WV¢L PVDX• 7QNKXQJQKQSKDLWXQWKHRFDFTXLWFYQKGDQKYDSKDLGX\QK¢W¢LYLP¡LQJLVGX£QJ• .KQJWK UDQJEX¤FFDFP£FQKFDFTXLWFFKRNKXQJQKQ• .KQJWK [\G£QJFKPX£FFKRNKXQJQKQ• 7URQJFXO£QK&5($7(9,(:NKQJFQWKL¢WSKDLFKQKWQF¤W7QFXDFDFF¤WFXQJQKNL XGOL£XFXDFKXQJVHWQJQJYLFDFF¤WWURQJGDQKVDFKFKR¤QFXDFXO£QK6(/(&7• %D£QSKDL[DFQKWQF¤WWURQJFXO£QK&5($7(9,(:WURQJFDFWUQJK¤SVDX− 0¡LF¤WFXDNKXQJQKQ¤FSKDWVLQKWP¤WEL XWKFV¢KR¤FP¤WKDPFDLVQKD\P¤WKQJ− +DLKD\QKLXF¤WFXDNKXQJQKQFRWUXQJWQ− %D£QPX¢QWKD\ LWQF¤WWURQJNKXQJQKQNKDFYLWQF¤WFXDEDQJFV9GX&XO£QKGL\VHEO¡LGRWQFXDF¤WWKNKQJ[DFQK¤F CREATE VIEW thongtin_nv AS SELECT manv,hoten,datediff(year,ngaysinh,getdate()),tendv FROM nhanvien,donvi WHERE nhanvien.madv=donvi.madvj FXO£QKWUQFRWK WK£FKL£Q¤FED£QSKDL£WWQFKRFDFF¤WFXDNKXQJQKQQKVDX CREATE VIEW thongtin_nv(manv,hoten,tuoi,donvi)[...]... tục lưu trữ là một trong những
đối tượng cơ sở dữ liệu.
Có thể xemchúng tương tự như những thủ tục trong các ngôn ngữ lập trình. Mỗi một thủ tục lưutrữ
có thể
có các khả năng sau:ã Nhận các tham
số đầu vào, thực thi các câu lệnh bên trong thủ tục và trả về cácgiá trị.ã Bên trong mỗi thủ tục
có thể chứa các câu lệnh nhằm thực hiện các thao táctrên
cơ sở dữ liệu (kể cả việc gọi đến các thủ tục lưu... thái thông qua đó
có thể xác định việc thực thi thủ tụclà thành công hay bị lỗi.Việc sử dụng các thủ tục lưu trữ bên trong
cơ sở dữ liệu sẽ mang lại những lợiích sau:ã Thủ tục lưu trữ cho phép module hoá công việc, tạo điều kiện thuận lợi choviệc thực hiện các thao tác trên
dữ liệu. ã Thủ tục lưu trữ được phân tích, tối ưu và biên dịch khi tạo ra nên việc thực thichúng nhanh h¬n nhiỊu
so víi viƯc... không được thực hiện dựa trên tiêu đề cột.ã Từ khoá COMPUTE
có thể được sử dụng mà không
có BY và khi đóORDER BY là tùy chọn.1.11 Thống kê
dữ liệu với GROUP BY và HAVINGTa
có thể sử dụng các mệnh đề GROUP BY và HAVING để thống kê
dữ liệu. GROUP BY tổ chức
dữ liệu vào các nhóm, HAVING thiết lập các điều kiện lên cácnhóm trong kết quả truy vấn. Những mệnh đề này thường được sử dụng kết hợp vớinhau... NULLGiá trị NULL
có thể được nhập vào một cột cho phép chấp nhận giá trị NULLtheo một trong ba cách sau:ã Nếu không
có dữ liệu được đưa vào và không
có mặc định cho cột hay kiểu dữ
liệu trên cột đó.ã Người sử dụng trực tiếp đưa giá trị NULL vào cho cột đó.ã Một cột
có kiểu
dữ liệu là kiểu
số sẽ chứa giá trị NULL nếu giá trị được chỉđịnh gây tràn số.Trong mệnh đề WHERE, ta sử dụng IS NULL hoặc... bản thân mỗi truy vấn phải cùng kiểu
dữ liệu. ã Các cột tương ứng trong bản thân từng truy vấn của một câu lệnh UNIONphải xuất hiện theo thứ tự như nhau. Nguyên nhân là do phép hợp
so sánh cáccột từng cột một theo thứ tự được cho trong mỗi truy vấn.ã Khi các kiểu
dữ liệu khác nhau được kết hợp với nhau trong câu lệnhUNION, chúng sẽ được chuyển sang kiểu
dữ liệu cao hơn (nếu
có thể được).ã Tiêu... SWHERE A *= CSẽ cho kết quả là:A B C D 1 b1 Null NullNull b2 Null Null4b3 4D21.10 Tạo các dòng thống kê
dữ liệu với COMPUTE BYTa sử dụng mệnh đề COMPUTE BY kết hợp với các hàm gộp dòng và mệnh đềORDER BY để sản sinh ra các các báo cáo (report) nhằm thống kê các giá trị
dữ liệu Trỏửn Nguyón PhongMMUUCC LLUUCC&+ml1*1*k11*muir1+1*+p$'mu/,j87$2%$u1*'nv/,k8&DFWKXÔFWQKOLQTXDQÂQEDQJ7DÊREDQJEQJWUX\YÂQ64/... DISTINCT 161.6 Tạo bảng mới bằng câu lệnh SELECT INTO 171.7 Sắp xếp kết quả truy vấn bằng ORDER BY 171.8 Phép hợp và toán tử UNION 181.9 Phép nối 201.10 Tạo các dòng thống kê
dữ liệu với COMPUTE BY 241.11 Thống kê
dữ liệu với GROUP BY và HAVING 261.12 Truy váún con (subquery) 27%l681*&i31+i79$t;2$w'nv/,k8% VXQJGOL£X&£SQK£WGOL£X... LLIIUU1JQQJWKDRWDFGOLÊXFXQJFÂSFKRQJLVGXÊQJNKDQQJWLÂQKDQKFDFWKDRWDFWUX\[XÂWEVXQJFÊSQKÊWYD[RDGOLÊX1JQQJWKDRWDFGOLÊXEDRJPFDFFXOÊQK6(/(&7,16(5783'$7(YD'(/(7(7UX\[XWGOLXĐể truy xuất
dữ liệu từ các dòng và các cột của một hay nhiều bảng, khung nhìn,ta sử dụng câu lệnh SELECT. Câu lệnh này
có thể dùng để thực hiện phép chọn (tức làtruy xuất một tập con các dòng trong một hay nhiều bảng), phép chiếu (tức là truyxuất một tập con các cột trong một hay nhiều bảng) và phép nối (tức là liên kết cácdòng trong hai hay nhiều bảng để truy xuất
dữ liệu) .Cú pháp chung... thĨ sư dơng c©u lƯnh sau:SELECT * FROM nhanvienWHERE hsluong IN (1.86, 1.92, 2.11)Các ký tự đại diện và mệnh đề LIKETừ khoá LIKE (NOT LIKE) sử dụng trong câu lệnh SELECT nhằm mô tả khuôndạng của
dữ liệu cần tìm kiếm. Chúng thường được kết hợp với các ký tự đại diện sauđây:Ký tự đại diện ý nghĩa% Chuỗi ký tự bất kỳ gồm không hoặc nhiều ký tự- Ký tự ®¬n bÊt kú[] Ký tù ®¬n bÊt kú trong giíi hạn... SELECT ten, diachi FROM nhanvien n11.2 Mệnh đề WHEREMệnh đề WHERE trong câu lệnh SELECT xác định các ®iỊu kiƯn ®èi víi viƯc truyxt d÷ liƯu. Sau mƯnh đề WHERE là một biểu thức logic và chỉ những dòng
dữ liệu nào thoả mn biểu thức sau WHERE mới được hiển thị trong kết quả truy vấn. Trongmệnh đề WHERE thường sử dụng:ã Các toán tử
so sánhã Giới hạn ( BETWEEN và NOT BETWEEN).ã Danh sách (IN, NOT IN)ã . định các điều kiện đối với việc truyxuất dữ liệu. Sau mệnh đề WHERE là một biểu thức logic và chỉ những dòng dữ liệunào thoả mn biểu thức sau WHERE mới. NULLtheo một trong ba cách sau: Nếu không có dữ liệu được đưa vào và không có mặc định cho cột hay kiểudữ liệu trên cột đó. Người sử dụng trực tiếp đưa