1. Trang chủ
  2. » Giáo Dục - Đào Tạo

nhập môn hệ quản trị Cơ sở dữ liệu phần 5 potx

21 386 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 21
Dung lượng 0,92 MB

Nội dung

Nhp môn H qun tr c s d liu DB2 84 Hình 7.12 – Xut kt qu lý l$ch / nh#p mt lý lch ã c tùy ch-nh t* Tr giúp cu hình, kích vào trình n Configure, sau ó ch&n Import Profile -> Customize, nh c mô t trong Hình 7.13 Hình 7.13 – Nh#p mt lý lch Hình 7.14 mô t nhng trng cn c hoàn thành  nh#p mt lý lch Nhp môn H qun tr c s d liu DB2 85 Hình 7.14 – Nhp lý l$ch c tùy ch,nh Nhp môn H qun tr c s d liu DB2 86 Bài tp nhanh #4 – S" dng Tr giúp thit lp cu hình Mc tiêu Chng trình Tr giúp thit l#p cu hình có th c s dng  cu hình các kt ni c s d liu t* xa mt cách nhanh chóng và d0 dàng. Trong bài t#p nhanh này, bn s, to ch- mc cho mt c s d liu nm trên mt máy ch DB2  xa (remote DB2 server - c th hin bng máy trm ca ngi ng+i bên cnh bn, s dng c hai cách Tìm kim và Khám phá ). Mt khi c s d liu ó ã c lit kê, bn s, có th truy c#p c s d liu này ging nh là nó ang  ngay trên h thng máy ca mình. DB2 thc hin tt c các quá trình giao tip mt cách thm lng. Ghi chú Bài t#p nhanh này gi nh rng bn ang làm vic trong 1 mng máy tính. Nu không phi nh v#y, bn luôn có th s dng chính máy tính ca mình v*a làm máy ch v*a làm máy khách và làm theo các ch- d%n cho công vic cu hình di ây  kt ni n chính h thng ca bn. Th tc 1. H"i ngi bên cnh (hay ngi hng d%n bn) các thông tin sau ây : Thông tin c s d liu t* xa: (PR) Giao thc _TCPIP__ (IP) /a ch- IP hay tên máy ch _________ (PN) S cng ca th hin (instance) _________ (DB) Tên ca c s d liu _SAMPLE_ Các m7o : - Trong môi trng Windows,  ly tên ca máy ta gõ lnh hostname t* ca s dòng lnh - Trong môi trng Windows,  ly a ch- IP ta gõ lnh ipconfig t* ca s dòng lnh 2. M chng trình Tr giúp thit l#p cu hình (M7o: chng trình này có th truy c#p thông qua lnh Start) 3. M bng ch&n Selected và ch&n mc Add Database Using Wizard 4. Trong trang Source ca trình tr giúp, ch&n mc Manually Configure a Connection to a Database. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp. 5. Trong trang Protocol ca trình tr giúp, ch&n mc TCP/IP. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp. 6. Trong trang TCP/IP ca trình tr giúp, nh#p vào tên y  ca máy ch hoc là a ch- IP mà bn ã ghi li trong bc 1. Nh#p vào s cng bn ã ghi trong bc 1. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp. Ghi chú: Tùy ch&n Service Name có th c s dng nu bn có mt mc (entry) trong t#p tin Services ni b vi mt cng có s c nh ngh'a da trên cng mà máy ch t* xa ang lng nghe. Khi bn s dng tùy ch&n này, DB2 s, tìm kim trong t#p tin dch v trên máy ca bn ch không phi trên máy ch. Bn cn phi thêm mt mc vào t#p tin này nu bn mun s dng tùy ch&n trên. Nhp môn H qun tr c s d liu DB2 87 7. Trong trang C s d liu ca trình tr giúp, nh#p vào tên ca c s d liu c nh ngh'a trên máy ch t* xa mà bn ã ghi li trong bc 1  trng Database Name. / ý vic trng Database Alias c in mt cách t ng vi cùng giá tr ó nh th nào. Bí danh c s d liu (database alias) là mt cái tên mà nhng ng dng ni b trên máy ca bn s, s dng  kt ni n c s d liu này. Bi vì bn ã có mt c s d liu trên máy ca mình c nh ngh'a s)n vi tên là SAMPLE, DB2 s, không cho phép bn to tên mt c s d liu khác có cùng tên. Vì th bn phi s dng mt tên bí danh khác. Trong ví d này, hãy i bí danh c s d liu thành SAMPLE1. Bn có th nh#p vào mt li chú thích tùy ý v c s d liu này nu bn mun. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp. 8. Trong trang Data source ca trình tr giúp, bn có th (không bt buc) ng ký c s d liu (ngu+n d liu) mi này nh mt ngu+n d liu ODBC. Vic này s, t ng ng ký c s d liu ó trong chng trình qun lý ODBC ca Windows (Windows ODBC Manager) cho bn. Trong ví d này, b" du ánh  mc “Register this database for ODBC” ti vì bn s, không s dng ODBC. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp. 9. Trong trang Node Options ca trình tr giúp, xác nh h iu hành ca máy ch ni mà c s d liu t* xa ang nm ti ó. Bi vì tt c các máy trm trong phòng máy này u s dng Microsoft Windows, hãy m bo rng mc Windows trong danh sách s xung c ch&n. Trng Instance name nên c t là DB2. Nu trng này cha c t thì hãy t giá tr cho nó là DB2. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp. 10. Trang System Options ca trình tr giúp cho bn c hi  m bo rng h thng và tên máy ch ã c in chính xác và xác nh#n nhng cài t ca h thng. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp. 11. Trang Security Options ca trình tr giúp cho phép bn xác nh ni bn mun vic xác thc ngi dùng xy ra và phng thc bn mun s dng. Ch&n mc Use authentication value in server’s DBM Configuration. Cách làm này s, s dng phng thc c xác l#p bi tham s AUTHENTICATION trong t#p tin cu hình ca th hin (instance)  xa. Nhn nút Finish  to danh mc c s d liu t* xa và óng trình tr giúp li. Mt hp thoi xác nh#n s, hin ra. Nhn nút Test Connection  m bo bn có th kt ni thành công n c s d liu. Thêm vào ó,  m bo tên ngi dùng và m#t kh u mà bn cung cp là hp l trên máy ch  xa (bi vì có th tham s AUTHENTICATION ca máy ch c t giá tr là SERVER). Nu vic th kt ni thành công, bn ã to danh mc c s d liu  xa mt cách thành công. Nu vic kt ni không thành công, bn hãy quay tr li trình tr giúp và m bo rng tt c các giá tr ã c xác l#p úng (Nhn nút Change  quay li nhng cài t trong trình tr giúp) 12. M trung tâm iu khin và th xem nhng bng khác nhau trong c s d liu t* xa v*a mi c to danh mc 13. Quay tr li chng trình Tr giúp thit l#p cu hình và th to danh mc vi mt c s d liu khác, ln này s dng tu ch&n Search the Network. Làm t*ng bc trong trình tr giúp ging nh bn ã cu hình kt ni bng tay. Lu ý rng, trên nhng mng ln, vic tìm kim có th s, tn thi gian  tr v các kt qu Nhp môn H qun tr c s d liu DB2 88 8 Chng 8 - Làm vic vi các i tng d liu Chng này tho lu#n các i tng d liu nh là dng s + (schemas), dng bng (table), khung nhìn (view), ch- mc (indexes), chui (sequences)… Mt s các i tng d liu cao cp nh là các b%y s kin (triggers), các hàm do ngi dùng nh ngh'a (UDFs) và nhng th tc c lu tr s, c tho lu#n trong chng 14, SQL PL lu tr các th tc, và chng 15, trong dòng SQL PL, UDFs, Triggers. 8.1 S  S + là không gian tên (name spaces) cho t#p hp các i tng d liu. Chc nng chính ca chúng nh sau: - Cung cp cho bn các ch- d%n ca quyn s hu các i tng hay các mi quan h i vi mt ng dng. - Gom nhóm các i tng có mi quan h vi nhau. Tt c các i tng d liu trong DB2 có hai phn tên theo tiêu chu n; s + là na phn u tiên ca tên: <tên_s >.<tên_i tng> Tên i tng theo quy chu n phi là duy nht. Khi bn kt ni c s d liu và to hay tham chiu n mt i tng mà không nh rõ tên s +, DB2 s, ly mã tài khon mà bn kt ni vi c s d liu làm tên s +. Ví d, nu bn kt ni d liu m%u vi tên s dng là “arfchong”, và to mt bng bng cách s dng phát biu CREATE TABLE CREATE TABLE artist … Tên theo quy chu n y  ca bng c to ra s, là arfchong.artists. 8.2 Bng Mt bng là mt t#p hp các d liu có mi quan h vi nhau mt cách hp lý theo các ct và hàng. Phát biu bên di cung cp cho bn ví d v vic làm cách nào  to ra mt bng bng cách s dng phát biu CREATE TABLE CREATE TABLE artists { artno SMALLINT not null, name VARCHAR (50) with default ‘abc’, classification CHAR (1) not null, bio CLOB (100K) logged, picture BLOG (2M) not logged compact } Nhp môn H qun tr c s d liu DB2 89 In mytblsl Trong các phn tip theo ây, chúng ta có th mô t các phn chính ca phát biu CREATE TABLE này. 8.2.1 Kiu d liu Hình 8.1 Danh sách các kiu d liu c h tr trong DB2 Hình 8.1 – Các kiu d liu ca DB2 Các kiu d liu i tng ln (LOB) Các kiu d liu i tng ln c dùng  lu tr các chui lý t ln, các chui nh phân ln, hay các t#p tin c ch- ra trong hình 8.2 Nhp môn H qun tr c s d liu DB2 90 Hình 8.2 – Các kiu d liu LOB Các i tng kiu nh phân ln này thng c vit tt  cho d0 hiu: Mt i tng nh phân ln phi là mt BLOB, mt i tng ký t ln là CLOB, và i tng ký t ln 2 byte c.ng c bit nh là DBCLOB. Các kiu d liu c $nh ngh-a bi ngi dùng DB2 cho phép bn có th t nh ngh'a kiu d liu ca chính mình, da trên kiu d liu ca h thng. /iu này c xem nh là vic có b kiu d liu do ngi dùng t nh ngh'a (UDTs). UDTs c dùng khi: - Có nhu cu thit l#p ng cnh cho các giá tr - Có nhu cu cn ép kiu d liu DB2. Các phát biu theo sau âu mô t mt ví d v vic s dng UDTs nh th nào và khi nào CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISIONS CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISIONS CREATE TABLE person { F_name VARCHAR (30), Weight_p POUND NOT NULL, Weight_k KILOGRAM NOT NULL } Trong ví d này, có 2 UDTs c to ra là: POUND and KILOGRAM. C hai u c xây ng da trên kiu d liu s)n có ca h thng INTEGER. Mnh  WITH COMPARISIONS c nh ngh'a nh là phn cú pháp ch- ra rng vic thay các hàm vi cùng tên c.ng ging nh vic các kiu d liu s, c to ra. Bng person dùng 2 UDTs mi trong ct weight_p và weight_k theo tun t. Nu bây gi chúng ta a ra phát biu sau: SELECT F_NAME FROM PERSON WHERE weight_p > weight_k Nhp môn H qun tr c s d liu DB2 91 Bn s, nh#n c mt thông báo li vì vic so sánh 2 ct vi kiu d liu khác nhau. Th#m chí weight_p và weight_k dùng d liu là POUND và KILOGRAM, theo th t, c hai trng này u c da trên kiu d liu là INTEGER. Tuy nhiên bng vic to UDTs thì bn không th thc hin loi so sánh này. /ây chính là nhng gì bn mun, bi vì trong cuc sng thc, làm th nào  so sánh gia pound và kilogram? Nó s, vô lý. Trong ví d k tip, bn mun so sánh ct weight_p vi kiu d liu integer. Tuy nhiên hai kiu d liu này khác nhau, vì th bn s, nh#n c thông báo li tr* khi bn s dng mt hàm ã ép kiu. Nh bn thy trong phát biu bên di, chúng tôi s, dùng hàm ép kiu POUND()  iu so sánh này có th thc hin c. Nh ã nêu  trên hàm ép kiu POUND() c to ra vi UTD khi triu g&i WITH COMPARISIONS ca phát biu CREATE DISTINCT TYPE. SELECT F_NAME FROM PERSON WHERE weight_p > POUND (30) Các giá tr$ NULL Mt giá tr null i din cho mt rng thái không xác nh. Tuy nhiên, phát biu CREATE TABLE có th nh ngh'a mt ct bng cách s dng mnh  NOT NULL. /iu này m bo rng ct này s, cha giá tr d liu c bit n. Bn c.ng có th ch- nh giá tr mc nh cho ct nu NOT NULL c khai báo. Phát biu k tip cung cp ví d cho iu này: CREATE TABLE Staff { ID SMALLINT NOT NULL, NAM E VARCHAR (9), DEPT SMALLINT NOT NULL with default 10, JOB CHAR (5), YEARS SMALLINT, SALARY DECIMAL (7, 2), COMM DECIMAL (7, 2) with default 15 } 8.2.2 Ct khoá chính (Identity columns) Ct khoá chính này là mt con s c to ra t ng, s này là duy nht cho mi dòng. Ch- có mt ct khoá chính cho mt bng. Có hai cách to ra giá tr cho ct khoá chính, iu này ph thuc vào vic nó c nh ngh'a nh th nào: - Luôn luôn c sinh ra: nhng giá tr luôn luôn c DB2 sinh ra. Các ng dng thì không c phép cung cp nhng giá tr c th. - Sinh ra mc nh: giá tr có th c cung cp c th bi mt ng dng hoc, nu không có giá tr cho trc, thì DB2 s, sinh ra. DB2 không th m bo c tính duy nht. Tùy ch&n này c d nh phc v cho vic truyn d liu, và cho vic unload và reload ca mt bng. Hãy xem qua ví d sau: Nhp môn H qun tr c s d liu DB2 92 CREATE TABLE subscriber (subscriberID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 100 INCREMENT BY 100), firstname VARCHAR (50), lastname VARCHAR (50)) Trong ví d này, ct subscriberID là mt INTEGER c nh ngh'a nh là mt ct khoá chính thuc loi luôn luôn c sinh ra t ng. Giá tr c sinh ra s, bt u t* 100, và nó s, c tng lên vi bc là 100. 8.2.3 Các  tng tun t (Sequence object) Các i tng tun t sinh ra mt con s duy nht da vào c s d liu. Không ging nh các ct khóa chính, các i tng tun t này là nhng bng c l#p, xem ví d minh h&a  phát biu sau: CREATE TABLE t1 (salary int) CREATE SEQUENCE myseq START WITH 10 INCREMENT BY 1 NO CYCLE INSERT INTO t1 VALUES (nextval for myseq) INSERT INTO t1 VALUES (nextval for myseq) INSERT INTO t1 VALUES (nextval for myseq) SELECT * FROM t1 SALARY 10 11 12 3 record(s) selected SELECT prevval for myseq FROM sysibm.sysdummy1 1 12 1 record(s) selected PREVVAL cung cp cho bn giá tr hin ti ca dãy tun t, trong khi NEXTVAL cung cp giá tr k tip. Ví d bên trên c.ng s dng SYSIBM.SYSDUMMY1. ây là mt bng danh mc h thng mà nó ch- có mt ct và mt hàng. Nó có th c dùng trong tình hung nh mt câu truy vn yêu cu tr v ch- mt giá tr. Các bng danh mc h thng c mô t trong phn k tip. 8.2.4. Các bng danh sách h thng Mi c s d liu có các bng danh sách h thng ca riêng nó. Các bng này lu tr siêu d liu v các i tng c s d liu. Bn có th truy vn nhng bng này nh bt k bng c s d liu bình thng khác. Ba s + c s dng  nh#n dng các bng danh sách h thng: • SYSIBM: các bng c s, ti u hóa s dng DB2 • SYSCAT: khung nhìn (view) da trên bng SYSIBM, ti u s d0 s dng. Nhp môn H qun tr c s d liu DB2 93 • SYSSTAT: các s liu thng kê c s d liu Sau ây là mt vài ví d v các khung nhìn ca danh mc: • SYSCAT.TABLES • SYSCAT.INDEXES • SYSCAT.COLUMNS • SYSCAT.FUNCTIONS • SYSCAT.PROCEDURES 8.2.5. Khai báo các bng tm thi Khai báo bng tm thi là các bng c to ra trong b nh, c s dng bi mt ng dng và c t ng xóa khi ng dng kt thúc. Nhng bng này ch- có th c truy nh#p bi ng dng to ra chúng. Không có bn ghi nào c sinh trong bng danh sách ca DB2. Truy nh#p nhng bng này có hiu qu rt cao bi vì không có s tranh chp danh sách, các hàng không b khóa, không ghi nh#t ký (tùy ch&n), và không kim tra quyn. C.ng có h tr ch- mc cho các bng tm thi này, ó là, bt c ch- mc chu n nào c.ng có th c to trên mt bng tm thi. Bn c.ng có th chy lnh RUNSTATS vi các bng này. Khai báo các bng tm thi  bên trong mt không gian s dng ca bng tm thi, ây là cái phi c nh ngh'a trc khi to ra bt c bng tm thi nào. Các phát biu di ây cung cp mt ví d làm th nào  to ba khai báo bng tm thi: CREATE USER TEMPORARY TABLESPACE apptemps MANAGED BY SYSTEM USING ('apptemps'); DECLARE GLOBAL TEMPORARY TABLE temployees LIKE employee NOT LOGGED; DECLARE GLOBAL TEMPORARY TABLE tempdept (deptid CHAR(6), deptname CHAR(20)) ON COMMIT DELETE ROWS NOT LOGGED; DECLARE GLOBAL TEMPORARY TABLE tempprojects AS (fullselect) DEFINITION ONLY ON COMMIT PRESERVE ROWS NOT LOGGED WITH REPLACE IN TABLESPACE apptemps; Khi mt khai báo bng tm thi c to ra, s + ca nó là SESSION, và phi c ch- tng minh. ID ngi dùng c s dng  to mt bng tm thi s, có tt c quyn trên bng. Mi ng dng to mt bng tm thi s, quyn c l#p ca riêng nó c ch- ra trong Figure 8.5. [...]...Nh p môn H qu n tr c s d li u DB2 94 Figure 8 .5 – Ph m vi c a các b ng t m th i toàn c c công khai Bài t p nhanh #5 - Kh i t o m t b ng m i M c tiêu / n ây, b n có th s d ng nh ng b ng có s)n trong c s d li u SAMPLE minh h&a các khái ni m Cu i cùng, b n s, c n... employee_copy ALL IMMEDIATE UNCHECKED N u b n thích làm vi c v i Trung tâm i u khi n h n, b n có th th c hi n công c LOAD và SET INTEGRITY nh trong hình 9.4 và 9 .5 t ng ng Hình 9.4 - Th c hi n công c LOAD Nh p môn H qu n tr c s d li u DB2 104 Hình 9 .5 - Th c hi n công c SET INTEGRITY 9.4 Công c db2move T i m t th i i m, công c EXPORT, IMPORT, và LOAD ch- làm vi c trên m t b ng M c dù b n có th vi t m t k... t hình nh c nh ngh'a nh m t c t “NULLABLE” B n có ngh' t i sao c t c nh ngh'a nh th ? 5 4 ây, t t c thông tin b t bu c cho vi c t o b ng u c cung c p B ng cách nh y sang các trang khác, b n coi nh ang ch&n các giá tr m c nh cho nh ng tùy ch&n ó B n có th thêm các khóa và ràng bu c sau khi m t b ng v*a c t o Nh p môn H qu n tr c s d li u DB2 96 6 Thêm m t ràng bu c t i b ng h n ch các giá tr trên c... nh hình 8.6: Hình 8.6 – Th c hi n tr giúp thi t k t& Trung tâm i u khi n Hình 8.7 Cho th y tr giúp thi t k Theo sau là các b thi t k g i ý t* DB2 ch ng d%n t c cách Nh p môn H qu n tr c s d li u DB2 98 Hình 8.7 – Tr giúp thi t k 8 .5 Tính toàn v.n tham chi u Toàn v7n tham chi u cho phép c s d li u qu n lý c các quan h gi a các b ng B n có th thi t l#p ki u cha-con (parent-child) c a các quan h gi a... là SUPPLIES B n c.ng có th gõ vào m t ghi chú tùy ý Nh n vào nút Next ti p t c t i trang sau c a h ng d%n 4 T* trang này, b n có th thêm các c t vào b ng Nh n nút ADD thêm các c t Nh p môn H qu n tr c s d li u DB2 95 Gõ “product_id” vào Column name và ch&n ki u là INTEGER B" d u ki m Nullable, và nh n vào nút Apply nh ngh'a c t L p l i b c này cho nh ng c t còn l i c a b ng s d ng các tùy ch&n c chc... empno foreign key workdept reference department on delete no action) in DMS01 Hình 8.8 - Ví d v toàn v.n tham chi u gi a các b ng Trong toàn v7n tham chi u, th ng s d ng các khái ni m sau: PHONENO Nh p môn H qu n tr c s d li u DB2 Khái ni m B ng cha (Parent table) B ng ph thu c (Dependant table) Khóa chính (Primary key) Khóa ngo i (Foreign key) 99 Mô t B ng d li u i u khi n ch a khóa chính B ng d li... c áp t d li u phù h p v i c tính nào ó ho c các quy t c trong kinh doanh c a d li u Ví d , n u m t c t c a b ng là gi i tính, nó có th c ép ch a m t trong hai giá tr là “M” cho nam và “F” cho n Nh p môn H qu n tr c s d li u DB2 100 9 Ch ng 9 – Công c di chuy n d li u Nh ng công c hay câu l nh c mô t trong ph n này c s d ng di chuy n d li u trong cùng m t c s d li u hay qua nh ng c s d li u khác nhau... ng Công c LOAD thì nhanh h n vì nó i tr c ti p n nh ng trang c s d li u mà không c n t ng tác n h th ng DB2; tuy nhiên, ph ng th c này không th t o ra nh ng ki m tra ràng bu c i v i d li u, và s, Nh p môn H qu n tr c s d li u DB2 101 không th c hi n c các b%y s ki n (n u có) / m b o m t cách kiên nh vi c n p d li u dùng công c LOAD, l nh SET INTEGRITY th ng c s s ng theo sau Nh ng ph n ti p theo sau... (popup menu) t* ó b n có th ch&n Export Sau khi ch&n m c này, c a s h ng d%n t*ng b c s, hi n lên Ch- c n n gi n làm theo nh ng b c cung c p s)n trong h ng d%n này hoàn thành quá trình th c hi n Nh p môn H qu n tr c s d li u DB2 102 9.2 Công c IMPORT (nh p) Công c IMPORT c dùng n p d li u t* m t t p sang m t b ng nh ã nói tr c ây / ng sau nó, m t thao tác SQL INSERT c th c thi th c s Khi m t l nh... c theo 3 giai o n: LOAD, BUILD và DELETE Ví d sau ây n p t t c các d li u t* t p employee.ixf có nh d ng IXF vào trong b ng employee_copy L a ch&n REPLACE là m t trong nh ng l a ch&n có s)n trong Nh p môn H qu n tr c s d li u DB2 LOAD Trong tr ng h p này, nó trong b ng employe_copy 103 c s d ng REPLACE t t c các d li u có LOAD FROM employee.ixf OF IXF REPLACE INTO employ_copy Sau khi th c thi câu l . nó c ch- ra trong Figure 8 .5. Nhp môn H qun tr c s d liu DB2 94 Figure 8 .5 – Phm vi ca các bng tm thi toàn cc công khai Bài tp nhanh #5 - Khi to mt bng mi Mc. c hoàn thành  nh#p mt lý lch Nhp môn H qun tr c s d liu DB2 85 Hình 7.14 – Nhp lý l$ch c tùy ch,nh Nhp môn H qun tr c s d liu DB2 86 Bài tp nhanh. DEPT SMALLINT NOT NULL with default 10, JOB CHAR (5) , YEARS SMALLINT, SALARY DECIMAL (7, 2), COMM DECIMAL (7, 2) with default 15 } 8.2.2 Ct khoá chính (Identity columns) Ct khoá

Ngày đăng: 08/08/2014, 20:21

w