1 / 20

ORACLE

ORACLE. 单元五 数据库的查询和视图. 数据库的查询和视图. 1. select 案例:查询数据库的 XS 表中各个同学的 XM 、 XH 和 ZXF 。 SELECT XH, XM,ZXF FROM XS; 案例:查询 XS 表中 ZXF 大于 45 同学的 XH 、 XM 和 ZXF 。 SELECT XH,XM,ZXF FROM XS WHERE ZXF>45;. 数据库的查询和视图. 1. select 案例:查询 XS 表中的所有列。

cara
Télécharger la présentation

ORACLE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ORACLE

  2. 单元五 数据库的查询和视图

  3. 数据库的查询和视图 1.select 案例:查询数据库的XS表中各个同学的XM、XH和ZXF。 SELECT XH, XM,ZXF FROM XS; 案例:查询XS表中ZXF大于45同学的XH、XM和ZXF。 SELECT XH,XM,ZXF FROM XS WHERE ZXF>45;

  4. 数据库的查询和视图 1.select 案例:查询XS表中的所有列。 SELECT * FROM XS; 该语句等价于语句: SELECT XH,XM,ZYM,XB,CSSJ,ZXF,BZ FROM XS; 案例:查询XS表中计算机同学的XH、XM和ZXF,结果中各列的标题分别 指定为学号、姓名和总学分。 SELECT XH AS 学号,XM AS 姓名,ZXF AS 总学分 FROM XS WHERE ZYM=’计算机’;

  5. 数据库的查询和视图 1.select 案例:对XSCJ数据库的XS表只选择ZYM和ZXF,消除结果集中的重复行。 SELECT DISTINCT ZYM AS 专业名,ZXF AS 总学分 FROM XS; 案例:(1) 查询XSH数据库CP表中库存量在500以上的产品情况。 SELECT *FROM CP WHERE KCL >500; (2) 查询XSCJ数据库XS表中通信工程专业总学分大于等于42的同学的情况。 SELECT *FROM XS WHERE ZYM=’ 通信工程’ and ZXF>=42;

  6. 数据库的查询和视图 1.select 模式匹配 LIKE谓词用于指出一个字符串是否与指定的字符串相匹配,其运算对象可以是char、varchar2和date类型的数据,返回逻辑值TRUE或FALSE。 案例:查询XSH数据库CP表中产品名含有“冰箱”的产品情况。 SELECT * FROM CP WHERE CPMC LIKE ‘%冰箱%’;

  7. 数据库的查询和视图 1.select 范围比较 用于范围比较的关键字有两个:BETWEEN和IN。  当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围 案例:(1)查询XSH数据库CP表中价格在2000元与4000元之间的产品情况。 SELECT * FROM CP WHERE JG BETWEEN 2000 AND 4000; (2) 查询XSCJ数据库XS表中不在1985年出生的学生情况。 SELECT * FROM XS WHERE CSSJ NOT BETWEEN TO_DATE(‘19850101’,’YYYYMMDD’) and TO_DATE(‘19851231’,’YYYYMMDD’);

  8. 数据库的查询和视图 1.select 范围比较 用于范围比较的关键字有两个:BETWEEN和IN。  当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围 案例:查询XSH数据库CP表中库存量为“200”、“300”和“500”的情况。 SELECT * FROM CP WHERE KCL IN (200,300,500); 该语句与下列语句等价: SELECT * FROM CP WHERE KCL=200 OR KCL=300 OR KCL=500;

  9. 数据库的查询和视图 1.select 子查询 在查询条件中,可以使用另一个查询的结果作为条件的一部分,例如判定列值是 否与某个查询的结果集中的值相等,作为查询条件一部分的查询称为子查询。 PL/SQL允许SELECT多层嵌套使用,用来表示复杂的查询。子查询除了可以用 在SELECT语句中,还可以用在INSERT、UPDATE及DELETE语句中。 子查询通常与IN、EXIST谓词及比较运算符结合使用。

  10. 数据库的查询和视图 1.select 查找未选修离散数学的学生的情况。嵌套 SELECT XH,XM,ZYM,ZXF FROM XS WHERE XH NOT IN ( SELECT XH FROM XS_KC WHERE KCH IN ( SELECT KCH FROM KC WHERE KCM = '离散数学' ) );

  11. 数据库的查询和视图 1.select 比较子查询 这种子查询可以认为是IN子查询的扩展,它使表达式的值与子查询的结果进行比较运算。 ALL指定表达式要与子查询结果集中的每个值都进行比较,当表达式与每个值都满 足比较的关系时,才返回TRUE,否则返回FALSE;SOME或ANY表示表达式只要 与子查询结果集中的某个值满足比较的关系时,就返回TRUE,否则返回FALSE。

  12. 数据库的查询和视图 1.select 比较子查询 案例:查找比所有计算机系学生年龄都大的学生。 SELECT * FROM XS WHERE CSSJ <ALL ( SELECT CSSJ FROM XS WHERE ZYM= '计算机' );

  13. 数据库的查询和视图 1.select 比较子查询 案例:查找课程号206的成绩不低于课程号101的最低成绩的学生的学号。 SELECT XH FROM XS_KC WHERE KCH = '206' AND CJ>= ANY ( SELECT CJ FROM XS_KC WHERE KCH = '101' );

  14. 数据库的查询和视图 1.select EXISTS子查询 EXISTS谓词用于测试子查询的结果是否为空表,若子查询的结果集不为空,则EXISTS返回TRUE,否则返回FALSE。EXISTS还可与NOT结合使用,即NOT EXISTS,其返回值与EXIST刚好相反。 案例:查找选修206号课程的学生姓名。 SELECT XM FROM XS WHERE EXISTS ( SELECT * FROM XS_KC WHERE XH=XS.XH AND KCH=‘206’ );

  15. 数据库的查询和视图 2. 视图 视图是从一个或多个表(或视图)导出的表。 视图与表(有时为与视图区别,也称表为基表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基表。

  16. 数据库的查询和视图 2. 视图 视图一经定义以后,就可以象表一样被查询、修改、删除和更新。使用视图有下列优点: (1) 为用户集中数据,简化用户的数据查询和处理。 (2) 屏蔽数据库的复杂性。 (3) 简化用户权限的管理。 (4) 便于数据共享。 (5) 可以重新组织数据以便输出到其它应用程序中。

  17. 数据库的查询和视图 2. 视图 使用CREATE VIEW语句创建视图。 案例:创建CS_KC视图,包括计算机专业各学生的学号、其选修的课程号及成绩。要保证对该视图的修改都要符合专业名为计算机这个条件。 CREATE OR REPLACE VIEW CS_KC AS SELECT XS.XH,KCH,CJ FROM XS,XS_KC WHERE XS.XH=XS_KC.XH AND ZYM= '计算机' WITH CHECK OPTION;

  18. 数据库的查询和视图 2. 视图 使用CREATE VIEW语句创建视图。 案例:创建计算机专业学生的平均成绩视图CS_KC_AVG,包括学号(在视图中列名为num)和平均成绩(在视图中列名为score_avg)。 CREATE OR REPLACE VIEW CS_KC_AVG(num,score_avg) AS SELECT XH,AVG(CJ) FROM XS_KC GROUP BY XH;

  19. 数据库的查询和视图 2. 视图 SELECT语句查询视图 案例:查找计算机专业的学生学号和选修的课程号。 SELECT XH,KCH FROM CS_KC; 案例:查找平均成绩在80分以上的学生的学号和平均成绩。 本例首先创建学生平均成绩视图XS_KC_AVG,包括学号(在视图中列名为num)和平均成绩(在视图中列名为score_avg)。 CREATE OR REPLACE VIEW XS_KC_AVG ( num,score_avg ) AS SELECT XH,AVG(CJ) FROM XS_KC GROUP BY XH; 再对XS_KC_AVG视图进行查询。 SELECT * FROM XS_KC_AVG WHERE score_avg>=80;

  20. 数据库的查询和视图 2. 视图 SELECT语句查询视图 案例:查找计算机专业的学生学号和选修的课程号。 SELECT XH,KCH FROM CS_KC; 案例:查找平均成绩在80分以上的学生的学号和平均成绩。 本例首先创建学生平均成绩视图XS_KC_AVG,包括学号(在视图中列名为num)和平均成绩(在视图中列名为score_avg)。 CREATE OR REPLACE VIEW XS_KC_AVG ( num,score_avg ) AS SELECT XH,AVG(CJ) FROM XS_KC GROUP BY XH; 再对XS_KC_AVG视图进行查询。 SELECT * FROM XS_KC_AVG WHERE score_avg>=80;

More Related