Tải bản đầy đủ (.pdf) (99 trang)

Giáo trình Hệ quản trị Cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.89 MB, 99 trang )

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


×