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

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

99 516 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 99
Dung lượng 2,89 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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, re

Trang 1

KHOA CÔNG NGH THÔNG TIN & TRUY N THÔNG

Trang 2

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

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)

Trang 3

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

Trang 4

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ó

Trang 5

Ð 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

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 c g i là tablespace dùng d luu tr d li u

Trang 6

Ð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

Trang 8

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:

number(p,s) Ki u s th p phân (10-84 10127) 1894.1204

Integer Ki u s nguyên, t ng ng v i Number(38) 1, 20

Float Ki u s th c, t ng ng v i Number 101.5E5 0.5E-2

Date Ngày tháng (1/1/-4712 31/12/9999) '10-FEB-04' '10/02/04'

Trang 9

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

Trang 10

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

Trang 11

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

Hành d ng Quy n ho c vai trò c n thi t

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

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

Ð 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

Trang 12

Khoa CNTT & TT - ÐHCT

ch a d ng các thông tin v d ch v c n k tn 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…

Trang 13

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}]

DCHI NVARCHAR2(30), DTHOAI VARCHAR(10) ) ;

Trang 14

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 ncá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>) ;

Trang 15

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>];

File Tên t p tin DUMP expdat.dmp X X

Fromuser Tên ngu i dùng du c Export X

Tablespace Imp/Exp các d i tu ng du c luu tr

Chú ý: userid=username/password@net_service_name

Trang 16

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 pane bên trái d t o m t net service name v i các thông s th c hi n k t n i v i server CSDL

Trang 17

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

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)

172.16.1.66

Trang 18

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

Trang 19

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 2 tham s :

Trang 20

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

Trang 21

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 nhimp 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 Bu c 2, th c hi n ch c nang import

Trang 22

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

<prefix>-<s th p phân>, <prefix> 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 http://www.ora-code.com

Trang 23

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)

Trang 24

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 C n Tho do ki n trúc su Lê Kim Dung thi t k

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

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

Trang 25

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'

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 L y t b ng: CONGNHAN

Ði u ki n: CH_MON = 'Han' Ð 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' )

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' Ð t ÐK trên THAMGIA

TEN_CTR = 'KS Quoc Te' Ð 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

Trang 26

Select HOTEN_CN, NGAY_TGIA, SO_NGAY

From CGTRINH b, THAMGIA c

Where b.STT_CTR = c.STT_CTR

And NGAY_TGIA between '15-Dec-1994' And '31-Dec-1994'

f Cho bi t tên và d a ch c a công trình mà công nhân Nguy n Hông Vân dang tham gia vào ngày 18/12/94

Phân tích câu h i:

Yêu c u cho bi t: TEN_CTR, DCHI_CTR Ta l y t b ng: CGTRINH

Ði u ki n: Ðang tham gia vào ngày 18/12/94 có nghia là: ngày 18/12/94 ph i n m trong kho ng t ngày b t d u và ngày k t thúc tham gia (ngày k t thúc t c là ngày b t d u tham gia + s ngày tham gia)

NGAY_TGIA <= '12/18/94' NGAY_TGIA + SO_NGAY >= '12/18/94' Ð t ÐK trên THAMGIA HOTEN_CN = 'Nguyen Hong Van'

Câu truy v n:

Select TEN_CTR, DIACHI_CTR

From CGTRINH b, THAMGIA c

Where b.STT_CTR = c.STT_CTR

And NGAY_TGIA <= '18-Dec-1994'

And NGAY_TGIA + SO_NGAY >= '18-Dec-1994'

And HOTEN_CN = 'nguyen hong van';

g Cho bi t h tên và nam sinh c a các ki n trúc su dã t t nghi p thành ph H Chí Minh và dã thi t k ít nh t m t công trình có kinh phí d u tu trên 400 tri u

d ng

Phân tích câu h i:

Yêu c u cho bi t: HOTEN_KTS, NAMS_KTS L y t b ng: KTRUCSU

Ði u ki n: NOI_TN = 'TP HCM' Ð t ÐK trên b ng: KTRUCSU

Và KINH_PHI > 400 Ð t ÐK trên b ng: CGTRINH Nhu v y, ta s truy xu t 2 b ng: KTRUCSU và CGTRINH Tuong t câu c, vì hai b ng này không liên thông nhau nên ta ph i thêm vào b ng THIETKE trong truy v n

Luu ý:

