Phan tieh yeu eiu I>~tai: Phc1n m@m bien d6i l~nh SELECT tiT ngon ngfr Oracle sang ngon ngfr Microsoft SQL Server.. Chrrong 2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 2Ngon ngfr
Trang 1BO GIAo DVC vA DAo T~O TRUONG DHDL NGO~I NGU- TIN HQC TP.HCM
KHOA CONG NGH~ THONG TIN
pHAN MEM BIEN DOl LENH SELECT
TU NGON NGU ORACLE
GVHD:ThS NGUYEN TRUNG TRVC
TP.HO CHi MINH - 2006
Trang 2Lai dun on
LmcAMON
Em trong su6t qua trinh lam khoa lu~n t6t nghi~p
Daj hQc dan l~p Ngo~i Ngu - Tin HQc Tp Hi) Chi Minh da: luon t~o diSu ki~ncho cac em hoc t~p t6t trong su6t nien hQc qua
sv.V6 NgQc Kim Trang
Trang 32.5 S\f khac nhau cua cau troy v~n gifra Oracle
2.6 Cac phep toan d~i s6 quan h~
duQ'csu d\lng dS phan tich cau troy v~n thanh cay toan til 27
Trang 4My.c Iy.c
3.2.4 ChuySn d6i cac diSm khac nhau v~ toan tu 473.2.5 ChuySn d6i cac diSm khac nhau v~tiT khoa 47
4.2 Cac ki thu~t dung trong thvc hi~n chuang trinh 50
4.2.2.2 BQ rna h6a chu6i, tir kh6a, toan tU, ham 524.2.2.3 BQ phan tich Cll phap cua cau troy vfin 534.2.2.4 BQ rna h6a chu6i, tir kh6a, toan tU, ham 55
4.2.2.6 BQ chuySn d6i cac diSm khac nhau
-4.3.2-.-Tab-Gay Cll phap • ••
Trang 5Ch traDg 5 : To ng kef 73
•
Trang 61.1 Yeu eiu ella d~ tai
1.2 Phan tieh yeu eiu
I>~tai: Phc1n m@m bien d6i l~nh SELECT tiT ngon ngfr Oracle sang ngon ngfr
Microsoft SQL Server.
1
ChU'ong 1: TONG QUAN VE DE TAl
• Tim hiSu van ph~m l~nh SELECT cua Oracle va Microsoft SQL Server.
• Phan bi~t Sl! khac nhau v@ van ph~m cua cau troy vl1n gifra Oracle va
Microsoft SQL Server.
• Tim hiSu cac phfrn m@m cfrn thiet lien quan den vi~c thl!C hi~n d@tai: ngonngfr l~p trinh C# tren moi truCmg NET,
• Viet phfrn m@m minh h<;>avi~c chuySn d6i cau l~nh SELECT cua Oracle
sang Microsoft SQL Server.
• Tim hiSu v@ngfr nghi'a van ph~m cua Oracle va Microsoft SQL Server dSphan bi~t Sl! khac nhau cua cau troy vl1n gifra hai h~ qmin tri cO' so dfr li~u nay.Tuy nhien, vi van ph~m cua chung qua phuc t~p, d@tai nay khong thS t6ng quathet, nen chung ta chi nghien cuu cac vl1n d@khac nhau cO'ban
• Sau khi nh~n biet diSm gi6ng nhau va xac dinh Sl! khac nhau gifra hai cautroy vl1n cua hai h~ qUID tri cO' so dfr li~u, ta cfrn tien hanh phan lo~i cac diSmkhac nhau dS thl1y duQ'c Sl! t6ng quat v@kien truc ngon ngfr SQL
• Xay d\fllg qua trinh chuySn d6i troy vl1n gifra hai h~ qufm tri cO' so dfr li~u
Oracle va Microsoft SQL Server.
• Yiet chuang trinh thl!c hi~n vi~c chuySn d6i cac Sl! khac nhau gifra hai cau_~tru~v~n
Trang 7Chrrong 2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 2
Ngon ngfr SQL dugc phat triSn trong mQt h~ quan tri CSDL mfiu - System
R - boi IBM van gifra nhfrng nam 1970.Nam 1979, Oracle Corporation dff gi6ithi~u vS vi~c th\1'c hi~n SQL thuang m~i hoa d~u tien
2.1.1 Cac d~c di~m clla SQL
• SQL la ngon ngfr tva tiSng Anh (English - like language), su d\lng cac tunhu select, insert, delete trong t~p l~nh
• SQL la mQt ngon ngfr phi thu !\Ic (non-procedural language): chi ra cacthong tin nao c~n thiSt (what), khong c~n chi ra cach th\1'c hi~n nhu thS nao(how) dS co dugc thong tin nay
• Tat ca cac l~nh SQL dSu su d\lng bQ t6i uu hoa truy van (query optimizer)
- la mQt thanh ph~n cua RDBMS - dS xac dinh cac cach truy van nhanh nhatlay dfr li~u c~n thiSt
• SQL xu ly cac t~p hgp mau tin han la mlii l~n mQt mau tin D~ng chungnhat cua t~p hgp cac mau tin la mQt bang (table)
• SQL co thS dugc dung cho nhiSu nguai su d\lng, bao g6m DBA, nguai l~ptrinh (mg d\lng, nguai quan ly va nguai su d\lllg cu6i cung (end user).
, SQL cung cap nhiSu l~nh dS th\1'c hi~n nhiSu cong vi~c khac nhau, baogom:
+Truy van dfr-li~u -
-+Them vao, c~p nh~t va huy b6 cac hang cua bang
+T~o l~p, thay d6i va huy b6 cac d6i tugng CSDL
+DiSu khiSn truy xuat dSn CSDL va cac d6i tugng CSDL
+Bao dam tinh nhat quan cua dfr li~u
Trang 82.1.2 T~p l~nh SQLCac l~nh SQL duQ'cchia thanh 3 lO{li:ngon ngfr dinh nghia dfr li~u, ngonngfr thao tac dfr li~u, ngon ngfr diSu khiSn dfr li~u
• Ngon ngii iljnh nghia dii lifu (DDL - Data Definition Language): bao
g6m cac l~nh dung dS t{lOl~p, tahy d6i va huy b6 cac bang
Vi d\l: CREATE, ALTER, DROP
• Ngon ngii thao ttic dU'lifu (DML - Data Manipulation Language): bao
g6m cac l~nh dung dS truy vfin, them vao, c~p nh~t va xoa b6 dfr li~u trongCSDL Cac l~nh nay co thS duQ'cdua vao tnJc tiSp (chS dQ tU011gtac) va kSt quatra vS ngay sau khi thvc hi~n l~nh nay, ho~c co thS dua vao trong cac chu011gtrinh
Vi d\l: SELECT, INSERT, DELETE, UPDATE
• Ngon ngii iliJu khiJn dU'lifu (DCL - Data Control Language): bao g6m
cac l~nh dung dS h6 trQ'cho DBA dS diSu khiSn CSDL Cac l~nh dung dS gan va
CSDL va luu tm ho~c huy b6 cac giao dich (transaction) anh hUOngdSn CSDL.
Vi d\l: GRANT, REVOKE
2.2 Lenh SELECT
• L~nh SELECT dung dS lfiy dfr li~u trong CSDL, th\fc hi~n cac phep toan cuad{lis6 quan h~: phep dch, phep chQn, phep chiSu, phep kSt
• Ngfr phap cua l~nh SELECT nhu sau:
SELECT [DISTINCT] <list of expressions> [INTO <list of variables>]
FROM <list of tables>
[WHERE <row conditions>]
[GROUP BY <list of expressions>
[HAVING <group of rows conditions>]]
[ORDER BY <list of expressions>];
2.2.1 Menh d~ SELECT
M~nh dS SELECT th\fc hi~n phep chiSu cua d{li s6 quan h~ list of
expressions la danh sach cac biSu thuc duQ'cchQn, cac biSu thuc nay duQ'cphiin
cach nhau boi dfiu phfiy BiSu thuc co thS la mQt h~ng, mQt biSn (ho~c cQt), ho~cS\fkSt hqp gifra cac h~ng, cac biSn v6i phep toano M6i biSu thuc co thS co mQt bi
danh (alias) dung ngay phia sau, duQ'cgQi la bi danh cQt (column alias); bi danh cQt chi duQ'c Slr d\lng trong m~nh dS SELECT NSu list of expressions la dfiu *
Trang 9ChuO'ng2: Van ph~mdiu SELECT clla Oracle va Microsoft SQL 4
table name column name.-
-2.2.2 Menh d~ FROM
M~OOds"PROM thvc hi~n phep tich cua di;lis6 quan h~, dung dS chi ra cac
bang chua dfr Ii~u cfin I~y ra list of tables hI danh sach cac bang duQ'cphan cach
nhau boi d~u phAy.M6i bang co thS co bi daOOdUng ngay phia sau
2.2.3 Til' khoa DISTINCT
Tu khoa DISTINCT IOi;lib6 cac gia tri trung trong kSt qua cua truy v~n.NSu co OOiSucQt duQ'c chQn thi DISTINCT aOOhuang dSn toan bQ cac cQt nay.Til khoa DISTINCT phai duQ'cd~t ngay sau tu khoa SELECT
2.2.4 Menh d~ INTO
M~nh d{ INTO chi duQ'c su d\lng trong PL/SQL, dung dS gan gia tri cua
cac biSu thuc cho cac biSn theo thu tv tuang ung list of variables Ia daOOsach
cac biSn duQ'cphan cach OOauboi d~u phAy
2.2.5 Menh d~ WHERE
M~OOd{ WHERE thvc hi~n cac phep chQn, phep kSt cua di;lis6 quan h~
row conditions Ia cac diSu ki~n duQ'cxet tren m6i hang, cac hang nao th6a man
cac diSu ki~n nay thi duQ'cdua vao kSt qua cua truy v~n
2.2.6 Menh d~ GROUP BY
M~OOdS GROUP BY duQ'c dung dS phan chia cac hang cua mQt bangthaOOcac OOom006 han Cac ham nhom co thS duQ'csir d\lng dS tra vS thong tinchung cho m6i nhom M6i OOomchi xu~t hi~n 0 mQt hang trong kSt qua cua truyv~n Trong truemg hQ'p I~OOSELECT co ca hai m~nh dS WHERE va GROUPBY-thi-eac-hang se duQ'c chQn boi diSu ki~n cua-m~nh-dS-WHERE, r6i sau dophan chia cac hang duQ'c chQn thanh cac OOom.Cac cQt trong m~OOdS GROUP
BY khong b~t bUQcphai co trong SELECT Tuy OOien,dS cho kSt qua cua truyv~n Ia co ngfr nghia thi cac cQt cua m~nh dS GROUP BY nen co trong m~nh dSSELECT Khi co m~OO dS GROUP BY, t~t ca cac cQt co trong m~OO dSSELECT nSu chung khong n~m trong ham OOomthi chung phai co trong m~nh
dS GROUP BY Trong truemg hQ'PI~OOSELECT khong co m~nh dS GROUP
BY thi toan bQ bang duQ'c xem Ia mQt OOom.Do do, nSu m~OOdS SELECT cochua ham OOomthi chung ta khong thS I~y duQ'cchi tiSt cua m6i hang
Trang 10M~OOdS.HAVING duQ'c dung d~ xac dinh OOomduQ'c dua vao kSt qua
cua truy v~n group of rows conditions la cac diSu ki~n duQ'cxet cho m6i nhom.
M~OOdS HAVING co th~ dUng truac m~OOdS GROUP BY, OOung m~OOdSGROUP BY nen dung truac d~ cho d~ hi~u Cac OOomduQ'c t~o ra va cac hamnhom duQ'c tiOOtoan truac khi thvc hi~n m~OOdS HAVING d~ chQn ra cacnhom NSu I~OOSELECT co cac m~l1h dS WHERE, GROUP BY va HAVINGthi thu tv thvc hi~n cua cac m~nh dS nay la WHERE (d~ chQn cac hang), kS tiSpGROUP BY (d~ phiin chia nhom) va sau cung la HAVING (d~ chQn cac OOom)
2.2.8 Menh d~ ORDER BY
Thong th.ucmg,thu tv cua cac hang duQ'ctra vS trong kSt qua cua truy v~n
la khong xac diOO.M~OOdS ORDER BY co th~ duQ'c dung d~ s~p thu tv cachang nay M~OOdS ORDER BY luon luon la m~OO dS cu&i cung cua I~OOSELECT Thu tv ngftm diOO la tang dftn (ASC - ascending), tiT khoa DESC(descending) dUng ngay sau ten cQt dung d~ chi diOOthu tv giam dftn Cac cQttrong m~nh dS ORDER BY khong b~t bUQcphai co trong m~nh dS SELECT
Trang 11•
2.3 Van pham diu truy van eua Oracle
hint: cac chi dan cho bQ t6i uu hoa
DISTINCT IUNIQUE: lo~i b6 cac gia tri trung
ALL: lAy tAt ca cac gia tri, bao g6m gia tri trung
* : lAy tAt ca cac CQtcua tAt ca cac bang co trong m~nh dS FROM
Schema: chi ra luQ'c d6 chua cac bang duQ'c chQn
Table.-* IView * I Snapsh0t~:-chQn tAt ca cac CQtcua table, view, duQ'c chi dinh
snapshot-Expr: biSu thuc dung lam diSu ki~n chQn
c alias: bi danh cho cQt
Trang 12thiSt phai la CSDL cua Oracle NSu b6 qua dblink, Oracle se ngAm hiSu la CSDL
C\lC bQ
Table, view, snapshot: ten cua bang, view
t_alias: bi danh cho bang
•
Trang 13ChlfO'Dg2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 8
READ ONLY: bi~u thj cau truy v~n khong th~ duQ'c c~p nh~t
CHECK OPTION: n~u cau truy v~n n~m trong cau l~nh insert, updateho?c delete thi Oracle se ngan ch?n m9i thay d6i tren bang
Condition: diSu ki~n ch9n
Outerjoin: diSu ki~n k~t gifra cac bang
outer_join::=
Trang 14ChUO'Dg2: Van ph~m diu SELECT cua Oracle va Microsoft SQL 9
,-;[ H:' ~~Dj{<ordrt0n}-.,
Start with: b~t dftu tu dong g6c cua h~ dfulg c~p dfr li~u
Connect by: chi ra quan h~ giua dong cha va con cua h~ dftng c~p du li~u
HAVING: di~u ki~n ch<;mtren rn6i nhom
tien ho~c cu6i cling trong thu tv s~p x~p NULL LAST rn~c dinh trong s~p x~ptang dftn NULL FIRST rn~c dinh trong s~p x~p giarn dftn
Trang 15ChU'01lg2: Van ph~m diu SELECT cua Oracle va Microsoft SQL 10
r OF ,
OF: chi ra ten cQtthuQc nhung bang lien quan d~n phep k~t
NOW AIT: tra v~ quy~n di~u khi~n du li~u cua dong khi thlJc hi~n l~nhSELECT
2.4 Van pham diu truy v~n cua Microsoft SQL Server
{ < query specification> I ( < query expression> ) }
[UNION [ALL] < query specification I ( < query expression> ) [ n ] ]
Trang 16Chuong 2: Van ph~m diu SELECT ctia Oracle va Microsoft SQL 11
< query specification> ::=
SELECT [ ALL IDISTINCT]
[ { TOP integer ITOP integer PERCENT} [ WITH TIES] ]
< select list>
[ INTO new_table]
[FROM { < table_source> } [, n] ]
[ WHERE < search_condition> ]
[GROUP BY [ALL] group_by_expression [, n]
]
[ HAVING < search_condition>]
Select clause ::=
SELECT [ ALL IDISTINCT]
[ TOP n [ PERCENT] [ WITH TIES] ]
< select list>
< select list>::=
I { table_name Iview_name Itable_alias }.*
I { column_name I expression IIDENTITYCOL IROWGUIDCOL }[ [ AS ] column_alias]
Icolumn_alias = expression
} [ , n ]
,
van
TOP n: gi6i h:;m s6 dong clla bang k~t qua d~n n dong
PERCENT: bang k~t qua chi chua n% s6 dong dftu tien tra ve clla diu truy
'fable -=alias;-d~G-ta bi danh cho bang
Column_alias: d~c ta bi danh cho cQt
IDENTITYCOL: tham khao d~n cQt dinh danh Clla mQt bang
ROWGUIDCOL: tham khao cQt dinh danh duy nhAt tofm C\lC Clla mQtbang
Trang 17ChU'ong 2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 12
table_name [ [ AS ] table_alias] [ WITH ( < table_hint> [ , n ] ) ]
Irowset_ function [ [ AS ] table_alias]
IOPENXML
Iderived_table [AS] table_alias [ ( column_alias [ , n] ) ]
I<joined_table>
< joined_table> ::=
< table_source> <join_type> < table_source> ON < search_condition>
I< table_source> CROSS JOIN < table_source>
Hint: cac chi d~n cho bQt6i uu hoa
dSn nhu mQt bang
I>eri-ved_table:bi danh cho bang-d~n-xuftt, cQt-cua-bang d~n xuftt
Joined_table: cac bang duQ'csir d\mg trong phep kSt
Join_type: cac lo~i kSt: inner join, {left Iright I full} outer join
j
I
Trang 18ChWO'Dg2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 13
{ [NOT] < predicate> I ( < search_condition> ) }
[ { AND I OR} [NOT] { < predicate> I ( < search_condition> ) } ]
I expression [ NOT] BETWEEN expression AND expression
I expression IS [ NOT] NULL
I CONTAINS
( { column I * } , '< contains_search_condition >' )
IFREETEXT ( { column 1* } , 'freetext_string' )
I expression [ NOT] IN ( subquery I expression [ , n ] )
Iexpression {=1<> I!= I> I> =I!> I < I < = I!< }
{ ALL I SOME I ANY} ( subquery )
IEXISTS ( subquery )
}
*= : ki hi~u Clla left outer join
=* : ki hi~u clla right outer join
Search_condition: gi6i hl;ln sf>dOng-tFa-v8-trong kSt qua clla cau SELECThay cac troy vc1ncon thong qua vi~c su d\mg cac vi tu (predicates)
CONTAINS va FREETEXT: tim kiSm cac cQt co chua kiSu dfr li~u d\fatren ki t\f dS so trimg v6i cac ill va c\lm tu
Trang 19ChuO'ng 2: Van ph~m diu SELECT cua Oracle va Microsoft SQL 14
[ GROUP BY [ALL] group_by_expression [, n]
<query specification I ( <query expression> )
[ UNION [ ALL ]<query specification I ( <query expression> )
[ n ] ]
ASC: sip xSp tang d~n
DESC: sip x~p giam d~n
Compute clause::=
[ COMPUTE
Trang 20•
••
BROWSE: cho phep thay d6i du li~u khi hiSn thi du li~u theo chS dQ contra
XML: kSt qua cua diu truy vdn duQ'ctra v~ theo dl;lngXML
Option clause::=
<query_hint> ::=
L~nh SELECT co chua cac phep toan va cac ham, chung duQ'c ghi trongcac m~OOd~ SELECT, WHERE, GROUP BY, HAVING va ORDER BY
h~ quan tri-CSDb-ma-cac cau truy vdn cling co S\fkhac bi~t v~-cach-viSt-:-M6ih~quan tri CSDL b6 sung mQt s6 cu phap d~c trung dS tang them tiOOnang cho cau
Trang 21ChU'ong 2: Van ph~m diu SELECT cua Oracle va Microsoft SQL 16
2.5.1 Bi~mkhac bi~tv~cac m~nhd~
2.5.1.1 M~nhd~SELECT
2.5.1.1.1 Bac ta bi danh cho cot
V 6i Oracle, nSu bi danh cQt khong duqc viSt trong dAu ngo~c kep ''''thi kSt qua bi danh cho cQt do se theo d~ng chfr hoa
V 6i Microsoft SQL thi khi d~c ta bi danh cho cQt nhu thS nao thikSt qua vfin khong thay d6i
SQL> select id as "rna so" , salary as select id as MaSo, salary as
select 3+54+8 as "Cong" SELECT 65 AS "Cong"
from dual;
2.5.1.2 M~nhd~FROM
2.5.1.2.1
Thi~um~nhd~-From -Cau truy vAn cua Oracle b~t bUQc phai co m~nh dS FROM
Nhung m~nh dS FROM trong cau truy vAn cua SQL thi co thSkhong co v6i diSu ki~n m~nh dS SELECT chi chua cac h~ng, biSn, biSu thuc s6hQCrna khong cftn tham khao dSn cQt nao cua CSDL
Oracle co cung cAp bang DUAL Bang DUAL trong lugc d6 cuauser SYS g6m 1 cQt DUMMY va 1 hang chua gia tri "X" MQi user dSu co thStruy xuAt t6i bang nay khi mu6n nh~n vS duy nhAt 1 tri dfr li~u khong thuQc bangdfr li~u cua user, nhu kSt qua cua biSu thuc, h~ng,
Trang 22Chua-ng 2: Van ph~m diu SELECT cua Oracle va Microsoft SQL 17
Vi d•.•2.3 Oracle
select cos(90) from dual
select cos(90)
2.5.1.2.2 Bi danh cua bang d~n xudt
M~nh de From cua Oracle khong cfrnd~t bi danh cho bang dftn xufit.Microsoft SQL Server b~t bUQcphai d~c ta bi danh cho bang dftn xufit
Vi d•.•2.4
2.5.1.3 Mfnh d~ WHERE
• cfiu truc outer joins cua Oracle:
[<table 1> (LEFT IRIGHT) OUTER JOINS <table 2> ON <condition>]
Ho~c dUng ki hi~u:
Trong SQL, tocintu *= duQ'cdung dS chi "left outer join", =* dS chi "rightouter join"
Vi d•.•2.5: Chuy~ndai Right outer join
select a.last_name as "Nhan vien", select a.last_name as "Nhan vien",b.last name as "Phu trach"- b.last name as "Phu trach"-
Vi d•.•2.6: Chuy~ndai Left outer join
select a.id as "Ma so", a.name as select a.id as "Ma so", a.name as
Trang 23ChlfO'Dg2: Van ph~mdiu SELECT clla Oracle va Microsoft SQL 18
Vi dl}2.7: Chuy~nd8i Full outter join
select a.last name as "Nhan vien", select a.last name as "Nhan vien",
b.last name as "Phu trach" b.last name as "Phu trach"
Vi dl}2.8: Xuit 5 gia tri luo-ngd~utien trong bang s_emp
2.5.1.5 M~nh d~ ORDER BY
cQt co th~ chua gia tri r6ng-khi-s~p;r8p-tang dAnho?c giam dAn
Nhung Microsoft SQL thi kh6ng cAn vi khi s~p x8p tang dAn thi gia trir6ng dung sau tftt ca cac gia tri, s~p x8p giam dAnthi gia tri r6ng dUng tru6c tftt
ca cac gia trio
Vi dl} 2.10
Trang 24ChU'O'ng2: Van ph~mdiu SELECT cua Oracle va Microsoft SQL 19
2.5.2. Ili~m khac bi~t v~cac toan til'va tir khoa
So sanh v6i bat ki
phfin tu nao thuQc
t~p hgp
So sanh v6i mQi
phfin tu trong t~p
hgp
So sanh giong chu6i
So sanh khong giong
ALL
LIKENOT LIKE
ANDyNOT
ANDyEXISTS
Microsoft Sql Server
*, /, +, +, -
OR
INNOT INANY, SOME
ALL
LIKENOT LIKE
x
xxx
x
x x
xxx
x x
x
x
xx
x
x
x
Trang 25ChuO'ng 2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 20
Chti thich: x: da:xu ly trong de tai
sang Microsoft SQL Server
select last_name II ' , II first_name as select last name + ' , + first name as-
ngon ngfr Oracle sang Microsoft SQL Server
tan t~i
giao gifra 2 cauSELECT, rna chi
co ham giao t~phQ'Pla
INTERSECT( set
1, set 2 [, ALL] )
trung
Trang 26Chuong 2: Van ph~mdiu SELECT clla Oracle va Microsoft SQL 21
Vi dl} 2.13: Chuy~n dAi ti•. khoa not in, til' ngon ngfr Oracle sang Microsoft SQL Server
select c.name as "Ten", c.short_desc select c.name as "Ten", c.short_desc as
where ( a.ord _id =b.id ) where ( a.ord_id =b.id )
and ( b.date _shipped like '%SEP-92' and ( b.date_shipped like '%SEP-92' ) )) )
2.5.3 Di~m khac bi~t v~ ki~ti du Ii~u
VARCHAR2(n) Chu6i ki tv co chieu dfli tay doi den n VARCHAR
ki tv.Chi8u did t6i da la 2000 ki tv.
Cong Nguyen, co chua thong tin v8
.,
glO
2 gigabyte ho~c 231 - 1 Chi co m9tc9t kiSu LONG trong m9t bang
Trang 27ChtrO'ng2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 22
va LONGRAW LONG theo thli tlJtuang ling, nhung IMAGE
dung d~ luu dfr li~u d?ng byte ho~cdfr li~u nhi phan nhu hinh anh db h<;>ahay am thanh ki thu?t s6
2.5.4 J)i~m khac bi~t v~ ham
Server
Thvc hi~n AND tren tUng bit BITAND(argl, arg2) Khong h6 trg
Cat n den vi tri m tinh tiT dau TRUNC(n [,m]) Khong h6 trg
th?p phan
Trang 28ChD'O'Og2: Van ph~m CaDSELECT clla Oracle va Microsoft SQL 23
2.5.4.2 Ham ki tt}'v6'i gia trj tra v~ la ki tt}'
ki tv
thuOng
chiSu dai char I b~ng n
M~c dinh char2 la
khoang tr~ng
char til tnii sang cho den
khi g~p ki tv cua char
khac v6i set
d~ng rieng cho tUng kiSu
chuySn d6i
thuOng v6i ~nlsparam~la- -'nlsparam'])
dinh d~ng rieng cho tilng
kiSu chuyAnd6i
char
dinh d~ng reing cho tUng
Trang 29ChuO'ng 2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 24
kieu chuyan doi
M~c dinh char2 la
khoang tr~ng
char tu phai sang cho
dSn khi g~p ki tv cua
char khac v6i set
2.5.4.3 Ham ki t., vo-ighi trj tni v~ la sa
Trang 30ChU'O'Dg2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 25
vS la kiSu byte
theo kiSu byte
Vi dl}2.16
from dual;
2.5.4.4 Ham ngay thang
them n thang
cling cua thang
dinh d~ng cua fmt
Vi dl} 2.17
from dual;
Trang 31,
•
2.5.4.5 Ham chuy~n dAi
n sang mam
date
number
2.5.4.6 Ham xii'If gia tri rang
thi tra vS null, ngugcl~i tra vS expr 1
Vi d\l2.18
Trang 32Chu<Yng2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 27
Chli thich: Kh6ng h6 tr(Y: bao g6m nhfmg ham chua xu ly dugc cua de tai vanhfmg ham Microsoft SQL khong co
select variance( 957) from dual
2.6 Cac phep toan dai sA quan he duO'c sil' dung d~ phan tich cau truy vdnthanh cay toan til'
2.6.1 Phep chQn
Cho mQt quan h~ r tren mQt lugc d6 quan h~ R va dieu ki~n F (la mQt biSu
thuc lu~n ly co gia tri la true ho~cfalse) bao g6m:
- Cac toan h:;mg la cac h~ng, ho~c cac ten thuQc tinh cua lugc d6 quan
h~R.
- Cac phep toan so sanh =, i-, <, :::;,>, ~
_ - C~c ph~Q toan lu~n ly note -,), and(/\), or(v) _
Phep chQn tren r theo dieu ki~n F, ki hi~u la crEi.r), cho kSt qua la mQtquan h~ bao g6m cac bQ cua r th6a man dieu ki~n F la true.
crEi.r)= {u Iu E r va F(u) = true}
Trong do F( u) la dieu ki~n co dugc b~ng cach thay thS cac ten thuQc tinh
trong dieu ki~n F boi cac gia tri tuang l'rng trong bQu.
•
Trang 33ChU'ong 2: Van ph~m diu SELECT clla Oracle va Microsoft SQL 28
2.6.2 Phep chi~u
cac thuQc tinh X= {AjI, Aj2, , Ajn} v6iiI, 12, ,in la cac s6 nguyen phan bi~t va
Phep chiSu ffiQtquan h~ r tren ffiQtt~p thuQc tinh ~ ki hi~u la ITx(r), cho
kSt qua la ffiQtquan h~ bao g6ffi cac bQU (UI, U2, , Un) sao cho t6n tl;liffiQtbQ v
(VI V2, , v m) trong r de Ui= vi) v6i i= 1,2, ,n.
ITx(r) = {u 13v E r: U =v[X]}
quan h~ r va s, ki hi~u la r us, la ffiQtquan h~ bao g6ffi cac bQcua r hay cua s.
r U s = {u I U E r hay U E s}
Phep hgp co tinh giao hoan
2.6.4 Phep hieu
quan h~ r cho s, ki hi~u la r - s, la ffiQtquan h~ bao g6ffi cac bQ cua r khong co trong s.
r - s = {u IU E r va U ~ s}
Phep hi~u khong co tinh giao hoan
2.6.5 Phep tich Descartes
quan h~ S (B I, B 2, , B n).
Phep tich Descartes cua hai quan h~ r va s, ki hi~u la r x s, la ffiQtquan h~
tren lugc d6 T (AI, A2, , Am; B I, B 2, , B n) bao g6ffi cac bQU sao cho m thanh
pli~n-d~u tielna- ffiQtbQ cua r va n thanh pli~n cu6i clingla ffiQtOQ- cua s.
Phep tich Descartes co tinh giao hom
Trang 34ChUO'Dg2: Van ph~m diu SELECT cua Oracle va Microsoft SQL 29
Phep giao cua hai quan h~r va s co thS duQ'c tinh tir phep hi~u nhu sau:
r n s =r - (r - s) =s - (s - r)
Phep giao co tinh giao hoan
2.6.7 Phep k~t-e
Cho quan h~ r tren 1uQ'cd6 quan h~R, quan h~ s tren 1uQ'cd6 quan h~Sva
T =R u S(cac thuQc tinh cua R duQ'c xem 1a khac v6i cac thuQc tinh cua S),8 1amQt phep so sanh (=, 7=,<, ~, >, ~), A E R va B E S1a hai thuQC tinh co thS sosanh v6i nhau boi phep 8
Phep kSt-8 cua r va s tren hai thuQc tinh A va B, ki hi~u 1a r cc ABB s, cho
kSt qua 1a mQt quan h~ tren 1uQ'cd6 quan h~ T bao g6m cac bQ t nhu sau:
Cho quan h~ rtren 1uQ'cd6 quan h~R, quan h~ stren 1uQ'cd6 quan h~Sva
T=R uS(R va Sco thS co cac thuQc tinh chung)
Phep kSt tv nhien cua r va s, ki hi~u 1ar cc s, cho kSt qua 1a mQt quan h~
v6i t r = t[R] va t s = t[S].
Dinh nghTa clla phep kSt tv nhien khong doi hoi hai t~p thuQc tinh R va S
giao nhau khac r6ng NSu R n S=0 thi r cc s 1a phep tich Descartes clla r va s.
Phep kSt tv nhien Clla hai quan h~ r va s co thS duQ'c tinh ill phep tich,
-phep ch<;mva phep chiSu nhu sau:
Trang 35ChU'O'Dg2: Van ph~m diu SELECT cua Oracle va Microsoft SQL 30
Cho quan h~ r tren lugc d6 quan h~ R, quan h~ s tren lugc d6 quan h~ S, 8
la m(>tphep so sanh (=, *-, <, ~, >, 2), A E R va B E Sla hai thu(>c tinh co th~ sosanh v6i nhau boi phep 8
Phep m:ra kSt-8 cua r va s tren hai thu(>c tinh A va B, ki hi~u la r c< ABB s,
cho kSt qua la m(>t quan h~ tren lugc d6 quan h~ R nhu sau:
r c<ABB S = {u I U E r va::Jv E S v6i u[A] 8 v[B]}
Phep m:ra kSt-8 cua hai quan h~ r va S co th~ dugc tinh tu phep kSt-8 vaphep chiSu OOu sau:
r c< ABB S= DR (r CC ABB s)
Phep m:ra kSt-8 khong co tinh giao hoan
2.6.10 Phep nu'a k~t tt}'nhien
Cho quan h~ r tren lugc d6 quan h~R, quan h~ Stren lugc d6 quan h~ Sva
X=RnS*-0.
Phep m:ra kSt t\1 nhien cua r va s, ki hi~u la r c< s, cho kSt qua la m(>t quan
h~ tren lugc d6 quan h~ R nhu sau:
r c< S = {u I U E r va::Jv E S v6i u[X] =vEX]}
Phep m:ra kSt t\1 OOien cua hai quan h~ r va S co th~ dugc tiOO tu phep kStt\1 nhien va phep chiSu OOu sau:
r c< S =DR (r cc s)
Phep m:ra kSt t\1 nhien khong co tiOOgiao hoan
2.6.11 Phep chia
Cho quan h~ r tren lugc d6 quan h~ R (AI, A 2, , Ak, Ak+I, , Am) va quan
h~Stren lugc d6 quan h~S(AJ, A 2, , Ak).
Phep chia quan h~ r cho S v6i S *- O, ki hi~u la r + s, cho kSt qua la m(>t
quan h~ tren lugc d6-quan h~ T-(A k +-I, -, Am) bao g6m cac b(> (Uk+I, , um) sao
cho d6i v6i t<1tca cac b(>(uJ, " Uk) thu(>c s thi b(>(UI, , Uk, Uk+I, ,' Um) thu(>c r.
Phep chia quan h~ r cho s co th~ dugc tinh tu cac phep chiSu, phep tich,phep hi~u
Phep chi a khong co tinh giao hoan
Trang 36ChU'O'Dg2: Van ph~mdiu SELECT ella Oracle va Microsoft SQL 31
K~t Luan: Chuang nay da: gi6i thi~u duqc van phl;lm diu truy vein cua Oracle vaMicrosoft SQL D6ng thai cling trinh bay nhiing diSm khac bi~t giua hai diutruy vein Vi~c thlJc hi~n chuySn d6i se duqc neu ra trong chuang 3
Trang 37,,, ;;{;t A s:.
Chtrongd:, QUA TRINH CHUYEN DOl CAU TRUY VAN
Cau troy vfut Oracle
KiSm tra 16iCau troy van dung
Phfin tich cau truy van thanh cay cu phap & cay toan tu
Truy vfut da duQ'Cphan tich
thanh cay cu pha & cay toan tu
ChuySn d6i cac diSm khac nhau vS hamCay toan tu co cac ham
da duQ'cchuySn d6i
ThlJc hi~n chuySn d6i cac diSm khac bi~t vS tu khoa
Cay toan tu co cac tu khoa
da duQ'cchuySn d6i
ChuySn d6i cac diSm khac nhau vS toan tu
Cay toan tu co cac toan tu
da duQ'CchuySn d6i
ChuySn d6i cac diSm khac bi~t con l~i
Truy van d~i s6 quan h~
Trang 38Vi dl} 3.2
Select id, last_name, MAX( salary)
From s_emp
Goup by id;
-> L6i: last_name khong n~m trong ham
nhom va cling khong n~m trong Group
3.2.1 Ki~m tra lai
~ Du li~u vao: cau truy vfuI Oracle
~ Du li~u ra: cau truy vfin Oracle da kiSm tra 16i
Cac buac kiSm tra:
Trang 39Dun
Select nameFrom s_dept
Select e.id, e.1ast_nameFrom s_emp e, s_dept d
Select last nameFrom s_emp;
Select id, last_nameFrom s_emp;
-> L6i: khon tBn t~i ban
Select last name
From s_dept;
=> L6i: last name khong tBn t~i trong table
s de t
Select id, e.1ast_name
From s_emp e, s_dept d
Select id, last_name
From emp;
=> L6i: id la ki~u number, khong th~ so sanh duQ'c
vm bi~u thuc chu6i
Select name
From s_dept
Where id ='abc'.,
• SlJ tBn t~i cua cac d6i tuqng dii li~u
cac cQt duQ'c su d\lllg co tBn t~i trong cac bang tuang trng trong cau truy vfuI haykhong NSu khong tBn t~i, Oracle se bao 16i va dUng xu ly
Vi dy 3.4
Chtr01lg 3: Qua trinh chuy~n dAi diu truy vin
3.2.1.2 Ki~m tra S,! hC}'P I~
• Ki~u dii li~u
Ki~m tra xem ki~u dii li~u cua mQt phep toan co tuang thich v6i ki~u dii
16i va ngung xu ly
Vi dy 3.3
Trang 40tUng token
1 Class token: chua thong tin xac dinh m~nh de Clla cau
35
s dept deu co cQt id
Where a.id = b.id;
=> L6i: khong d~t bi danh cho bang khi su d\lng
inner join
3.2.2 Phan tich cau truy v~n
Cach thlfC hienBl: Hinh thanh cac token chua cac m~nh dS clla cau truy vfin
B1.1: Xac dinh vi tri Clla cac m~nh dS trong cau truy vfinB1.2: Xac dinh cac chu6i sau m~nh dS
khoa, toan tu t6n ~i trong cau truy vfin
B3: Xac dinh cfiu truc ham CllatUng token
B4: Gom cac node co trong cac token hinh thanh cay toan tu clla