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 );
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 );
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)
***********************************************************************************************************************