- Vì don v tính c a kinh phí trong CSDL là tri u d ng nên 400 tri u s là 400

- T 'ít nh t m t' trong câu truy v n có th b qua vì n u m t KTS không có công trình nào tho

di u ki n thì khi d t ÐK ch n và k t n i, KTS dó s t d ng b lo i b Quy lu t này áp d ng dúng cho m i câu truy v n

Câu truy v n:

Select a.HOTEN_KTS, NAMS_KTS

From KTRUCSU a, CGTRINH b, THIETKE c

Trang 27

B ng 1 BAIBAO(STT_BAI, TUA, MA_THLOAI)

M i bài báo du c dánh m t s th t phân bi t, có m t t a bài và cho bi t nó thu c th lo i nào

B ng 2 BAOTCHI(MA_BAO_TC, TEN, DCHI_TS, TEL, DINH_KY)

M i t báo ho c t p chí có m t mã riêng bi t, có m t tên, m t d a ch toà so n, m t s di n tho i,

và du c xu t b n theo m t d nh k nào dó

B ng 3 THELOAI(MA, DGIAI)

M i th lo i bài báo có m t mã th lo i và m t di n gi i

B ng 4 DANGBAI(STT_BAI, MA_BAO_TC, SO_BAO_TC, TRANG)

M i bài báo khi du c dang trong m t báo ho c t p chí nào dó, thì du c ghi nh n là dã dang trong

s báo ho c s t p chí nào và dang t i trang s m y

B ng 5 PHATHANH(MA_BAO_TC, SO_BAO_TC, NGAY)

M i s báo ho c s t p chí khi du c phát hành s du c ghi nh n ngày phát hành

B ng 6 VIETBAI(STT_BAI, BUT_HIEU)

M i bài báo du c vi t b i m t tác gi mà ta ghi nh n b ng bút hi u

2 Yêu c u 1: Tìm s thông thuong gi a các b ng trong CSDL2

3 Yêu c u 2: Ð t synonym cho các b ng này t schema CSDL2 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 Tìm tên các báo / t p chí có dang bài c a tác gi Tô Phan Cho bi t dang trên s nào? Ðu c phát hàng vào nh ng ngày nào?

b N i dung c a t p chí Ki n th c ngày nay s 156 g m nh ng bài t a gì? Ðang t trang nào?

c Cho bi t t a và th lo i t t c các bài báo do tác gi Nguy n Tr ng Vinh sáng tác và dã du c dang trên các báo / t p chí xu t b n hàng tu n Cho bi t d ng th i tên và s c a t báo / t p chí tuong ng m i bài du c dang

d Cho bi t các s báo / t p chí và các ngày phát hành tuong ng trong nam 1994 c a t báo Lao

d ng

e T Tu i tr ch nh t s 23 có nh ng bài bút ký nào? (Cho bi t t a c a chúng)

f Cho bi t ngày dang, tên và s c a t báo / t p chí dã dang bài "Chúc vui nam L n"

g Cho bi t tên, d a ch và s di n tho i c a t báo t p chí dã dang bài "Tìm hi u ch t d c sarin" trong tu n l t 23/04/95 d n 30/04/1995

h Tác gi Hàn Ng c C m có nh ng truy n nào dã du c dang trên báo / t p chí? Cho bi t t a c a chúng

i Cho bi t s lu ng bài báo mà t p chí Ki n th c ngày nay dã dang trên t t c các s báo

Trang 28

Khoa CNTT & TT - ÐHCT

j Cho bi t th lo i c a các bài báo do các tác gi có h Lê sáng tác

k Tìm t a các bài tho dã du c dang trên các báo/t p chí trong tu n l t 23/4/95 d n 30/4/95

l Tìm tên các tác gi du c dang bài trên báo C u Chi n Binh

m Tìm tên nh ng báo/t p chí có dang xã lu n In ra tên các bài xã lu n dó và các s báo/t p chí tuong ng

Trang 29

Luy n t p câu l nh SELECT l ng nhau d tr l i cho các câu h i c n s d ng phép giao ho c phép

tr Ngoài ra, còn luy n t p kh nang v n d ng các hàm k t t p max, min, sum, count, avg

* Ði u ki n ch a select con có các d ng sau dây:

D ng 1 <Tên c t> <so sánh> (<select con>):

ÐK dúng khi giá tr c a c t so sánh dúng v i giá tr tr v t select con

D ng 2 <Tên c t> <so sánh> ALL (<select con>):

