KHOA CÔNG NGH THÔNG TIN & TRUY N THÔNG
Ð I H C C N THO
Giáo trình:
H QU N TR
CO S D LI U
B môn H Th ng Thông Tin & Toán
07/2009
ng D ng
Khoa CNTT & TT - ÐHCT
PH N 1. T NG QUAN
I.
M C ÐÍCH YÊU C U
Sau khi h c xong môn này, sinh viên có th :
K t n i v i CSDL trên server, t o/xóa/thay d i table, t o ch m c, thêm/xóa/thay d i d li u trong
m t table...
S d ng thành th o câu l nh SELECT d tr l i câu h i truy v n.
S d ng ngôn ng PL/SQL d t o các Stored Procedures / Functions.
Thi t l p ràng bu c toàn v n và s d ng Trigger trong Oracle.
Qu n lí danh m c h th ng (system catalog) hay meta data.
Qu n tr quy n ngu i dùng.
II. N I DUNG C T LÕI
Tài li u hu ng d n g m 3 ph n:
Ph n 1 gi i thi u t ng quan v môn h c, trong dó trình bày c th các ki n th c, k nang mà sinh
viên c n d t du c sau khi h c môn này. Ngoài ra, còn trình bày so lu c v n i dung c a tài li u,
ki n th c tiên quy t và phuong pháp h c t p.
Ph n 2 gi i thi u các nét co b n v h qu n tr Oracle. Trong dó, gi i thi u so lu c v ph n m m
SQL Developer du c s d ng d so n th o và th c thi câu truy v n d li u. Ngoài ra, trong ph n
này, giáo trình cung trình bày m t cách chi ti t các thao tác c n thi t d có th th c hành.
Ph n 3 g m 12 bài th c hành c th . M i bài s có b c c g m 4 ph n nhu sau:
1. M c tiêu: nêu rõ m c tiêu rèn luy n c a bài.
2. Lý thuy t: cung c p ng n g n ki n th c và các câu l nh c n dùng trong bài.
3. Bài t p có hu ng d n.
4. Bài t p t làm.
III. KI N TH C TIÊN QUY T
Nhu m t môn b t bu c, môn h c này du c dua vào gi ng d y cho sinh viên chuyên ngành Công Ngh
Thông Tin v i yêu c u sinh viên dã h c xong môn H Co S D Li u (CT106).
IV. PHUONG PHÁP H C T P
V i m c tiêu nâng cao kh nang t h c t p và t nghiên c u c a sinh viên, ngu i so n dã c g ng
l ng ghép vào n i dung các ví d minh h a don gi n, c th ; d ng th i b trí b c c v i mong mu n
t o s d hi u cho sinh viên và ngu i d c.
Ð h c t t môn h c này, tru c h t sinh viên c n ph i:
T nghiên c u tài li u hu ng d n, d c bi t là ph n 1 và ph n 2.
Tru c m i bu i th c hành, sinh viên c n dành kho ng 30 phút d xem l i ph n lý thuy t c a
câu l nh s th c hành (ph n 1 và 2 c a m i bài + tài li u tham kh o n u c n thi t).
Giáo trình th c hành H QTCSDL
Trang 2
Khoa CNTT & TT - ÐHCT
Trong m i bu i th c hành, sinh viên th c hi n các yêu c u theo hu ng d n trong bài. Sinh viên
c n ph i t suy nghi tìm ra dáp án cho các câu h i bài t p tru c khi tham kh o dáp án c a giáo
viên cung c p.
M i bu i sinh viên c n ph i hoàn t t ít nh t là ph n bài t p có hu ng d n. Còn ph n bài t p t
làm sinh viên ph i t hoàn t t tru c khi ti n hành bài th c hành ti p theo.
Giáo trình th c hành H QTCSDL
Trang 3
Khoa CNTT & TT - ÐHCT
PH N 2. CO B N V ORACLE
I.
M T VÀI KHÁI NI M ÐU C S
D NG TRONG ORACLE 10G:
1. Database và Instance
Các h qu n tr co s d li u (CSDL) d u dùng c b nh máy tính và các thi t b luu tr nhu c ng
d ho t d ng. Các c ng cung c p kh nang luu tr lâu dài và m t không gian r ng l n d ch a hàng
tri u m u tin có th lên d n hàng gigabyte. Tuy nhiên, truy c p d li u t
c ng ch m hon nhi u so
v i truy c p t b nh . Vì th các h co s d li u d u s d ng b nh vào vi c n p tru c d li u
nh m tang t c d truy v n.
Trong Oracle, m t co s d li u (database) là m t t p h p các t p tin h th ng luu tr d li u do ngu i
dùng ho c chuong trình dua vào và thông tin v c u trúc c a co s d li u (metadata). Ð có th truy
v n và c p nh t CSDL, Oracle ph i kh i d ng m t s ti n trình n n và c p phát m t vài vùng nh s
d ng trong su t quá trình thao tác trên CSDL.
Khi m t CSDL du c kh i d ng (start), m t SGA (System Global Area) du c c p phát. SGA là m t
vùng b nh dùng d luu tr d li u và các thông tin di u khi n c a m t th hi n (instance), ngu i
dùng khi k t n i d n server du c chia s các d li u có trong SGA. Ngoài ra, Oracle cung c p phát các
vùng d m b nh d ch a d ng d li u và thông tin di u khi n c a các ti n trình máy ch (server
process), PGA du c dùng x lý các câu l nh truy v n SQL, qu n lý truy nh p và các thông tin v
phiên làm vi c (session). Ð ng th i, các ti n trình n n c a Oracle cung du c kích ho t. Các ti n trình
này có nhi m v qu n lý c u trúc b nh , d ng b hóa d li u vào ra c ng và các nhi m v b o trì
t ng quát khác (ghi nh t ký, ph c h i…). S k t h p gi a SGA, PGA và các ti n trình n n du c g i là
th hi n CSDL (Database Instance ho c Oracle Instance).
Nhìn chung, m i th hi n có m t t p h p các ti n trình duy trì và thúc ép m i quan h gi a c u trúc
v t lý c a CSDL và c u trúc b nh . S lu ng các ti n trình ph thu c vào c u hình c a m i th hi n
CSDL. Trong m t server, nhi u CSDL có th t n t i song song. Vì v y, d không b l n l n gi a các
CSDL khác nhau, m i th hi n CSDL du c nh n d ng b ng m t SID riêng bi t (System Identifier).
M t CSDL có th du c m (open hay mount) b i nhi u hon m t th hi n, nhung m t th hi n ch có
th m nhi u nh t m t CSDL mà thôi.
Hình 1 Database Instance
2. Data dictionary
T di n d li u là m t t p h p các b ng (table) và khung nhìn (view) gi ng nhu các CSDL khác, là
noi luu tr các thông tin v c u trúc v t lý và lu n lý c a CSDL. Các thông tin này bao g m:
Thông tin ngu i dùng (quy n, vai trò…)
Ràng bu c toàn v n c a các b ng d li u.
Tên và ki u d li u c a các c t trong b ng d li u.
Giáo trình th c hành H QTCSDL
Trang 4
Khoa CNTT & TT - ÐHCT
Thông tin v vùng nh du c c p phát và s d ng c a các schema object.
…
Th hi n CSDL luôn truy c p d n t di n d li u d phân tích cú pháp các câu l nh SQL. SYS là ch
nhân và là ngu i dùng duy nh t có th toàn quy n thao tác trên các b ng và khung nhìn c a t di n d
li u.
Ð tham kh o các b ng và khung nhìn c a t di n d li u, s d ng câu l nh:
select * from DICT[IONARY]
3. Schema và Schema Object
Schema là m t t p h p các d i tu ng CSDL (database object ho c schema object) thu c v m t ngu i
dùng. M i ngu i dùng trong 1 CSDL s h u duy nh t m t schema có tên trùng v i tên ngu i dùng,
ngu c l i m i schema ch tuong ng v i m t ngu i dùng mà thôi. Schema Object là c u trúc lu n lý
liên quan tr c ti p d n d li u c a CSDL, bao g m các c u trúc nhu b ng (table), khung nhìn (view),
các th t c tr s n (stored procedure)…
II. C U TRÚC CO S
D
LI U TRONG ORACLE
Trong h qu n tr Oracle, m t CSDL du c c u thành b i 2 c u trúc: lu n lý và v t lý. C u trúc lu n lý
mô t các vùng nh dùng d luu tr các d i tu ng nhu các b ng, các hàm… Ngu c l i, c u trúc v t lý
du c xác d nh b i các t p tin h th ng hình thành nên CSDL.
1. C u trúc lu n lý (logical structure)
a. Extent
Ðon v luu tr lu n lý nh nh t du c c p phát cho m t d i tu ng co s d li u, bao g m m t
dãy liên t c các ô d li u (data blocks) du c c p phát d luu tr m t ki u thông tin nh t d nh.
b. Segment
T p h p các extent du c c p phát d luu tr các c u trúc d li u nh t d nh và các extent này
du c luu tr trong cùng m t tablespace. Ví d , d li u c a m t b ng du c luu trong m t table
segment, các ch m c du c luu trong các index segment… Khi các extent c p phát cho
segment d y d li u, Oracle s c p phát thêm extent cho segment dó. Vì các extent du c c p
phát khi c n thi t nên các extent trong cùng m t segment có th không liên t c trong b nh .
Oracle cung c p m t lo i segment d c bi t du c g i là rollback segment. Segment này không
ch a các d i tu ng CSDL, mà ch a “hình nh tru c” (before image) c a d li u du c thay
d i trong khi m t giao tác chua hoàn thành. Các thay d i trên d li u có th du c cu n l i
b ng cách s d ng segment này.
c. Tablespace
Tuong duong m t phân vùng lu n lý c a co s d li u. T t c các d i tu ng c a co s d li u
d u du c luu tr trong các tablespace. M t co s d li u có ít nh t m t tablespace mang tên
SYSTEM ch a t di n d li u (data dictionary). Các tablespace khác du c t o ra nh m ph c
v cho các ng d ng và các tác v khác nhau.
Gi a schema và tablespace không có m i liên quan v i nhau. Các d i tu ng trong 1 schema
có th t n t i trong các tablespace khác nhau. Ngu c l i, Các tablespace có th luu tr các d i
tu ng trong các schema khác nhau.
d. Database
M t CSDL g m m t ho c nhi u vùng nh
Giáo trình th c hành H QTCSDL
c g i là tablespace dùng d luu tr d li u.
Trang 5
Khoa CNTT & TT - ÐHCT
2. C u trúc v t lý (physical structure)
a. Data Block
Ðon v luu tr nh nh t du c dùng trong co s d li u, du c xác d nh b i m t s byte nh t
d nh trong vùng nh v t lý c a co s d li u. Ð l n c a data block du c xác d nh khi co s
d li u du c t o ra.
Hình 2 M i quan h gi a Data block, extent và segment
b. Datafile
V m t lu n lý, Oracle luu tr d li u trong các tablespace. V m t v t lý, các d li u này
du c luu tr trong các datafiles (có ph n m r ng là dbf) tuong ng v i tablespace. B n ch t
c a m t co s d li u là m t t p h p các datafiles du c luu tr trên các thi t b khác nhau nhu
dia t , dia quang h c…
Hình 3 M i tuong quan gi a datafiles và tablespace
Ngoài các datafiles c a co s d li u, còn t n t i 3 lo i t p tin khác k t h p v i m t th hi n
co s d li u (database instance):
Redo-log file (*.rdo ho c *.log): m i th hi n co s d li u duy trì m t t p h p các
t p tin d ng này d ghi l i toàn b các giao tác (transaction). Khi CSDL b l i, các t p
tin nh t ký du c dùng d ph c h i l i d li u.
Control file (*.ctl): m i th hi n co s d li u có ít nh t 1 t p tin d ng này. Nó r t c n
thi t cho ho t d ng bình thu ng c a CSDL. Các t p tin này du c c p nh t thu ng
Giáo trình th c hành H QTCSDL
Trang 6
Khoa CNTT & TT - ÐHCT
xuyên trong quá trình ho t d ng c a CSDL, vì v y nó luôn du c d t vào ch d ghi
khi CSDL du c m . Vì lý do nào dó các t p tin không truy c p du c, CSDL s không
ho t d ng dúng d n. Các t p tin di u khi n ghi nh n các thông tin c a CSDL nhu tên
CSDL, các thông tin v tablespace và các redo-log file…
Archive / backup file: khi m t th hi n CSDL du c th c thi du i phuong th c
archive-log, ti n trình ARCH c a Oracle s dùng các t p tin d ng này luu l i các thay
d i trên các t p tin redo-log.
Hình 4 Quan h gi a c u trúc lu n lý và v t lý trong CSDL
3. C p phát thêm vùng nh cho CSDL
Ta có 3 cách d m r ng vùng nh cho CSDL :
B sung thêm datafile cho tablespace.
T o m t tablespace m i.
Tang vùng nh c a datafile.
B sung thêm datafile
T o tablespace m i
Tang vùng nh c a Datafile
Hình 5 C p phát thêm vùng nh cho CSDL
Giáo trình th c hành H QTCSDL
Trang 7
Khoa CNTT & TT - ÐHCT
III. KHÔNG GIAN D
LI U (TABLESPACE) VÀ B NG D
LI U (TABLE)
1. Không gian d li u
Oracle d nh nghia 3 lo i không gian d li u khác nhau:
Không gian d li u c d nh (permanent tablespace) ch a các d i tu ng CSDL t n t i lâu dài
(persistent schema objects), các d i tu ng này du c luu trong datafile.
Undo tablespace là m t ki u không gian d li u c d nh du c dùng d qu n lý vi c hoàn tác
d li u (undo data) n u co s d li u du c d t du i ch d qu n lý hoàn tác t d ng
(automatic undo management). Oracle khuy n cáo s d ng undo tablespace thay vì s d ng
rollback segment cho vi c hoàn tác d li u.
Không gian d li u t m th i (temporary tablespace) ch a các d i tu ng CSDL trong m t
phiên làm vi c. Tablespace d ng này du c dùng d qu n lý vùng nh cho các thao tác s p
x p (sort operations) trên CSDL. Ví d , n u ta k t n i hai b ng d li u r t l n, Oracle không
th th c hi n thao tác s p x p trong b nh , m t vùng nh s du c c p phát trong temporary
tablespace d th c hi n thao tác này. Các l nh SQL c n cung c p vùng nh th c hi n thao
tác s p x p g m: CREATE INDEX, ANALYZE, Select DISTINCT, ORDER BY, GROUP
BY, UNION, INTERSECT, MINUS,…
Trong bài gi ng này, chúng ta ch quan tâm d n permanent tablespace.
2. B ng d li u
B ng d li u du c d nh danh duy nh t b i tên và bao g m nhi u hàng luu tr d li u, m i hàng
du c g i là 1 tuple hay 1 record. M t b ng d li u có th có nhi u c t. M i c t du c d nh nghia
b i 1 tên và 1 ki u d li u, mô t thu c tính c a 1 b (tuple). M t b ng d li u có th có t i da
254 c t có ki u d li u gi ng nhau ho c khác nhau.
IV. CÁC KI U D
LI U TRONG ORACLE:
Tên ki u
Gi i thích
Bi u di n h ng
number(p,s)
Ki u s th p phân (10-84
10127)
Integer
Ki u s nguyên, t
ng v i Number(38)
Float
Ki u s th c, t
Date
Ngày tháng (1/1/-4712
Char
Ký t có
dài ô nh không c
nh và t i a là
255 ký t (không h tr Unicode)
Nchar
Ký t có
dài ô nh không c
255 ký t (h tr Unicode)
Varchar2
Ký t có
dài ô nh không c
nh và t i a là
2000 ký t (không h tr Unicode)
Nvarchar2
Ký t có
dài ô nh không c
2000 ký t (h tr Unicode)
ng
ng
Giáo trình th c hành H QTCSDL
1894.1204
ng v i Number
31/12/9999)
nh và t i a là
nh và t i a là
1, 20
101.5E5
0.5E-2
'10-FEB-04'
'10/02/04'
(tùy vào
nh d ng
th hi n ngày c a h
th ng)
'50% complete.'
‘Nguy n Van Minh’
‘Luong Tâm’
'50% complete.'
‘Nguy n Van Minh’
‘Luong Tâm’
Trang 8
Khoa CNTT & TT - ÐHCT
V. PRIVILEGES VÀ ROLES
1. Privileges
Quy n ngu i dùng là quy n th c thi m t câu l nh SQL ho c quy n truy c p d n các d i tu ng c a
ngu i dùng khác. Trong Oracle, có hai lo i quy n ngu i dùng: quy n trên h th ng (system
privilege) và quy n trên d i tu ng (object privilege). Có m t s quy n là t h p bao g m nhi u
quy n. M t quy n có th du c gán cho m t ngu i dùng (user) ho c m t nhóm ngu i dùng v i vai
trò gi ng nhau (role). T p h p các quy n trong Oracle là c d nh, ngu i dùng không th d nh
nghia thêm.
a. System privileges
Có 140 quy n h th ng trong phiên b n Oracle 9.0.1, ta có th tham kh o các quy n này qua
câu l nh SQL:
SELECT name FROM system_privilege_map ;
Tuy nhiên, các quy n h th ng quan tr ng nh t là:
Create session: không có quy n này, ngu i dùng s không truy c p du c CSDL và s
nh n du c l i ORA01-045.
Create table
Create view
Create procedure
Sysdba: 5 tác v trong Oracle yêu c u ngu i dùng ph i có quy n này
Kh i d ng CSDL
T t (shutdown) CSDL
Luu d phòng CSDL
Ph c h i CSDL
T o CSDL
Ð tham kh o ngu i dùng có quy n sysdba hay sysoper, th c thi câu l nh:
SELECT * FROM v$pwfile_users
b. Object privileges
Các quy n này du c gán cho ngu i dùng trên các d i tu ng CSDL sau:
Table: select, insert, update, delete, alter, debug, flashback, on commit refresh, query
rewrite, references, all.
View: select, insert, update, delete, under, references, flashback, debug.
Sequence: alter, select.
Package, procedure, function: execute, debug.
Materialized view: delete, flashback, insert, select, update.
Directory: read, write.
Library: execute.
User defined type: execute, debug, under.
Operator: execute.
Indextypes: execute.
2. Roles
Thông thu ng, vi c s d ng role ph c v cho 2 m c dích sau:
Qu n lý quy n c a m t ng d ng CSDL.
Qu n lý quy n c a m t nhóm ngu i dùng có vai trò gi ng nhau d i v i CSDL.
Giáo trình th c hành H QTCSDL
Trang 9
Khoa CNTT & TT - ÐHCT
a. Roles du c d nh nghia tru c (predefined roles)
Các role này du c d nh nghia s n khi m t CSDL du c t o m i, các role co b n bao g m:
Connect du c gán các quy n: create session, alter session, create synonym, create
view, create database link, create table, create cluster và create sequence.
Resource g m các quy n c a connect và các quy n: create table , create cluster,
create sequence, create trigger create procedure, create type, create indextype và
create operator.
Dba du c gán t t c các quy n du c d nh nghia c a Oracle.
Ð tham kh o quy n c a các role, ta dùng l nh:
SELECT * FROM DBA_SYS_PRIVS WHERE grantee='<grantee_name>'
b. Roles do ngu i dùng d nh nghia (user roles)
Ta có th t d nh nghia m t role cho m t nhóm ngu i dùng CSDL v i các yêu c u quy n
chung ph bi n c a nhóm.
VI. NG
I DÙNG
Ngu i dùng co s d li u tuong ng v i m t truy c p (login) du c gán m t s quy n nh t d nh.
Các thông tin v ngu i dùng du c luu trong t di n d li u và ngu i dùng du c c p phát m t
vùng b nh (tuong ng v i m t schema) luu tr các d i tu ng CSDL.
Các bu c t o ngu i dùng trong 1 CSDL Oracle:
T o các tablespace c n thi t dành cho ngu i dùng (n u c n thi t).
T o ngu i dùng.
Gán các quy n cho ngu i dùng.
VII. IMPORT VÀ EXPORT
1. Gi i thi u
Ch c nang export cho phép xu t n i dung lu n lý c a m t CSDL vào m t t p tin nh phân d nh nghia
b i Oracle du c g i là t p tin dump. Ch c nang import s dùng t p tin này d t o l i các d i tu ng
CSDL. T p tin dump m t CSDL có th du c dùng d t o l i d li u trên cùng m t CSDL ho c trên
m t CSDL khác, ngay c khi các CSDL này du c cài d t du i nh ng c u hình ph n c ng và ph n
m m khác nhau. Ví d , t p tin dump c a m t CSDL trên h di u hành Windows có th dùng d t o l i
các d i tu ng CSDL trên h di u hành Linux.
Trong Windows, d th c hi n 2 ch c nang này ta dùng 2 l nh h th ng exp và imp (th c thi trong
windows command console).
2. Các phuong th c c a ch c nang import và export
a. C p d CSDL
Ðây là phuong th c ph c t p nh t. V i ch c nang export, t t c các d i tu ng c a CSDL
du c xu t ra t p tin dump tr các d i tu ng c a m t s ngu i dùng nhu: SYS, ORDSYS,
CTXSYS, MDSYS, và ORDPLUGINS. Ð ng th i, t p tin dump bao g m các thông tin liên
quan d n c u trúc c a CSDL nhu d nh nghia các tablespace và các segments rollback… V i
ch c nang import, t t c các d i tu ng s du c t o l i trong CSDL dích. Tham s FULL cho
phép xác d nh phuong th c này trong các ch c nang import và export.
Chú ý : trong tru ng h p import c CSDL, c n ph i t o l i t t c ngu i dùng và các quy n
tuong ng trong CSDL ngu n.
Giáo trình th c hành H QTCSDL
Trang 10
Khoa CNTT & TT - ÐHCT
b. C p d ngu i dùng
T t c các d i tu ng c a ngu i dùng bao g m các b ng d li u, th t c, trigger… d u du c
xu t ra t p tin dump. Trong ch c nang export, tham s OWNER cho phép ch d nh các d i
tu ng c a ngu i dùng c n xu t. V i ch c nang import, tham s FROMUSER ch d nh t o l i
các d i tu ng c a ngu i dùng nào trong t p tin dump và tham s TOUSER ch d nh ngu i
dùng du c dích.
c. C p d b ng d li u
T t c các d i tu ng liên quan d n b ng d li u (index, ràng bu c, các quy n…) s du c xu t
ra t p tin dump.
d. C p d không gian d li u
Các metadata c a tablespace và các d i tu ng CSDL du c xu t ra t p tin dump.
e. Yêu c u v quy n
Hành d ng
Quy n ho c vai trò c n thi t
Export schema
CREATE SESSION
Export schema c a ngu i dùng khác
SYSDBA, EXP_FULL_DATABASE và DBA
Export toàn b CSDL ho c tablespace
EXP_FULL_DATABASE
Import các d i tu ng
IMP_FULL_DATABASE
VIII. K T N I V I ORACLE NET
1. T ng quan
Oracle Net là m t middleware du c cài d t trên Oracle Client và Oracle Database Server. Oracle Net
cung c p các gi i pháp k t n i trong môi tru ng tin h c không d ng nh t và phân tán, giúp cho vi c
c u hình và qu n lý m ng d dàng hon. Oracle Net cho phép thi t l p m t phiên k t n i m ng
(network session) t m t ng d ng trình khách (Client Application) d n máy ch CSDL (Database
Server). M t khi phiên k t n i m ng du c thi t l p, Oracle Net dóng vai trò nhu m t kênh trao d i d
li u gi a ng d ng khách và máy ch . Nó có nhi m v thi t l p, qu n lý k t n i m ng và trao d i các
thông di p (messages) gi a trình khách và máy ch .
Phiên k t n i m ng du c thi t l p thông qua listener module, m t ti n trình d c l p c a máy ch
CSDL. Listener nh n các yêu c u k t n i c a trình khách và qu n lý vi c d n du ng d n máy ch . M i
khi trình khách yêu c u k t n i, listener nh n yêu c u này. N u thông tin cung c p b i trình khách
tuong ng v i các thông tin c a listener, trình khách du c phép truy c p d n máy ch .
2. Mô hình Client-Server
i v i client, database là m t d ch v (service) th c thi công vi c thay cho client.
ây d ch v mà
database cung c p cho client chính là l u tr d li u và g i l i d li u khi c n. Khi k t n i, client nh n
bi t database qua tên d ch v (service name) m c nh trùng v i global database name (k t h p c a tên
CSDL và tên mi n).
Ð yêu c u thi t l p k t n i, ngu i dùng ph i g i di tên tài kho n và m t kh u cùng v i m t d nh danh
(identifier) c a d ch v c n k t n i. Ð nh danh này du c g i là d nh danh k t n i cho phép xác d nh:
D ch v c n k t n i.
Ðu ng d n m ng d n d ch v này.
Ð nh danh k t n i có th du c bi u th b ng nhi u cách. Cách th c du c áp d ng r ng rãi nh t là tên
d ch v m ng (net service name) tuong ng v i m t mô t k t n i (connect descriptor). Mô t này
Giáo trình th c hành H QTCSDL
Trang 11
Khoa CNTT & TT - ÐHCT
ch a d ng các thông tin v d ch v c n k t n i và du ng d n m ng. D ch v du c xác d nh b i tên c a
d ch v (tên c a CSDL). Ðu ng d n m ng cung c p các thông tin v d a ch m ng, c ng ho t d ng và
giao th c m ng s d ng c a Listener.
Khi yêu c u k t n i, client g i phuong th c Service Naming d thi t l p liên l c v i Listener du c ch
d nh trong mô t k t n i. Listener ch p nh n k t n i v i client thông qua m t giao th c m ng. Nó so
sánh các thông tin do client cung c p v i các thông tin tuong ng du c cung c p b i d ch v CSDL,
n u các thông tin này kh p nhau, k t n i s du c phép thi t l p gi a client và database server.
Hình 6 Ki n trúc Client-Server trong m ng Oracle
Phuong th c giao ti p m ng (netword protocol) thu ng du c s d ng trong m ng Oracle là TCP/IP,
có c ng m c d nh 1521. Ngoài ra, d i v i l p trình viên và qu n tr viên, ng d ng phía trình khách
(application client) là ng d ng c a nhà phát tri n th ba (third party), cung c p m t giao di n tuong
tác thân thi n v i h qu n tr Oracle. Hi n nay, các ng d ng này du c phát tri n r t nhi u trên th
gi i nhu Maestro, SQL Navigator, Oracle SQL developer…
Giáo trình th c hành H QTCSDL
Trang 12
Khoa CNTT & TT - ÐHCT
PH N 3. BÀI T P TH C HÀNH
BÀI 1
I.
M C ÍCH
Làm quen v i Oracle (k t n i v i server, t o/xóa/thay d i/khôi ph c database, t o/xóa/thay d i table,
t o ch m c, thêm/xóa/thay d i d li u trong m t table... )
II. LÝ THUY T
Các câu l nh SQL s d ng trong bài này
1. Cú pháp câu l nh t o b ng d li u
CREATE [GLOBAL TEMPORARY] TABLE [<tên schema>.]<tên table>
( <tên c t> <ki u c t> [DEFAULT <bi u th c m c d nh>] [Các ràng bu c trên c t]
[,<tên c t> <ki u c t> [,...]]
[, Các ràng bu c trên b ng] ) ;
Các ràng bu c (RB) trên c t có th bao g m m t ho c nhi u lo i sau:
[CONSTRAINT <tên RB>] {UNIQUE|PRIMARY KEY}
[CONSTRAINT <tên RB>] CHECK(<di u ki n ki m tra>)
[CONSTRAINT <tên RB>] [NOT] NULL
[CONSTRAINT <tên RB>] REFERENCES <tên b ng> [(<DS tên c t khóa chính>)]
[ON DELETE {CASCADE|SET NULL}]
Các ràng bu c trên b ng có th bao g m m t ho c nhi u lo i sau:
CONSTRAINT <tên RB> {UNIQUE|PRIMARY KEY}(<tên c t> [,<tên c t>...])
CONSTRAINT <tên RB> CHECK(<di u ki n ki m tra>)
CONSTRAINT <tên RB> FOREIGN KEY (<DS c t>)
REFERENCES <tên table> [(<DS c t khóa chính>)]
[ON DELETE {CASCADE|SET NULL}]
Ví d : T o 2 b ng d li u sau:
CUAHANG(MACH,TENCH,DCHI,DTHOAI)
NHANVIEN(MANV,TENNV,NGAYSINH,MACH)
CREATE TABLE CUAHANG (
MACH INTEGER PRIMARY KEY,
TENCH NVARCHAR2(20),
DCHI NVARCHAR2(30),
DTHOAI VARCHAR(10) ) ;
Giáo trình th c hành H QTCSDL
Trang 13
Khoa CNTT & TT - ÐHCT
CREATE TABLE NHANVIEN(
MANV VARCHAR(10) PRIMARY KEY,
TENNV NVARCHAR2(30),
NGAYSINH DATE,
DCHI NVARCHAR2(30),
MACH INTEGER CONSTRAINT NV_FK REFERENCES CUAHANG(MACH) ) ;
2. Cú pháp câu l nh s a
i b ng d li u
ALTER TABLE <tên b ng>
< nh ngh a thay i> [,< nh ngh a thay
i>] ... ;
nh ngh a thay i:
ADD [COLUMN] (<tên c t> <ki u c t>[,...])
| ADD [CONSTRAINT [<tên RB>]]
PRIMARY KEY (<tên c t>[,...])
| ADD [CONSTRAINT [<tên RB>]]
FOREIGN KEY (<tên c t>,...) REFERENCES <tên table> [(<DS c t khóa chính>)]
| ALTER [COLUMN] <tên c t> {SET DEFAULT <bi u th c> | DROP DEFAULT}
| DROP [COLUMN] <tên c t>
| DROP PRIMARY KEY
| DROP FOREIGN KEY <tên RB>
| RENAME TO <tên b ng>
Ví d : Xóa ràng bu c khóa ngo i c a b ng NHANVIEN
ALTER TABLE NHANVIEN
DROP CONSTRAINT NV_FK ;
T o l i ràng bu c khóa ngo i c a b ng NHANVIEN
ALTER TABLE NHANVIEN
ADD CONSTRAINT NV_FK FOREIGN KEY (MACH)
REFERENCES CUAHANG(MACH) ;
3. Cú pháp xóa b ng d li u
DROP TABLE
tbl_name [, tbl_name] ... [CASCADE CONSTRAINTS]
CASCADE CONSTRAINTS: xóa các ràng bu c toàn v n liên quan n các khóa chính trong
b ng. N u b qua t khóa này và trong b ng có t n t i các ràng bu c toàn v n liên quan n
các b ng khác, Oracle báo l i và không th c thi câu l nh này.
Ví d :
DROP TABLE NHANVIEN CASCADE CONSTRAINTS ;
4. Cú pháp l nh chèn record vào b ng
INSERT INTO <table> [(<column i, . . . , column j>)]
VALUES (<value i, . . . , value j>) ;
Giáo trình th c hành H QTCSDL
Trang 14
Khoa CNTT & TT - ÐHCT
Ví d :
INSERT INTO CUAHANG
VALUES ( 1, 'CUA HANG 1', '123 LY TU TRONG', '071088822') ;
5. Cú pháp l nh c p nh t record trong b ng
UPDATE <table> SET
<column i> = <expression i>, . . . , <column j> = <expression j>
[WHERE <condition>];
Ví d :
UPDATE CUAHANG
SET TENCH='CUA HANG CUA TOI'
WHERE MACH=1;
6. Cú pháp l nh xóa record trong b ng
DELETE FROM <table> [WHERE <condition>];
Ví d :
DELETE FROM PROJECT WHERE PEND < sysdate;
7. Các l nh imp/exp
Tham s
Ý nghia
Giá tr m c
d nh
imp
exp
X
X
Userid
Chu i k t n i co s d li u
Contraints
Imp/Exp các ràng bu c
File
Tên t p tin DUMP
Log
Tên t p tin nh t ký
Full
Imp/Exp toàn b CSDL
N
Rows
Exp d li u ra file dump
Y
Grants
Imp/Exp h i các quy n
Y
X
X
Indexes
Imp/Exp các ch m c
Y
X
X
Owner
Tên ngu i dùng c n Imp/Exp
Query
Ð nh nghia di u ki n l c các d li u
c n Export
Tables
Các b ng c n Imp/Exp
Fromuser
Tên ngu i dùng du c Export
Touser
Tên ngu i dùng dích
X
Tablespace
Imp/Exp các d i tu ng du c luu tr
trong tablespace
X
Y
expdat.dmp
X
X
X
X
X
X
X
X
userid
X
X
X
X
X
X
Chú ý: userid=username/password@net_service_name.
Giáo trình th c hành H QTCSDL
Trang 15
Khoa CNTT & TT - ÐHCT
Ví d : dùng username u1010666 v i password p1010666, net service name ServerTHOracle.
Export toàn b CSDL (full=y) không có d li u(rows=n).
C:\> exp userid=u1010666/p1010666@ServerTHOracle file=c:\backup\export_full.dump
log=c:\control\export_full.log full=y rows=n
Export toàn b schema c a ngu i dùng SCOTT.
C:\> exp userid= u1010666/p1010666@ServerTHOracle file=c:\backup\export_full.dump
log=c:\control\export_full.log owner=scott
Export b ng ACCOUNT trong schema SCOTT.
C:\> exp userid= u1010666/p1010666@ServerTHOracle file=c:\backup\export_full.dump
log=c:\control\export_full.log tables=scott.account
Import t t c schema.
C:\> imp userid= u1010666/p1010666@ServerTHOracle file=c:\backup\export_full.dump
log=c:\control\export_full.log
Import các d i tu ng c a SCOTT vào schema TEST.
C:\> imp userid= u1010666/p1010666@ServerTHOracle =c:\backup\export_full.dump
log=c:\control\export_full.log fromuser=scott touser=test
Import b ng ACCOUNT c a SCOTT vào schema TEST.
C:\> imp userid= u1010666/p1010666@ServerTHOracle file=c:\backup\export_full.dump
log=c:\control\export_full.log fromuser=scott touser=test tables=scott.account
III. BÀI T P CÓ H
NG D N
Yêu c u: thi t l p k t n i CSDL qua Oracle Net Manager và Oracle SQL Developer 1.5.
Oracle Net Manager v i m t giao di n thân thi n ngu i dùng là m t công c du c thi t k cho vi c
c u hình và qu n lý môi tru ng m ng c a Oracle d dàng hon.
Thi t l p net service name
M chuong trình Oracle Net Manager (Start Programs Oracle Configuration and Migration
Tools Net Manager)
Vào m c Local
Service naming
Hình 7 Oracle Net Manager
Ch n m c Service Naming, kích chu t vào d u
các thông s th c hi n k t n i v i server CSDL.
Giáo trình th c hành H QTCSDL
pane bên trái d t o m t net service name v i
Trang 16
Khoa CNTT & TT - ÐHCT
Hình 8 Ð t Net Service Name
Ð t Net Service Name là ServerTHOracle (sinh viên có th d t tên tùy ý). Ch n Next.
Hình 9 Ch n giao th c m ng du c s d ng
Ch n Protocol TCP/IP. Ch n Next.
172.16.1.66
Hình 10 Các thi t l p c a giao th c
Trong bu c này, thi t l p các thông s nhu sau.
Host Name: tên server ho c d a ch IP trong m ng, thi t l p 172.16.1.66
Port Number: c ng 1521 m c d nh.
Ch n Next.
Hình 11 Thi t l p tên service
Service Name: chính là tên CSDL c n truy c p d n (Global Database Name).
Giáo trình th c hành H QTCSDL
Trang 17
Khoa CNTT & TT - ÐHCT
Ð t Service Name là HQTCSDL.
T i bu c cu i cùng, th c hi n ki m tra k t n i v i CSDL.
Hình 12 Ki m tra k t n i
Ch n Test, n u k t n i thành công thì xu t hi n b ng thông báo nhu sau.
Hình 13 Thông báo k t n i thành công
Ch n Finish trong hình 34 d k t thúc.
Dùng Oracle SQL Developer 1.5 k t n i v i CSDL
Kh i d ng chuong trình Oracle SQL Developer, dây là m t chuong trình du c phát tri n trên n n
Java. l n ch y d u tiên, chuong trình yêu c u xác l p du ng d n d n t p tin java.exe (yêu c u JDK
phiên b n 1.5 tr lên) nhu hình du i dây.
Hình 14 Xác l p du ng d n d n t p tin java.exe
Click vào OK, giao di n SQL Developer hi n ra nhu sau:
Hình 15 Giao di n SQL Developer
Giáo trình th c hành H QTCSDL
Trang 18
Khoa CNTT & TT - ÐHCT
Ð t o k t n i d n CSDL, click vào icon
bên tab Connections. Có 2 cách t o k t n i:
Cách 1: k t n i tr c ti p.
Hình 16 K t n i tr c ti p
Trong cách k t n i này, các tham s du c thi t l p nhu sau:
Connection name: tên c a k t n i (d t tùy ý).
Username, password: c a ngu i dùng dang nh p.
Connection type: basic.
Hostname: d a ch IP c a database server.
Port m c d nh 1521
SID: tên CSDL c n dang nh p.
Các tham s c a k t n i này có th du c luu l i d dùng sau này b ng cách click vào nút Save. Ð
dang nh p, click vào nút Connect.
Chú ý: username và password c a sinh viên du c d nh s n nhu sau
Username = u + MSSV.
Password = p + MSSV.
Ví d : sinh viên có mã s 1010666 có username u1010666 và password là p1010666.
Cách 2: k t n i thông qua Oracle Net.
Hình 17 K t n i thông qua Oracle Net
Trong cách k t n i này, các tham s du c thi t l p tuong t cách 1, ch khác
Giáo trình th c hành H QTCSDL
2 tham s :
Trang 19
Khoa CNTT & TT - ÐHCT
Connection type: TNS.
Network Alias: ch n net service name dã t o
bu c d u tiên.
Khi dang nh p thành công, h p tho i m i xu t hi n d thay d i password.
Hình 18 Xác l p l i password
Xác l p l i password. Ch n OK, dang nh p thành công, c a s chính c a SQL Navigator xu t hi n.
Hình 19 C a s chính c a SQL Developer
Giao di n du c chia thành 2 ph n:
Ph n bên trái: hi n th các schema objects c a ngu i dùng dang k t n i.
Ph n bên ph i: c a s so n th o, th c thi và hi n th k t qu c a các câu l nh SQL, PL/SQL.
Ngoài ra, Oracle SQL Developer còn h tr m t s ch c nang khác nhu: giao di n d h a thao tác trên
các schema objects, tr giúp v ngôn ng SQL và PL/SQL trong module Snippets, qu n lý các l nh
SQL dã th c thi v i module SQL History, biên d ch và g r i PL/SQL… Và còn nhi u tính nang khác,
sinh viên t tìm hi u trong quá trình th c hành.
Giáo trình th c hành H QTCSDL
Trang 20
Khoa CNTT & TT - ÐHCT
IV. BÀI T P T
LÀM
1. Yêu c u 1:
Tham kh o l nh CREATE TABLE t o các b ng theo mô hình MLD sau:
PHONG(MA_PHONG, TEN_PHONG, TRUONG_PHONG )
M i phòng có m t mã duy nh t, m t tên phòng, tru ng phòng là mã nhân viên c a tru ng
phòng.
NHANVIEN(MA_NV, HTEN_NV, PHAI, CVIEC, LUONG, PHU_CAP, MA_PHONG)
Nhân viên có m t mã duy nh t, m t h tên, phái, công vi c, luong, ph c p và thu c m t
phòng nào dó.
TÐO_NN(MA_NV, NGOAINGU, BANG_CAP)
M t nhân viên có th bi t nhi u ngo i ng , m i ngo i ng có th có các b ng c p khác nhau.
Th c hi n Insert, Update, Delete m t vài tr
ng d li u vào các b ng v a t o.
2. Yêu c u 2:
Th nghi m import và export.
Bu c 1: M command console (Start Run, gõ vào cmd). Tham kh o các tham s c a l nh
imp và exp, th c hi n ch c nang import các schema csdl1, csdl2, csdl3, csdl4, csdl5, csdl6, hr
và scott d ph c v cho các bài ti p theo (các t p tin dump do giáo viên cung c p).
Bu c 2: Th c hi n ch c nang export schema, b ng d li u…
Bu c 3:
ng v i m i phuong th c export
Giáo trình th c hành H QTCSDL
Bu c 2, th c hi n ch c nang import.
Trang 21
Khoa CNTT & TT - ÐHCT
BÀI 2
I.
M C ÐÍCH
Luy n t p kh nang nh n bi t s thông thuong trong m t co s d li u, t dó k t n i d li u d truy
xu t thông tin c n thi t.
II. LÝ THUY T
Câu l nh SQL s d ng trong bài này:
SELECT <DS tên c t>
FROM <Tên b ng> [<bí danh>] [, <Tên b ng> [<bí danh>] [,...] ]
[ WHERE <DS các ÐK AND ho c OR v i nhau> ];
T o m t d nh danh (tên g i t t) tham chi u d n m t d i tu ng c a m t schema:
CREATE SYNONYM <tên d nh danh> FOR <tên schema>.<tên object>
III. CÁC L I THU NG G P TRONG SQL:
1. Tên c t không tìm th y trong b ng
Thông báo l i: ORA-00904: <tên d nh danh>: invalid identifier
Hu ng gi i quy t: xem l i tên c t (tên thu c tính/tên tru ng) trong câu l nh dã dúng chua.
2. Tên b ng không tìm th y
Thông báo l i: ORA-00942: table or view d not exist
Hu ng gi i quy t: xem l i tên b ng d li u trong câu l nh dã dúng chua.
3. L i cú pháp
Thông báo l i: ORA-00900: invalid SQL statement
Hu ng gi i quy t: xem l i cú pháp trong câu l nh dã dúng chua, có th sai t khóa (gõ sai các t
SELECT, FROM, WHERE,...) ho c thi u d u ngo c c a hàm hay câu select con.
4. Tên c t có m t
nhi u b ng
Thông báo l i: ORA-00918: column ambiguously defined
Hu ng gi i quy t: xét xem các c t trong m nh d SELECT có t n t i trong nhi u b ng hay không.
N u có, tên b ng ho c bí danh c a b ng c n du c tham chi u ph i d t tru c tên c t dó theo cú pháp
<tên b ng ho c bí danh>.<tên c t>
5. Phép so sánh không tuong thích ki u
Thông báo l i: ORA-01722: invalid number
Hu ng gi i quy t: ki m tra l i các phép so sánh trong m nh d WHERE, xem xét các d li u tham gia
vào các phép so sánh này có cùng ki u hay chua.
Chú ý: trong Oracle, m i l i thông báo t h th ng d u tuong ng v i m t mã (ora code) có d ng
-<s th p phân>, có th mang các giá tr ORA, PLS, PROC… Ý nghia và cách gi i
quy t các l i này du c mô t chi ti t trên website
Giáo trình th c hành H QTCSDL
Trang 22
Khoa CNTT & TT - ÐHCT
IV. BÀI T P CÓ HU NG D N:
1. CSDL: Qu n lý công trình (CSDL1)
B ng 1. KTRUCSU(HOTEN_KTS, NAMS_KTS, PHAI, NOI_TN, DCHI_LL_KTS)
M i ki n trúc su có m t h tên, m t nam sinh, phai, noi t t nghi p, d a ch liên l c. Gi s không có
hai ki n trúc su trùng tên.
B ng 2. CHUTHAU(TEN_THAU, TEL, DCHI_THAU)
M i ch th u xây d ng công trình d u có m t tên th u, m t s di n tho i và m t d a ch . Gi s không
có hai ch th u trùng tên.
B ng 3. CHUNHAN(TEN_CHU, DCHI_CHU)
M i ch nhân c a m t công trình d u có m t tên ch nhân và m t d a ch . Gi s không có hai ch
nhân trùng tên.
B ng 4. CONGNHAN(HOTEN_CN, NAMS_CN, NAM_VAO_N, CH_MON)
M i công nhân tham gia xây d ng các công trình d u có m t h tên, m t nam sinh, m t nam vào
ngh , và m t chuyên môn nào dó. Gi s không có hai công nhân trùng h tên.
B ng 5. CGTRINH(STT_CTR, TEN_CTR, DIACHI_CTR, TINH_THANH, KINH_PHI,
TEN_CHU, TEN_THAU, NGAY_BD)
M i công trình có m t s th t , m t tên công trình, m t d a ch , thu c v m t t nh thành nào dó, du c
xây d ng v i m t kinh phí (don v tính là tri u d ng), thu c v s h u c a m t ch nhân, do m t ch
th u xây d ng, và du c kh i công xây t m t ngày nào dó.
B ng 6. THAMGIA(HOTEN_CN, STT_CTR, NGAY_TGIA, SO_NGAY)
M t công nhân có th tham gia xây d ng nhi u công trình, và m t công trình cung có nhi u công nhân
tham gia. Khi m t công nhân tham gia vào m t công trình nào dó s du c ghi nh n l i ngày b t d u
tham gia và s ngày tham gia.
B ng 7. THIETKE(HOTEN_KTS, STT_CTR, THU_LAO)
M t ki n trúc su có th thi t k nhi u công trình, m i công trình cung có th do nhi u ki n trúc su
cùng thi t k . Khi m t ki n trúc su thi t k m t công trình s có m t thù lao tuong ng.
2. Yêu c u 1: Tìm s thông thuong gi a các b ng trong CSDL:
CONGNHAN(HOTEN_CN, NAMS_CN, NAM_VAO_N, CH_MON)
THAMGIA(HOTEN_CN, STT_CTR, NGAY_TGIA, SO_NGAY)
KTRUCSU(HOTEN_KTS, NAMS_KTS, PHAI, NOI_TN, DCHI_LL_KTS)
THIETKE(HOTEN_KTS, STT_CTR, THU_LAO)
CGTRINH(STT_CTR, TEN_CTR, DIACHI_CTR, TINH_THANH, KINH_PHI, TEN_CHU,
TEN_THAU, NGAY_BD)
CHUTHAU(TEN_THAU, TEL, DCHI_THAU)
CHUNHAN(TEN_CHU, DCHI_CHU)
Giáo trình th c hành H QTCSDL
Trang 23
Khoa CNTT & TT - ÐHCT
3. Yêu c u 2: Ð t synonym cho các b ng này t schema CSDL1. Sau dó m các b ng d
li u d xem ki u d li u c a t ng tru ng và quan sát d li u c a t ng b ng.
4. Yêu c u 3: Hãy vi t câu l nh SQL d tr l i các câu h i sau:
a. Hãy cho bi t tên và d a ch các công trình do ch th u Công ty xây d ng s 6 thi
công.
Phân tích câu h i:
Yêu c u cho bi t: TEN_CTR, DCHI_CTR
l y t b ng: CGTRINH
Ði u ki n: TEN_THAU = 'Cty xd so 6'
Trong CSDL, tên th u có m t c hai b ng
CGTRINH và CHUTHAU, nên ta ch c n d t ÐK trên b ng CGTRINH dã ch n bu c trên.
Luu ý: Sinh viên c n ph i m b ng CGTRINH d xem d li u th c t c a b ng; nhu trong tru ng
h p này tên th u Công Ty xây d ng s 6 du c luu tr thành chu i 'cty xd so 6'.
Câu truy v n:
Select TEN_CTR, DiaCHI_CTR
From
CGTRINH
Where TEN_THAU = 'cty xd so 6';
b. Tìm tên và d a ch liên l c c a các ch th u thi công công trình
trúc su Lê Kim Dung thi t k .
C n Tho do ki n
Phân tích câu h i:
Yêu c u cho bi t: TEN_THAU, DCHI_THAU
L y t b ng: CHUTHAU
Ði u ki n: TINH_THANH = 'Can tho'
Ð t ÐK trên b ng: CGTRINH
Và HOTEN_KTS = 'Le Kim Dung'
Trong CSDL, h tên KTS có m t c hai b ng
KTRUCSU vàTHIETKE, nhung ta ph i ch n b ng THIETKE, vì b ng này m i cho bi t KTS nào
thi t k công trình nào, vì v y ta d t ÐK trên b ng: THIETKE
Nhu v y, ta s truy xu t 3 b ng: CHUTHAU, CGTRINH, THIETKE. Ta th y các b ng này d u
liên thông v i nhau, nghia là chúng có c t chung, có th n i k t t nhiên du c.
Luu ý: Khi câu truy v n truy xu t thông tin t nhi u b ng thì nh ph i:
- Mô t d y d các di u ki n k t n i các b ng.
- Các c t chung ph i d t tên b ng (ho c bí danh n u b ng dã có bí danh) phía tru c tên c t, phân
cách b ng d u ch m. - Khi d t bí danh cho b ng không có t khóa AS
Câu truy v n:
Select distinct a.TEN_THAU, DCHI_THAU
From CHUTHAU a, CGTRINH b, THIETKE c
Where a.TEN_THAU = b.TEN_THAU
And b.STT_CTR = c.STT_CTR
And TINH_THANH = 'can tho'
And HOTEN_KTS = 'le kim dung';
c. Hãy cho bi t noi t t nghi p c a các ki n trúc su dã thi t k công trình Khách S n
Qu c T C n Tho.
Phân tích câu h i:
Yêu c u cho bi t: NOI_TN
L y t b ng: KTRUCSU
Ði u ki n: TEN_CTR = 'KS Quoc Te'
Ð t ÐK trên b ng: CGTRINH
Giáo trình th c hành H QTCSDL
Trang 24
Khoa CNTT & TT - ÐHCT
Và TINH_THANH ='Can Tho'
Nhu v y, ta s truy xu t 2 b ng: KTRUCSU và CGTRINH. Tuy nhiên, ta th y hai b ng này không
liên thông nhau hay không có c t chung, không th n i k t t nhiên du c. Hay nói cách khác, hai
b ng này không cho bi t KTS nào dã thi t k công trình Khách s n qu c t . V y, ta ph i thêm vào
b ng THIETKE trong truy v n.
Câu truy v n:
Select
NOI_TN
From KTRUCSU a, CGTRINH b, THIETKE c
Where a.HOTEN_KTS = c.HOTEN_KTS
And b.STT_CTR = c.STT_CTR
And TEN_CTR = 'khach san quoc te'
And TINH_THANH ='can tho';
d. Cho bi t h tên, nam sinh, nam vào ngh c a các công nhân có chuyên môn hàn
ho c di n dã tham gia các công trình mà ch th u Lê Van Son dã trúng th u.
Phân tích câu h i:
Yêu c u cho bi t: HOTEN_CN, NAMS_CN, NAM_VAO_N
Ði u ki n: CH_MON = 'Han'
L y t b ng: CONGNHAN
Ð t ÐK trên b ng: CONGNHAN
Ho c CH_MON = 'Dien'
Và TEN_THAU = 'Le Van Son'
Ð t ÐK trên b ng: CGTRINH
Nhu v y, ta s truy xu t 2 b ng: CONGNHAN và CGTRINH. Tuong t nhu câu c, hai b ng này
không cho bi t công nhân nào dã tham gia công trình nào. V y, ta ph i thêm vào b ng THAMGIA
trong truy v n.
Luu ý: Trong danh sách các di u ki n v a có AND v a có OR, ta ph i dùng d u ngo c d ch rõ
th t ki m tra di u ki n.
Câu truy v n:
Select HOTEN_CN, NAMS_CN, NAM_VAO_N
From
CONGNHAN a, CGTRINH b, THAMGIA c
Where a.HOTEN_CN = c.HOTEN_CN
And b.STT_CTR = c.STT_CTR
And ( CH_MON = 'Han'
or CH_MON = 'Dien'
And TEN_THAU = 'Le Van Son';
)
e. Nh ng công nhân nào dã b t d u tham gia công trình Khách s n Qu c T
C n
Tho trong giai do n t ngày 15/12/94 d n ngày 31/12/94, s ngày tuong ng là bao
nhiêu.
Phân tích câu h i:
Yêu c u cho bi t: HOTEN_CN, NGAY_TGIA, SO_NGAY
Ta l y t b ng: THAMGIA
(Ta không c n l y t b ng CONGNHAN vì không c n các thông tin khác c a công nhân)
Ði u ki n: NGAY_TGIA thu c '12/15/94' -> '12/31/94'
TEN_CTR = 'KS Quoc Te'
Ð t ÐK trên THAMGIA
Ð t ÐK trên b ng: CGTRINH
Và TINH_THANH ='Can Tho'
Nhu v y, ta s truy xu t 2 b ng: THAMGIA và CGTRINH.
Giáo trình th c hành H QTCSDL
Trang 25