第 八 章 合併理論與實作
DESCRIPTION
第 八 章 合併理論與實作. 課程名稱: 資料庫系統 授課老師:李春雄 博士. 本章學習目標. 1. 讓讀者瞭解 View 視界的概念 及 View 與 ANSI/SPARC 架構 的關係 2. 讓讀者瞭解 兩個及兩個以上資料表 如何進行 查詢 的動作。. 本章內容. 8-1 關聯式代數運算子 8-2 非集合運算子 8-3 集合運算子 8-4 巢狀結構查詢 8-5 View 視界. 前言 . - PowerPoint PPT PresentationTRANSCRIPT
-
1.ViewViewANSI/SPARC 2.
-
8-1 8-2 8-3 8-4 8-5 View
-
SQLSQL
-
8-1 8-1
SQL
(Restrict)(Project)(Cartesian Product)(Join)(Division)(Union)(Intersection)(Difference)
-
8-2 1.(Restrict)2.(Project)3.(Cartesian Product)4.(Join)5.(Division)
-
8-2.1(Restrict) () (sigma)Pp(R)R () SQL Where (AND, OR , NOT)
-
R (Predicate) PR
SQLPp(R)SELECT FROM RWHERE P //
-
3
SQL
SQL=3() SELECT *FROM WHERE ='3'
-
8-2.2 (Project) R (pai)RA1A2A3An A1,A2,A3An(R)R () SQLSelect From
-
RR
SQLSELECT //FROM
(R)
-
SQL
SQL() SELECT ,FROM
-
8-2.3 (Cartesian Product)R1R2 R3(Cartesian Product) (Cross Product)(Cross Join) R1r1mR2r2nR3 rrm n R3=X SQLSELECT * FROM A,B
-
R1r1mR2r2nR3rrm n
1 2SELECT *FROM A,BSELECT *FROM A CROSS JOIN B
-
1.R1 () R2 () R1 () R2 ()=R3 R1(r=3)(m=2)R2(r2=3)(n=3) R3rr=6 R3(..) R3m n=6
-
(2)(3)(23)=6
6
-
C001(C002,C003)(Inner Join)
-
2.SQL
SQL Server
SQL1.
2. CROSS JOIN --1.SELECT *FROM ,--2.SELECT *FROM CROSS JOIN
-
8-2.4 (Join) R1R2R3PR1 pR2 R3= R1 pR2 SQLSELECT * FROM A,B WHERE P
-
()
-
(FKPK)
()Inner Join() ()Outer Join() 1. 2. ()Join Itself()
-
(FKPK) ()Cross Join() ()Union() ()Intersect() ()Except()
-
8-2.4.1 (Inner Join) (Inner Join)(Condition Join)Outer join
().=. ().60< ().= ().>=60
-
1.SELECTWHERE(Equi-Join)
2.SELECTFROMINNER JOIN(Natural Join)(Inner Join)From A ,BWhere (A.c=B.c)From A INNER JOIN BON A.c=B.c
-
1. .=..=.
-
2.SQL (1)(Equi-Join)
(2)INNER JOIN
Select ,,.,,From ,Where .=.SELECT ,,.,,FROM INNER JOIN ON .=.
-
3. () ? ? () ? , , ,
ch8-2.4.1A.accdbSELECT *FROM AS A, AS B
-
(Join) Where
SELECT *FROM AS A, AS BWHERE A.=B.SELECT *FROM AS A, AS BWHERE A.=B.And B.>=7054
-
SELECT A., , , FROM AS A, AS BWHERE A.=B.And B.>=70SELECT A., , AVG() AS FROM AS A, AS BWHERE A.=B.And B.>=70GROUP BY A., (85+100)/2=92.5
-
SELECT A., , AVG() AS FROM AS A, AS BWHERE A.=B.And B.>=70GROUP BY A., HAVING AVG()>=70SELECT A., , AVG() AS FROM AS A, AS BWHERE A.=B.And B.>=60GROUP BY A., HAVING AVG()>=70ORDER BY AVG() DESC;70()
-
4. (Inner Join)
-
8-2.4.2 (Outer Join) (Join)NULL
-
1.(Left Outer Join ) 2.(Right Outer Join ) 3.(Full Outer Join )
-
SELECT *FROM A [RIGHT | LEFT | FULL] [OUTER ][JOIN] B ON A.PK=B.FK
-
1
ch8-2-4-2.accdb
-
()(Tuples)NULL()1. Access2007SQL Server 2008
-
2.SQL
SELECT *FROM AS A LEFT JOIN AS B ON A.=B.
-
2SQL
1.
-
2.SQL
3.
--1.1()SELECT A.,A.FROM AS A LEFT OUTER JOIN AS B ON A.=B.WHERE B. IS NULL
-
1
-
()(Tuples)NULL()1. Access2007SQL Server 2008
-
2.SQL
--2.SELECT *FROM AS A RIGHT JOIN AS B ON A.=B. ORDER BY B.
-
2SQL
1.
-
2.SQL
3.
--2.1()SELECT B.,B.FROM AS A RIGHT OUTER JOIN AS B ON A.=B.WHERE A. IS NULL
-
1
-
(Tuples)NULL()1.
-
2.SQL
SELECT *FROM AS A FULL OUTER JOIN AS B ON A.=B.;FULL OUTER JOINSQL Server
-
8-2.4.3(Join Itself)
-
()
3333
1Null2132425363738395104
-
1
SELECT A. AS , B. AS , B.FROM AS A LEFT JOIN AS B ON A.=B.WHERE A.=
-
2()SELECT , , , (Select from B where A.=B.) AS FROM AS A;
-
3()SELECT A., A., A., B. AS FROM AS A LEFT JOIN AS B ON A.=B.;
-
4()SELECT A. AS , B. AS FROM AS A LEFT JOIN AS B ON A.=B.; -- A,B
-
5()SELECT A. AS , A., B. AS FROM AS A, AS BWHERE A.=B. AND Right(A.,2)=''; -- A,B
-
8-2.5 (Division) R1 R2 R1R2 SQL Select WhereNOT EXISTS NOT(Divide)
SQL(Divide) (Divide)FORALLWHERENOT EXISTSNOT
-
R1 R2
-
SELECT FROM WHERE NOT EXISTS (SELECT * FROM WHERE NOT EXISTS (SELECT * FROM WHERE .1=.1 AND .2=.2))
-
1
-
() () () ?
-
2(60)
-
() () 60() ? ?
-
(60)
S0001C00573S0002C00292S0002C00563S0003C00492S0003C00570S0004C00375S0004C00488S0004C00568S0005C00560
#1S0001C00156#2S0001C00573#3S0002C00292#4S0002C00563#5S0003C00492#6S0003C00570#7S0004C00375#8S0004C00488#9S0004C00568#10S0005C00560
-
(Join)
-
EXISTS
-
EXISTS
FOR ALL(NOT EXITSTS NOT)
.C0054C0054C0054C0054
4
-
307
-
() ? LIKE '07'() ()
-
07
C0207-7878788C0307-6454555C0507-3355444
-
(Join)
-
EXISTS
-
EXISTS
FOR ALL(NOT EXITSTS NOT)
.C0207-7878788C0507-3355444
-
8-3 1.(Intersection)2.(Union)3.(Difference)
-
8-3.1(Intersection) R1R2 ()R3 R1 R2 SQLFrom R1 Intersect R2
-
SQLABSelect *From A Intersect B
-
9798 97 98
SQLSELECT * FROM [97]INTERSECTSELECT * FROM [98]
-
8-3.2(Union) R1R2 R3R3 R1 R2 SQLFrom R1 Union R2
-
SQL
SQLABSelect *From A Union B
-
9798 97 98
SQLSELECT * FROM [97]UNIONSELECT * FROM [98]
-
8-3.3(Difference) R1R2 RR1R2 R1R1R2 R1 R2 SQLFrom R1 Except R2
-
R1R1R2R1-R2R1-(R1R2)
SQLABSelect *From A Except B
-
9798 97 98
SQLSELECT * FROM [97]ExceptSELECT * FROM [98]
-
1
-
1
(1) (2)
-
2 ?
-
2 ?(1)()(2)()
-
8-4 Where 1.(=)2.(IN)3.(EXIST)
-
SQL
ch8-4.accdb
-
Access
-
8-4.1 ==Where
-
18-4
SQLSELECT A., FROM AS A, AS BWHERE A.=B. AND B.=(SELECT C. FROM AS C WHERE = '');
-
1
SQL
ch8-Score.accdb
SQLSELECT *FROM WHERE > (SELECT AVG() FROM );
-
2
SQL
ch8-Score.accdb
SQLSELECT *FROM WHERE = (SELECT MAX() FROM );
-
VB2005VB2008SQL
[] ch8-4.sln
-
8-4.2 IN INININ
-
(IN) 8-4
SQLSELECT A., FROM AS A, AS BWHERE A.=B. AND B. IN(SELECT C. FROM AS C WHERE LIKE '*');
-
8-4.3 EXIST TRUEFALSETRUEFALSE
-
EXISTS8-4
TRUE
SQLSELECT DISTINCT A., FROM AS A, AS BWHERE A.=B. AND EXISTS(SELECT C. FROM AS C WHERE ='');
-
8-4.4 ALLANY ()ALLANY ALL1 A >ALL BA25 60 80 100B 30 50
A >ALL BAB{60,80,100}
-
1
SQLSELECT , , FROM WHERE >ALL (SELECT FROM );
- ALL2 A
-
2
SQLSELECT , , FROM WHERE
-
ANY1 A >ANY BA25 60 80 100B 30 50
A >ANY BAB{60,80,100}
-
3
SQLSELECT , , FROM WHERE >ANY (SELECT FROM );
- ANY 2 A
-
4
SQLSELECT , , FROM WHERE
-
__
-
1EXISTSP3 8-4
1. (1) (2)2.
() ?() || 'P3'()
-
[]
[1]TrueFalse
Select DISTINCTFromWhere.=.AND ='P3'
-
(True)
-
2INP3 8-4
1. (1) (2)2.
() ?() || 'P3'()
-
[]
(JOIN)Select DISTINCTFromWhere.=.AND ='P3'
(IN)SELECT DISTINCT FROM StepWHERE . IN(SELECT .FROM StepWHERE ='P3')
-
(P3)
IN
.S1S4S5
-
3EXISTSP38-4 NOT EXISTS
Select DISTINCTFromWhere NOT EXISTS(Select * From Where.=.AND ='P3')
-
4INP38-4
1. (1) (2)2.
() ?() || 'P3'()
-
[][] [2]
NOT INSELECT DISTINCT FROM WHERE . NOT IN(SELECT .FROM WHERE ='P3')
-
5IN8-4
1. (1) (2)2.
() ? Step () Step() || Step '
-
[]
(JOIN)SELECT DISTINCTFROM,,WHERE .=.AND.=.AND=''
(IN)SELECT DISTINCT FROM StepWHERE . IN(SELECT .FROM StepWHERE . IN(SELECT .FROM StepWHERE=''))
-
IN
IN
P3
.S1S4S5
-
8-5 View ViewViewView ViewANSI/SPARC(View Table)ANSI/SPARCExternal Level
-
8-5-1VIEW (View)(Base Table) (View Table)SQL
-
(Base Table)SQL
-
(View Table)(Base Table)View Select SQL
-
8-5-2 View View1. 2. 3. ()4.
**
***********(Join)(Cartesian Product)(Cross Product)(Cross Join)
***********************************************************************************************************************