ÐK dúng khi giá tr c a c t so sánh dúng v i t t c các giá tr tr v t select con

D ng 3 <Tên c t> <so sánh> ANY|SOME (<select con>):

ÐK dúng khi giá tr c a c t so sánh dúng v i b t k m t giá tr nào tr v t select con

D ng 4 <Tên c t> [NOT] IN (<select con>):

ÐK dúng khi giá tr c a c t n m trong t p h p các giá tr tr v c a select con

D ng 5 [NOT] EXISTS (<select con>):

Ðk dúng khi k t qu tr v c a select con khác r ng

Các d ng này ph i du c l a ch n s d ng h p l tùy theo k t qu tr v c a select con nhu sau:

Select con tr v : M t c t Nhi u c t

M t dòng D ng 1 D ng 5 Nhi u dòng D ng 2, 3, 4

Trang 30

B ng 1 KTRUCSU(HOTEN_KTS, NAMS_KTS, PHAI, NOI_TN, DCHI_LL_KT)

B ng 2 CHUTHAU(TEN_THAU, TEL, DCHI_THAU)

B ng 3 CHUNHAN(TEN_CHU, DCHI_CHU)

B ng 4 CONGNHAN(HOTEN_CN, NAMS_CN, NAM_VAO_N, CH_MON)

B ng 5 CGTRINH(STT_CTR, TEN_CTR, DIACHI_CTR, TINH_THANH, KINH_PHI, TEN_CHU, TEN_THAU, NGAY_BD)

B ng 6 THAMGIA(HOTEN_CN, STT_CTR, NGAY_TGIA, SO_NGAY)

B ng 7 THIETKE(HOTEN_KTS, STT_CTR, THU_LAO) Tham kh o bài 2 d xem di n gi i cho t ng b ng

2 Yêu c u 1: Hãy vi t câu l nh SQL d tr l i các câu h i sau:

a Cho bi t h tên các ki n trúc su v a thi t k các công trình do Công ty Xây d ng

s 6 thi công, v a thi t k các công trình do ch th u Lê Van Son thi công

Phân tích câu h i:

Có th minh h a câu h i này b ng hình nh giao nhau c a hai t p sau:

V y ta ph i tìm hai t p h p này b ng hai câu l nh SELECT và giao chúng l i v i nhau Tuy nhiên,

vì phép giao không du c h tr tr c ti p nên ta s d ng d ng câu SELECT l ng nhau trong dó s

d ng t khóa IN d k t n i select cha và select con v i nhau (t c là d ng di u ki n ch a select con

s 4 dã d c p trên)

Luu ý: Cách nh n bi t d ng câu h i s d ng phép GIAO d tr l i:

Yêu c u tìm m t <d i tu ng nào dó> v a th c hi n <m t hành d ng> này hay s h u m t <tính

ch t> này, l i v a th c hi n <m t hành d ng> khác hay s h u m t <tính ch t> khác Câu truy v n:

Select distinct HOTEN_KTS From THIETKE a, CGTRINH b

qu c n tìm

Trang 31

Th c m c: Hai l nh select trên có th d i ch cho nhau du c không?

Ho c:s d ng select l ng nhau nhu sau:

Select distinct HOTEN_KTS From THIETKE a, CGTRINH b

Where a.STT_CTR = b.STT_CTR

and TEN_THAU = 'cty xd so 6'

and HOTEN_KTS in (Select HOTEN_KTS From THIETKE a, CGTRINH b Where a.STT_CTR = b.STT_CTR

Luu ý: Trong câu SELECT con d ng này (dùng t khóa IN) ta ch du c select m t c t duy nh t (không du c select nhi u c t), và c t select ph i là c t ta d t trong di u ki n ch a select con Trong ví d trên dó là c t hoten_kts

Th c m c: Hai l nh select cha và con có th d i ch cho nhau du c không?

b Cho bi t tên công trình có kinh phí cao nh t

(Select max(KINH_PHI) From CGTRINH);

Luu ý: Ð i v i các câu h i d ng câu h i:

Tìm <d i tu ng> s h u m t <thông s > < l n / nh / nhi u / > nh t

Ta d u ph i s d ng select con trong câu truy v n

c Cho bi t h tên các công nhân có tham gia các công trình C n Tho, nhung không có tham gia công trình Vinh Long

Phân tích câu h i:

Nhu ta bi t CSDL c a ta ch luu tr nh ng thông tin có hay dã x y ra Vì v y d tr l i du c cây

h i này, ta ch có th l y t p h p nh ng công nhân có tham gia C n Tho tr di t p h p nh ng công nhân có tham gia Vinh Long, nhu minh h a trong trong hình sau:

H tên Công Nhân

có tham gia các công trình

H tên Công Nhân

có tham gia các công trình 'Vinh Long'

Vùng bên trái chính là vùng k t

qu c n tìm

Trang 32

Luu ý: Cách nh n bi t d ng câu h i s d ng phép TR d tr l i:

Yêu c u tìm m t <d i tu ng nào dó> có th c hi n <m t hành d ng> này hay s h u m t <tính

ch t> này, nhung không (ho c chua) th c hi n <m t hành d ng> khác hay s h u m t <tính

ch t> khác Câu truy v n:

Select distinct HOTEN_CN

From THAMGIA a, CGTRINH b

and TINH_THANH = 'vinh long');

