第 4 章 数据库的查询和视图

Download 第 4 章 数据库的查询和视图

If you can't read please download the document

Upload: august-lester

Post on 09-Mar-2016

129 views

Category:

Documents


10 download

DESCRIPTION

第 4 章 数据库的查询和视图. 4.1 连接、选择和投影. 4.2 数据库的查询. 4.3 数据库视图. 4.4 格式化输出结果. 4.1 连接、选择和投影. 4.1.1 选择 选择( Selection ),简单地说就是通过一定的条件把自己所需要的数据检索出来。选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表,作为运算结果。 【 例 4.1】 学生情况表如表 4.1 所示。. 表 4.1 学生表. 4.1.1 选择. - PowerPoint PPT Presentation

TRANSCRIPT

  • 4.1.1 Selection4.1 4.1

    4.1

    104215 741042118210421088

  • 804.2

    4.2

    10421182

  • 4.2 4.14.3

    4.3

    748288

  • JOIN4.3 AB4.44.5T1=T34.6

    4.4 A

    4.5 B

    4.6

    T1T21A6F2B

    T3T4T513M20N

    T1T2T3T4T51A13M2B20N

  • 4.4 AB4.74.8C4.9

    4.7 A

    4.8 B

    4.9 C

    T1T2T310A1B15A1C220D2C2

    T1T4T5T61100A1D11002B2C1200A2D1510A2C2

    T1T2T3T4T5T65A1C210A2C220D2C20A2D1

  • SELECTPL/SQLSELECTSELECT select_list /**/FROM table_source /*FROM*/[ WHERE search_condition ] /*WHERE*/[ GROUP BY group_by_expression ] /*GROUP BY*/[ HAVING search_condition ] /*HAVING*/[ ORDER BY order_expression [ ASC | DESC ]] /*ORDER*/

  • SELECTSELECTSELECT [ ALL | DISTINCT ] select_listselect_list{ * /**/ | { table_name | view_name | table_alias } . * /**/ | { colume_name | expression } [ [ AS ] column_alias ] /**/ | column_alias = expression /**/} [ , n ]

  • 1SELECTSELECT column_name [ , column_name [,n] ]FROM table_name[WHERE search_condition]4.5 XSCJXSXMXHZXFSQL Developersystem_oraSQL WorksheetSELECT XH, XM, ZXF FROM XSB;

  • 4.1ResultsXSB

    4.1 XSB

  • 4.6 XSBZXF50XHXMZXFSELECT XH, XM, ZXFFROM XSBWHERE ZXF>50;

  • 4.7 XSBSELECT * FROM XSB;SELECT XH, XM, XB,CSSJ, ZY, ZXF,BZFROM XSB;

  • 24.8 XSBXHXMZXFSELECT XH AS ,XM AS ,ZXF AS FROM XSBWHERE ZY= '';ASSELECT XH , XM , ZXF FROM XSBWHERE ZY='';

  • 3SELECTSELECTSELECT expression [ , expression ]4.9 CP4.10

    4.10 CP

    CPBHchar(8)CPMCchar(12)JGnumber(8)KCLnumber(4)

  • CP4.114.11 CP

    CPBHCPMCJGKCL10001100A_1001500.0050010002120A_2001850.0020020011001K_12002680.0030020012000K_21003200.00100030003001L_1505000.0010010001200B_2001600.00120010001102C_2101890.0060030004100L_2104800.0020020001002K_30013800.0028020011600K_16004200.001500

  • SELECT CPMC AS , JG * KCL ASFROM CP;+-*/SELECT CPBH, JG*0.8 FROM CP8

  • 4XSCJXSBZYZXFDISTINCTSELECT DISTINCT column_name [ , column_name]DISTINCT4.10 XSCJXSBZYZXFSELECT DISTINCT ZY AS ,ZXF AS FROM XSB;

  • 4.11 SELECTXSCJXSBZYZXFSELECT ALL ZY AS ,ZXF AS FROM XSB;

  • WHEREFROMWHERE { [ NOT ] | ( ) } [ { AND | OR } [ NOT ] { | () } ]} [ ,n ]TRUEFALSEUNKNOWN{ expression { = | < | | >= | | != } expression /**/ | string_expression [ NOT ] LIKE string_expression [ ESCAPE 'escape_character' ] /**/ | expression [ NOT ] BETWEEN expression AND expression /**/ | expression IS [ NOT ] NULL /**/ | expression [ NOT ] IN ( subquery | expression [,n] ) /*IN*/ | EXIST ( subquery ) /*EXIST*/}

  • 17==!=expression { = | < | | >= | | != } expression4.12 CP500SELECT * FROM CP WHERE KCL >500; XSB42SELECT * FROM XSB WHERE ZY= '' AND ZXF>=42;

  • 2LIKEcharvarchar2dateTRUEFALSELIKEstring_expression [ NOT ] LIKE string_expression [ ESCAPE escape_character ]4.13 CPSELECT * FROM CP WHERE CPMC4.14 XSB LIKE '%%';SELECT * FROM XSB WHERE XM LIKE '_';

  • 3BETWEENINBETWEENBETWEENexpression [ NOT ] BETWEEN expression1 AND expression2NOTexpressionexpression1expression2TRUEFALSENOT

  • 4.15 CP20004000SELECT * FROM CP WHERE JG BETWEEN 2000 AND 4000; XSB1989SELECT * FROM XSB WHERE CSSJ NOT BETWEEN TO_DATE('19890101', 'YYYYMMDD') AND TO_DATE('19891231', 'YYYYMMDD');INTRUEFALSEINexpression IN ( expression [,n])

  • 4.16 CP200300500SELECT * FROM CP WHERE KCL IN (200,300,500);SELECT * FROM CP WHERE KCL=200 OR KCL=300 OR KCL=500;

  • 4IS NULLexpression IS [ NOT ] NULLNOTexpressionTRUEFALSENOT4.17 XSCJSELECT * FROM XSB WHERE ZXF IS NULL;

  • 51ININexpression [ NOT ] IN ( subquery )subqueryexpressionsubqueryINTRUEFALSENOT4.18 XSCJ101SELECT * FROM XSBWHERE XH IN ( SELECT XH FROM CJB WHERE KCH = '101' );SELECTSELECT XH FROM CJB WHERE KCH = '101';

  • 4.19 SELECT XH, XM, ZY, ZXF FROM XSBWHERE XH NOT IN ( SELECT XHFROM CJBWHERE KCH IN ( SELECT KCH FROM KCB WHERE KCM = '' ));

  • 2INexpression { < | | >= | != | } { ALL | SOME | ANY } ( subquery )expressionsubqueryALLSOMEANY4.20 SELECT * FROM XSBWHERE CSSJ
  • 4.21 206101SELECT XH FROM CJBWHERE KCH = '206' AND CJ>= ANY ( SELECT CJ FROM CJB WHERE KCH = '101');

  • 3EXISTSEXISTSEXISTSTRUEFALSEEXISTSNOTNOT EXISTSEXIST[ NOT ] EXISTS ( subquery )4.22 206SELECT XM FROM XSB WHERE EXISTS ( SELECT * FROM CJB WHERE XH=XSB.XH AND KCH= '206' );

  • 4.23 SELECT XM FROM XSB WHERE NOT EXISTS ( SELECT * FROM KCB WHERE NOT EXISTS ( SELECT * FROM CJB WHERE XH=XSB.XH AND KCH=KCB.KCH) );

    1 2

  • Select kcmFrom kcbWhere not exists(select * from xsb where not exists(select * from cjb where kcb.kch=cjb.kch and xsb.xh=cjb.xh))Select kcmFrom kcbWhere exists(select * from xsb where not exists(select * from cjb where kcb.kch=cjb.kch and xsb.xh=cjb.xh))

  • 4.24 101102yx101102ySELECT DISTINCT XHFROM CJB CJ1WHERE NOT EXISTS( SELECT *FROM CJB CJ2WHERE CJ2.XH ='101102' AND NOT EXISTS ( SELECT *FROM CJB CJ3WHERE CJ3.XH= CJ1.XH AND CJ3.KCH = CJ2. KCH));

    95002Y95001X

  • Select xm from xsb where Not exists(select * from cjb where xsb.xh=cjb.xh and xsb.xh=950002

  • 4.25 XSB199011SELECT XM, ZYFROM (SELECT * FROM XSBWHERE CSSJ
  • 1SELECTWHERE4.26 XSCJSELECT XSB.* ,CJB.* FROM XSB , CJB WHERE XSB.XH=CJB.XH;=!==

  • 4.27 SELECT XSB.* , CJB.KCH, CJB.CJ FROM XSB , CJB WHERE XSB.XH=CJB.XH;SELECTSELECT XSB.* , KCH , CJ FROM XSB , CJB WHERE XSB.XH = CJB.XH;

  • 4.28 20680SELECT XM AS ,CJ AS FROM XSB , CJB WHERE XSB.XH = CJB.XH AND KCH = '206 ' AND CJ >= 80;

  • 4.29 80SELECT XSB.XH, XM, KCM, CJ FROM XSB, KCB, CJB WHERE XSB.XH = CJB.XH AND KCB.CH = CJB. KCH AND KCM = '' AND CJ >= 80;

  • 2JOINPL/SQLJOIN ON | CROSS JOIN | table_sourcejoin_typeONjoin_type[ INNER | { LEFT | RIGHT | FULL } [ OUTER ] [ ] CROSS JOIN

  • 1ON4.30 XSCJSELECT * FROM XSB INNER JOIN CJB ON XSB.XH = CJB.XH;4.31 FROMJOIN20680SELECT XM , CJ FROM XSB JOIN CJB ON XSB.XH = CJB.XH WHERE KCH = '206' AND CJ>=80;

  • 4.32 FROMJOIN80SELECT XSB.XH , XM , KCM , CJ FROM XSB JOIN CJB JOIN KCB ON CJB.KCH = KCB.KCH ON XSB.XH = CJB.XH WHERE KCM = '' AND CJ>=80;4.33 SELECT a.XH,a.KCH,b.KCH,a.CJ FROM CJB a JOIN CJB b ON a.CJ=b.CJ AND a.XH=b.XH AND a.KCH!=b.KCH;

  • 2 LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN

  • 4.34 SELECT XSB.* , KCH FROM XSB LEFT OUTER JOIN CJB ON XSB.XH = CJB.XH;NULL4.35 SELECT CJB.* , KCM FROM CJB RIGHT JOIN KCB ON CJB.KCH= KCB.KCH;

  • 3124.36 SELECT XH, XM, KCH, KCM FROM XSB CROSS JOIN KCB;

  • 11SUMAVGSUMAVGSUM / AVG ( [ ALL | DISTINCT ] expression )4.37 101SELECT AVG(CJ) AS 101 FROM CJB WHERE KCH='101';

  • 2MAXMINMAXMINMAX / MIN ( [ ALL | DISTINCT ] expression )4.38 101SELECT MAX(CJ) AS 101, MIN(CJ) AS 101 FROM CJB WHERE KCH='101';

  • 3COUNTCOUNTCOUNT ( { [ ALL | DISTINCT ] expression } | * )4.39 SELECT COUNT(*) AS FROM XSB;COUNT(*) SELECT COUNT(DISTINCT XH) AS FROM CJB;

  • 85SELECT COUNT(CJ) AS 85 FROM CJB WHERE CJ>=85 AND KCH= ( SELECT KCH FROM KCBWHERE KCM= '');

  • 2GROUP BYGROUP BYGROUP BY [ ALL ] group_by_expression [,n]group_by_expressionALLGROUP BYSELECTGROUP BY4.40 XSCJSELECT ZY AS FROM XSB GROUP BY ZY;

  • 4.41 XSCJSELECT ZY AS ,COUNT(*) AS FROM XSB GROUP BY ZY;4.42 SELECT KCH AS , AVG(CJ) AS ,COUNT(XH) AS FROM CJB GROUP BY KCH;

  • 3HAVINGHAVING[ HAVING ] search_conditionWHEREHAVINGWHERE4.43 XSCJ85SELECT XH AS , AVG(CJ) AS FROM CJB GROUP BY XH HAVING AVG(CJ)>=85;

  • 4.44 80SELECT XH AS FROM CJB WHERE CJ>=80 GROUP BY XH HAVING COUNT(*) > 2;CJB802

  • 4.45 85SELECT XH AS ,AVG(CJ) AS FROM CJB WHERE XH IN ( SELECT XH FROM XSB WHERE ZY= '') GROUP BY XH HAVING AVG(CJ) > =85;

  • SELECTORDER BYORDER BY[ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,n ]4.46 SELECT * FROM XSB WHERE ZY= '' ORDER BY CSSJ;

  • 4.47 SELECT XM AS , KCM AS , CJ AS FROM XSB, KCB, CJB WHERE XSB.XH=CJB.XH AND CJB.KCH= KCB.KCHAND KCM= '' AND ZY= '' ORDER BY CJ DESC;

  • UNIONSELECT{ | ( ) }UNION [ A LL ] | ( ) [ UNION [ A LL ] | ( ) [n] ]query specificationquery expressionSELECTUNION 12

  • 4.48 101101101210SELECT *FROM XSBWHERE XH= '101101'UNION ALLSELECT *FROM XSBWHERE XH= '101210'

  • 4.3.1 12345

  • 1OEM1OEM2CS_XSSYSTEMSQL4.2

  • 34.34.3

  • 44.4

  • 2SQL DeveloperSQL DeveloperCS_XSSQL Developersystem_oraViewsNew ViewSchemaNameSQL QuerySQL4.5DDLSQL

  • ViewsCS_XSData4.6

    4.6 CS_XS

  • 3CREATE VIEWPL/SQLCREATE OR REPLACE VIEWCREATE [ OR REPLACE ] [FORCE | NOFORCE] VIEW [schema.]view_name [ ( column_name [ ,n ] ) ]AS select_statement[WITH CHECK OPTION[CONSTRAINT constraint_name]][WITH READ ONLY]select_statement

  • 4.49 CS_KC CREATE OR REPLACE VIEW CS_KC AS SELECT XSB.XH, KCH, CJ FROM XSB, CJB WHERE XSB.XH=CJB.XH AND ZY= '' WITH CHECK OPTION;4.50 CS_KC_AVGnumscore_avgCREATE OR REPLACE VIEW CS_KC_AVG(num, score_avg) AS SELECT XH, AVG(CJ) FROM CJB GROUP BY XH;

  • 4.51 SELECT XH,KCH FROM CS_KC;4.52 80XS_KC_AVGnumscore_avgCREATE OR REPLACE VIEW XS_KC_AVG ( num,score_avg ) AS SELECT XH, AVG(CJ) FROM CJBGROUP BY XH;

  • XS_KC_AVGSELECT * FROM XS_KC_AVG WHERE score_avg>=80;

  • 112SELECTGROUP BYONNECT BYSTART WITHDISTINCT3SELECT4CS_XSCS_KCCS_KC_AVG4.53 XSCJCS_XS1CREATE OR REPLACE VIEW CS_XS1 AS SELECT * FROM XSB WHERE ZY= '';

  • 2INSERT4.54 CS_XS'101115''''''1984-3-2'50''INSERT INTO CS_XSVALUES('101115', '', '',TO_DATE('19890302','YYYYMMDD'), '',50, '');SELECTCS_XSXSBSELECT * FROM XSB;

  • 3UPDATE4.55 CS_XS8UPDATE CS_XS SET =+ 8;CS_XSXSB84.56 CS_KC10110110190UPDATE CS_KC SET CJ=90 WHERE XH='101101' AND KCH='101';CS_KCXSBCJBCS_KCXSBCJBUPDATE CS_KC SET XH='101120', KCH='208' WHERE CJ=90;

  • 4DELETEDELETECS_KCDELETEXSBCJB4.57 CS_XSDELETE FROM CS_XS WHERE XB='';

  • 1OEM2SQL DeveloperViewsEditEdit ViewSQL QuerySELECT4.7

  • 3SQL4.58 CS_KCCREATE OR REPLACE FORCE VIEW CS_KCASSELECT XS.XH, XS.XM, XS_KC.KCH, KC.KCM, CJFROM XS, XS_KC, KCWHERE XS.XH=XS_KC.XH AND XS_KC.KCH=KC.KCH AND ZYM=''WITH CHECK OPTION;

  • 1OEM2SQL DeveloperDrop(D)3SQLPL/SQLDROP VIEWDROP VIEW [schema.]view_nameschemaview_nameDROP VIEW CS_KC;CS_KC

  • 4.4.1 1&SELECT&SELECT4.59 XSCJXSBSELECT XH AS , XM AS FROM XSBWHERE ZY=&specialty_name;SQL*Plus4.8

  • SELECTSELECT XH AS , XM AS FROM XSBWHERE ZY='&specialty_name';SET VERIFY4.60 80SET VERIFY ONSELECT * FROM XS_KC_AVG WHERE score_avg>=&score_avg;4.9

    4.9 WHERE1ORDER BY234SELECT

  • 4.61 SELECT XSB.XH, &name, KCM, &columnFROM XSB, KCB, CJBWHERE XSB.XH=CJB.XH AND &conditionAND KCM=&kcmORDER BY & column;4.10

    4.10

  • 2&&&&4.62 75SELECT &&columnFROM CJBWHERE CJ>=75GROUP BY &columnHAVING COUNT(*)>2;4.11

  • 3DEFINEACCEPT1DEFINECHARUNDEFINEDEFINE [variable[=value]]4.63 specialtyDEFINE specialty=DEFINE specialtyDEFINE SPECIALTY = "" (CHAR)4.64 specialtySELECT XH, XM, XB, CSSJ, ZXFFROM XSBWHERE ZY= '&specialty';

  • 2ACCEPTACCEPTNUMBERDATEACCEPT variable [datatype] [FORMAT format] [PROMPT text] [HIDE]4.65 ACCEPTnumACCEPT num PROMPT ''4.12

  • 1SET LINESIZE801325030SET PAGESIZE556030SET LINESIZE 50SET PAGESIZE 302TTITLETTITLE|TTITLE ''

  • 3BTITLE'---report1.sql---'BTITLE '---report1.sql---' RIGHT4.66 report1SELECT XSB.XH, XM, KCM, CJFROM XSB JOIN CJB JOIN KCB ON CJB.KCH=KCB.KCHON XSB.XH=CJB.XHWHERE KCM= '';

  • 4.13

  • 4COLUMNXSBXHXMCOLUMN XH FORMAT a8 WRAP HEADING ''COLUMN XM FORMAT a8 HEADING ''SELECT XH, XM, XB, CSSJ, ZYFROM XSBWHERE ZXF>=50;

  • 4.14