Th c m c: Hai câu select này có th d i ch cho nhau du c không?

Ho c: s d ng l ng nhau nhu sau:

Select distinct HOTEN_CN

From THAMGIA a, CGTRINH b

Where a.STT_CTR = b.STT_CTR

and TINH_THANH = 'can tho'

and HOTEN_CN NOT IN

(Select HOTEN_CN

From THAMGIA a, CGTRINH b

Where a.STT_CTR = b.STT_CTR

and TINH_THANH = 'vinh long');

Th c m c: Select cha va select con c a câu truy v n trên có th d i ch cho nhau du c không?

d Cho bi t tên c a các ch th u dã thi công các công trình có kinh phí l n hon t t c các công trình do ch th u Phòng D ch v S Xây d ng thi công

Phân tích câu h i:

Tru c h t ta ph i dùng m t select d tìm t t c các kinh phí c a các công trình do ch th u Phòng

d ch v s xây d ng thi công Sau dó m t select th 2 d tìm các ch th u thi công các công trình

l n hon t t c các kinh phí này Ta th y hai câu select này có th l ng nhau select th nh t s là select con vì nó du c th c hi n tru c, còn select th 2 s là select cha, và select cha s dùng di u

ki n ch a select con d ng th 2 (có t khóa ALL)

Câu truy v n:

Select TEN_THAU

From CGTRINH

Where KINH_PHI > ALL

(Select KINH_PHI From CGTRINH

Where TEN_THAU = 'phong dich vu so xd');

Th c m c:Câu này ta có th vi t l i b ng cách s d ng d ng di u ki n ch a select con s 1 du c không?

Trang 33

Select a.TEN_THAU, DCHI_THAU

From CHUTHAU a, CGTRINH b

Where a.TEN_THAU = b.TEN_THAU

And KINH_PHI = (Select min(KINH_PHI) From CGTRINH);

Th c m c: - D ng câu h i này gi ng câu h i nào trong bài th c hành này?

- Câu này có th s d ng d ng di u ki n ch a select con s 3 hay không?

f Tìm h tên và chuyên môn c a các công nhân tham gia các công trình do ki n trúc

su 'Le Thanh Tung' thi t k

Phân tích câu h i:

Tru c h t ta ph i dùng m t select d tìm s th t các công trình do ki n trúc su Lê Thanh Tùng thi t k Sau dó dùng m t select th 2 d tìm các công nhân dã tham gia vào các công trình tìm

du c Ta th y hai câu select này có th l ng nhau: select th nh t s là select con vì nó du c th c

hi n tru c, còn select th 2 s là select cha, và select cha s dùng di u ki n ch a select con d ng

th 4

Câu truy v n:

Select a.HOTEN_CN, CH_MON

From CONGNHAN a, THAMGIA b

Where a.HOTEN_CN = b.HOTEN_CN and b.STT_CTR IN

(Select STT_CTR From THIETKE

Where HOTEN_KTS = 'le thanh tung');

g Tìm các c p tên ch th u có trúng th u các công trình t i cùng m t thành ph

Phân tích câu h i:

Vì m i dòng trong b ng CGTRINH ch cho bi t ch th u nào thi công công trình nào, nên d tìm

du c nh ng c p ch th u trúng th u các công trình t i cùng thành ph , thì ta ph i m b ng CGTRINH hai l n v i hai bí danh khác nhau, k t n i chúng b ng các di u ki n khác tên th u nhung cùng t nh thành:

a.TEN_THAU <> b.TEN_THAU (1) a.TINH_THANH = b.TINH_THANH

Tuy nhiên, v i di u ki n k t n i nhu v y, ta s nh n du c hai dòng cho m i c p v i th t tên

th u ngu c nhau; ch ng h n: (Le Van Son, Cty xd so 6) và (Cty xd so 6, Le Van Son) Ð kh c

ph c tình tr ng này, ta s a l i di u ki n k t n i (1) b ng:

a.TEN_THAU < b.TEN_THAU Câu truy v n:

Select Distinct c1.TEN_THAU, c2.TEN_THAU, c1.TINH_THANH

Where c1.TEN_THAU < c2.TEN_THAU and c1.TINH_THANH = c2.TINH_THANH;

Trang 34

Tru c h t ta ph i dùng m t select d tìm các c p h tên công nhân có tham gia cùng công trình

Sau dó dùng m t select th hai truy xu t t k t qu c a select th nh t d nhóm t ng c p công nhân l i và d m s công trình h tham gia chung v i nhau, ch n ra nh ng c p có s công trình tham gia chung l n hon ho c b ng 2

Vì select th nh t c n du c luu l i tru c khi select th hai th c hi n nên select th nh t s n m trong m nh d FROM c a select th hai

Câu select th nh t hoàn toàn tuong t nhu câu h trên Vì m i dòng trong b ng THAMGIA ch cho bi t công nhân nào tham gia công trình nào, nên d tìm du c nh ng c p công nhân tham gia cùng công trình, thì ta ph i m b ng THAMGIA hai l n v i hai bí danh khác nhau, k t n i chúng

b ng các di u ki n:

a.HOTEN_CN <> b.HOTEN_CN (1) a.STT_CTR = b.STT_CTR

Tuy nhiên, v i di u ki n k t n i nhu v y, ta s nh n du c hai dòng cho m i c p v i th t h tên ngu c nhau; ch ng h n: (Nguyen Van A, Tran Thi B) và (Tran Thi B, Nguyen Van A) Ð kh c

ph c tình tr ng này, ta s a l i di u ki n k t n i (1) b ng:

a.HOTEN_CN < b.HOTEN_CN Câu truy v n:

Select t1.HOTEN_CN As cn1, t2.HOTEN_CN As cn2, t1.STT_CTR

From THAMGIA t1, THAMGIA t2

Where t1.HOTEN_CN < t2.HOTEN_CN and t1.STT_CTR = t2.STT_CTR ;

Luu ý:M c dù hai c t l y t hai b ng v i bí danh khác nhau nhung có tên gi ng nhau, nên ta ph i

d t l i tên c t b ng t khóa AS thì m i có th luu l i Ta có th d t tên cho k t qu trung gian này nhu d t bí danh cho b ng

Select cn1, cn2

From (Select t1.HOTEN_CN As cn1, t2.HOTEN_CN As cn2, t1.STT_CTR

From THAMGIA t1, THAMGIA t2

Where t1.HOTEN_CN < t2.HOTEN_CN and t1.STT_CTR = t2.STT_CTR) tam

M i hàng hóa du c gán m t mã hàng riêng bi t d d phân bi t, và có m t tên hàng

B ng 2 DAILY(STT_DL, TEN_DL, DCHI_DL)

M i d i lý du c gán m t s th t phân, có m t tên d i lý và m t d a ch liên l c

Trang 35

du c ghi nh n l i s lu ng mua và tr giá mua t ng c ng

B ng 4 BAN(MA_HANG, STT_DL, NGAY_BAN, SOLG_BAN, TRIGIA_BAN) Khi m t d i lý bán m t m t hàng nào dó (MA_HANG), vào m t ngày nào dó (NGAY_BAN), s

du c ghi nh n l i s lu ng bán và tr giá bán t ng c ng

2 Yêu c u 1: Tìm s thông thuong gi a các b ng trong CSDL3

3 Yêu c u 2: Ð t synonym cho các b ng này t schema CSDL3 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 Tìm tên nh ng d i lý v a có bán coca cola v a có bán pepsi cola

b Tìm tên nh ng m t hàng du c mua nhung chua du c bán

c Tìm tên và d a ch nh ng d i lý có mua cùng m t hàng v i V n L i mua

d Cho bi t tên các m t hàng du c ít nh t là hai d i lý mua vào v i s lu ng trên 50

e Tìm t ng tr giá mua Coca Cola d i lý Tân Hi p Hung

f Tìm t ng tr giá bán Coca Cola d i lý Tân Hi p Hung

g Tìm tên nh ng m t hàng du c bán d i lý Tân Hi p Hung vào c hai ngày 15/12/94 và ngày 31/12/94

h Có bao nhiêu m t hàng du c mua vào nhung chua du c bán ra d i lý Tân Hi p Hung trong tháng 12 nam 1994

i Tìm tên các m t hàng có mua và bán trong cùng m t ngày cùng m t d i lý

j Tìm tên và d a ch c a các d i lý và nh ng m t hàng có s lu ng mua và bán b ng nhau trong cùng m t ngày

k Tìm tên d i lý dã mua coca cola v i s lu ng nhi u hon t t c các d i lý khác

Trang 36

Câu l nh SQL s d ng trong bài này:

SELECT <các c t phân nhóm>, <hàm-k t-t p(<bi u th c>)>

FROM <tên b ng>

[ WHERE <Ði u ki n> ]

GROUP BY <C t d phân nhóm> [, <C t d phân nhóm> [, ]]

HAVING <di u ki n ch n trên nhóm>

Cú pháp t o b ng t m (tham chi u d n m t kh i l nh truy v n):

WITH <tên b ng t m> AS (<câu truy v n con>) [, <tên b ng t m> AS (<câu truy v n con>) [,…]]

1 KTRUCSU(HOTEN_KTS, NAMS_KTS, PHAI, NOI_TN, DCHI_LL_KT)

2 CHUTHAU(TEN_THAU, TEL, DCHI_THAU)

3 CHUNHAN(TEN_CHU, DCHI_CHU)

4 CONGNHAN(HOTEN_CN, NAMS_CN, NAM_VAO_N, CH_MON)

5 CGTRINH(STT_CTR, TEN_CTR, DIACHI_CTR, TINH_THANH, KINH_PHI, TEN_CHU, TEN_THAU, NGAY_BD)

6 THAMGIA(HOTEN_CN, STT_CTR, NGAY_TGIA, SO_NGAY)

7 THIETKE(HOTEN_KTS, STT_CTR, THU_LAO) Tham kh o bài 2 d xem di n gi i cho t ng b ng

2 Yêu c u 1: Hãy vi t câu l nh SQL d tr l i các câu h i sau:

a Tìm t ng kinh phí c a t t c các công trình theo t ng ch th u

Phân tích câu h i:

Trang 37

Khoa CNTT & TT - ÐHCT

Vì m i dòng d li u trong b ng CGTRINH ch cho bi t kinh phí c a t ng công trình, nên mu n

bi t t ng kinh phí theo t ng ch th u thì ta ph i nhóm các dòng d li u theo c t TEN_THAU, sau

dó dùng hàm sum d c ng kinh phí cho m i nhóm

Câu truy v n:

Select TEN_THAU, sum(KINH_PHI) As TongKP

Group by TEN_THAU;

Th c m c:N u trong m nh d Select ta thêm c t TEN_CTR thì có du c không?T i sao?

b Cho bi t h tên các ki n trúc su có t ng thù lao thi t k các công trình l n hon 25 tri u

Phân tích câu h i:

Vì m i dòng d li u trong b ng THIETKE ch cho bi t thù lao thi t k c a m t ki n trúc su cho

m t công trình nào dó, nên mu n bi t t ng thù lao thi t k các công trình c a t ng ki n trúc su, thì

ta ph i nhóm các dòng d li u theo c t HOTEN_KTS, sau dó dùng hàm sum d c ng thù lao cho

m i nhóm Sau cùng, dùng m nh d HAVING d ch n l i các nhóm (hay các ki n trúc su) có t ng thù lao > 25

Câu truy v n:

Select HOTEN_KTS, sum(THU_LAO) As TongTL

Group by HOTEN_KTS

Having sum(THU_LAO) > 25;

c Cho bi t s lu ng các ki n trúc su có t ng thù lao thi t k các công trình l n hon

25 tri u

Phân tích câu h i:

Câu h i này tuong t nhu câu b, nhung thay vì li t kê h tên các ki n trúc su th a di u ki n, thì ta

ch c n cho bi t có t ng c ng bao nhiêu ki n trúc su th a di u ki n nhu v y

Vì v y, tru c h t ta ph i tìm danh sách các ki n trúc su th a di u ki n tru c r i m i d m trên danh sách tìm du c Hay nói khác hon, ta ph i th c hi n 2 bu c b ng 2 l nh select:

Câu 1 Gi ng h t câu b, nhung câu này d t trong m nh d FROM c a câu 2

Câu 2 Ð m s dòng trên b ng k t qu c a câu 1

Having sum(THU_LAO) > 25);

Th c m c: Ta có nh t thi t là ph i d m phân bi t không?

d Tìm t ng s công nhân dã tham gia c a m i công trình

Phân tích câu h i:

Vì m i dòng d li u trong b ng THAMGIA ch cho công nhân nào tham gia công trình nào, nên

mu n bi t t ng s công nhân dã tham gia theo t ng công trình, thì ta ph i nhóm các dòng d li u

Trang 38

Khoa CNTT & TT - ÐHCT

theo c t STT_CTR, sau dó dùng hàm count d d m s dòng (m i dòng là m t công nhân) trong

m i nhóm d có du c t ng s công nhân tham gia

Câu truy v n:

Select STT_CTR, count(*) As TongSoCN

Group by STT_CTR;

Th c m c:Trong m nh d Select c a câu này có th thêm c t HOTEN_CN không?

e Tìm tên và d a ch công trình có t ng s công nhân tham gia nhi u nh t

Phân tích câu h i:

Câu h i này tuong t nhu câu d, nhung thay vì cho bi t t ng s công nhân tham gia c a t t c các công trình, thì dây ta ch yêu c u k t xu t ra công trình nào có t ng s công nhân tham gia nhi u

nh t

Vì v y, tru c h t ta ph i th c hi n câu d tru c d t k t qu c a nó v i bí danh a, t b ng a này ta

m i có th ch n ra công trình có t ng s công nhân tham gia nhi u nh t du c V y, ta ph i th c

hi n 2 câu select:

Câu 1 gi ng h t câu d, câu này s d t trong m nh d FROM c a câu 2, d t bí danh a

Câu 2 Ch n ra dòng có TongSoCN cao nh t t k t qu câu 1 (b ng a), d ng th i k t n i v i

b ng CGTRINH d l y thông tin v tên và d a ch công trình

Câu truy v n:

Select TEN_CTR, DIACHI_CTR, TongSoCN

From (Select STT_CTR, count(*) As TongSoCN

Group by STT_CTR) a, CGTRINH b

Where a.STT_CTR = b.STT_CTR

(Select Max(TongSoCN)

From (Select STT_CTR, count(*) As TongSoCN

Group by STT_CTR) );

f Cho bi t tên các thành ph và kinh phí trung bình cho m i công trình c a t ng thành ph tuong ng

Phân tích câu h i:

Vì m i dòng d li u trong b ng CGTRINH ch cho bi t kinh phí c a m i công trình và cho bi t công trình dó nào thu c t nh thành nào, nên mu n bi t kinh phí trung bình cho m i công trình c a

t ng thành ph , thì ta ph i nhóm các dòng d li u theo c t TINH_THANH, sau dó dùng hàm avg

d tính kinh phí trung bình cho m i nhóm (t c là m i thành ph )

Câu truy v n:

Select TINH_THANH, Avg(KINH_PHI) As KinhPhiTB

g Cho bi t h tên các công nhân có t ng s ngày tham gia vào các công trình l n hon

t ng s ngày tham gia c a công nhân Nguyen Hong Van

Phân tích câu h i:

Trang 39

Câu 1 Nhóm d li u trong b ng THAMGIA theo HOTEN_CN, và tính t ng s ngày tham gia Câu này n m trong m nh d FROM c a câu select 2, d t bí danh cho b ng k t qu là a

Câu 2 Ch n các dòng trên b ng a th a di u ki n

Câu truy v n:

Select HOTEN_CN, TongSoNgay

From (Select HOTEN_CN, Sum(SO_NGAY) As TongSoNgay

h Cho bi t t ng s công trình mà m i ch th u dã thi công t i m i thành ph

Phân tích câu h i:

Vì m i dòng d li u trong b ng CGTRINH ch cho công trình nào thu c t nh thành nào và do ch

th u nào thi công, nên mu n bi t t ng s công trình mà m i ch th u dã thi công t i m i t nh thành, thì ta ph i nhóm các dòng d li u theo 2 c t TEN_THAU và TINH_THANH, sau dó dùng hàm count d d m s dòng chính là s công trình c a m i nhóm

Câu truy v n:

Select TEN_THAU, TINH_THANH, Count (STT_CTR) As TongSoCTR

Group By TEN_THAU, TINH_THANH

i Cho bi t h tên công nhân có tham gia t t c các công trình

Phân tích câu h i:

Vì m i dòng d li u trong b ng THAMGIA ch cho công nhân nào tham gia công trình nào, nên

mu n bi t công nhân nào có tham gia h t t t c các công trình tru c h t ta d m xem m i công nhân dã tham gia t ng c ng bao nhiêu công trình, dua vào b ng t m Sau dó, ch n t b ng t m

nh ng công nhân có t ng s công trình tham gia b ng v i t ng s công trình ta có, b ng cách d m

Trang 40

2 DAILY(STT_DL, TEN_DL, DCHI_DL)

3 MUA(MA_HANG, STT_DL, NGAY_MUA, SOLG_MUA, TRIGIA_MUA)

4 BAN(MA_HANG, STT_DL, NGAY_BAN, SOLG_BAN, TRIGIA_BAN) Tham kh o bài 3 d xem di n gi i cho t ng b ng

2 Yêu c u 1: Hãy vi t câu l nh SQL d tr l i các câu h i sau:

a Tìm don giá mua trung bình c a bia Sài gòn tính trên t t c các d i lý

b Tìm don giá mua trung bình c a bia Sài gòn tính trên trên t ng d i lý

c Hi n th s lu ng t n kho c a t ng m t hàng theo t ng d i lý

d Tìm tên, d a ch c a d i lý có t ng giá tr mua trong m t ngày l n hon 700000

e V i m i d i lý, hãy cho bi t ngày nào có s lu ng m t hàng bán ra là ít nh t

f Tìm tên và d a ch c a nh ng d i lý có t ng tr giá bán cao nh t

g Tìm t ng só ti n mà m i d i lý dã chi d mua hàng theo t ng tháng

h Tìm tên và t ng s lu ng bán ra c a các m t hàng dã bán du c v i s lu ng nhi u nh t c a

t ng d i lý

i Cho bi t t ng s món hàng mà m i d i lý kinh doanh (mua và bán)

j Tìm tên d i lý dã mua vào m t hàng bia Heineken v i don giá mua là cao nh t

Ngày đăng: 15/05/2016, 23:57

HÌNH ẢNH LIÊN QUAN

Hình 1 Database Instance - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 1 Database Instance (Trang 4)
Hình 3 M i tuong quan gi a datafiles và tablespace - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 3 M i tuong quan gi a datafiles và tablespace (Trang 6)
Hình 2 M i quan h  gi a Data block, extent và segment - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 2 M i quan h gi a Data block, extent và segment (Trang 6)
Hình 4 Quan h  gi a c u trúc lu n lý và v t lý trong CSDL - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 4 Quan h gi a c u trúc lu n lý và v t lý trong CSDL (Trang 7)
Hình 6 Ki n trúc Client-Server trong m ng Oracle - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 6 Ki n trúc Client-Server trong m ng Oracle (Trang 12)
Hình 7 Oracle Net Manager - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 7 Oracle Net Manager (Trang 16)
Hình 8 Ð t Net Service Name - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 8 Ð t Net Service Name (Trang 17)
Hình 16 K t n i tr c ti p - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 16 K t n i tr c ti p (Trang 19)
Hình 17 K t n i thông qua Oracle Net - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 17 K t n i thông qua Oracle Net (Trang 19)
Hình 19 C a s  chính c a SQL Developer - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 19 C a s chính c a SQL Developer (Trang 20)
Hình 22 Dùng các bi n - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 22 Dùng các bi n (Trang 65)
Hình 23 V  trí luu tr  các chuong trình trong schema - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 23 V trí luu tr các chuong trình trong schema (Trang 72)
Hình 24 Trigger Events - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 24 Trigger Events (Trang 76)
Hình 26 Xem các quy n dã c p cho userTest - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 26 Xem các quy n dã c p cho userTest (Trang 91)
Hình 28 L i dang nh p do chua có quy n k t n i d n CSDL - Giáo trình Hệ quản trị Cơ sở dữ liệu
Hình 28 L i dang nh p do chua có quy n k t n i d n CSDL (Trang 95)

TỪ KHÓA LIÊN QUAN

w