Oracle9i第4章 数据库的查询和视图免费下载.pptx
《Oracle9i第4章 数据库的查询和视图免费下载.pptx》由会员分享,可在线阅读,更多相关《Oracle9i第4章 数据库的查询和视图免费下载.pptx(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.1连接、选择和投影 4.1.1选择【例例4.1】学生情况表如表4.1所示。学生表中性别为女且平均成绩在80分以上的行形成一个新表,该选择运算的结果如表4.2所示。1第4章数据库的查询和视图4.1.2投影【例例4.2】若在表中对“姓名”和“平均成绩”投影,该查询得到如表所示的新表。2第4章数据库的查询和视图4.1.3连接【例例4.3】若表A和B分别如表4.4和表4.5所示,则连接后结果如表4.6所示。3第4章数据库的查询和视图4.1.3连接【例例4.4】若表A和表B分别如表4.7和表4.8所示,自然连接后的新表C如表4.9所示。4第4章数据库的查询和视图4.2 数据库的查询 语法格式:语法格
2、式:SELECT select_list FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC|DESC 5第4章数据库的查询和视图4.2.1选择列 语法格式:语法格式:SELECT ALL|DISTINCT 其中select_list指出了结果的形式,select_list的主要格式为:*/*选择当前表或视图的所有列*/|table_name|view_name|table_alias .*/*选择指
3、定的表或视图的所有列*/|colume_name|expression AS column_alias /*选择指定的列*/|column_alias=expression /*选择指定列并更改列标题*/,n 6第4章数据库的查询和视图4.2.1选择列选择一个表中指定的列选择一个表中指定的列 语法格式:语法格式:SELECT column_name ,column_nameFROM table_name WHERE search_condition【例例4.5】查询XSCJ数据库的XS表中各个同学的XM、XH和ZXF。SELECT XH,XM,ZXF FROM XS;【例例4.6】查询XS表中
4、ZXF大于45同学的XH、XM和ZXF。SELECT XH,XM,ZXFFROM XSWHERE ZXF45;7第4章数据库的查询和视图4.2.1选择列【例例4.7】查询XS表中的所有列。SELECT*FROM XS;该语句等价于语句:SELECT XH,XM,ZYM,XBCSSJ,ZXF,BZFROM XS;8第4章数据库的查询和视图4.2.1选择列修改查询结果中的列标题修改查询结果中的列标题【例例4.8】查询XS表中计算机同学的XH、XM和ZXF,结果中各列的标题分别指定为学号、姓名和总学分。SELECT XH AS学号,XM AS 姓名,ZXF AS总学分/*也可以省略AS*/FROM
5、XSWHERE ZYM=计算机;9第4章数据库的查询和视图4.2.1选择列计算列值计算列值 格式为:SELECT expression ,expression【例例4.9】创建产品销售数据库XSH,并在其中创建产品表CP,其表结构如表所示。10第4章数据库的查询和视图4.2.1选择列下列语句将列出产品名称和产品总值:SELECT CPMC AS 产品名称,JG*KCL AS产品总值FROM CP;11第4章数据库的查询和视图4.2.1选择列消除结果集中的重复行消除结果集中的重复行格式是:SELECT DISTINCT column_name ,column_name【例例4.10】对XSCJ数
6、据库的XS表只选择ZYM和ZXF,消除结果集中的重复行。SELECT DISTINCT ZYM AS 专业名,ZXF AS 总学分;该语句执行的结果为:专业名 总学分计算机 48计算机 50计算机 52计算机 54通信工程 40通信工程 42通信工程 44通信工程 50 12第4章数据库的查询和视图4.2.1选择列【例例4.11】以下的SELECT语句对XSCJ数据库的XS表选择ZYM和ZXF,不消除结果集中的重复行。SELECT ALL ZYM AS 专业名,ZXF AS 总学分;说明说明:当SELECT语句中不写ALL与DISTINCT时,默认值为ALL。13第4章数据库的查询和视图4.2
7、.2选择行 WHERE子句必须紧跟FROM子句之后,其基本格式为:WHERE 其中search_condition为查询条件,格式为:NOT|()AND|OR NOT|(),n 其中predicate为判定运算,结果为TRUE、FALSE或UNKNOWN,格式为:expression =|=|!=expression/*比较运算*/|string_expression NOT LIKE string_expression ESCAPE escape_character /*字符串模式匹配*/|expression NOT BETWEEN expression AND expression/*指
8、定范围*/|expression IS NOT NULL /*是否空值判断*/|expression NOT IN(subquery|expression,n)/*IN子句*/|EXIST(subquery)/*EXIST子查询*/14第4章数据库的查询和视图4.2.2选择行 表达式比较表达式比较 比较运算的格式为:expression =|=|!=expression【例例4.12】(1)查询XSH数据库CP表中库存量在500以上的产品情况。SELECT*FROM CP WHERE KCL 500;(2)查询XSCJ数据库XS表中通信工程专业总学分大于等于42的同学的情况。SELECT*FR
9、OM XS WHERE ZYM=通信工程 and ZXF=42;15第4章数据库的查询和视图4.2.2选择行模式匹配模式匹配 LIKE谓词表达式的格式为:string_expression NOT LIKE string_expression【例例4.13】查询XSH数据库CP表中产品名含有“冰箱”的产品情况。SELECT*FROM CP WHERE CPMC LIKE%冰箱%;【例例4.14】查询XSCJ数据库XS表中姓“王”且单名的学生情况。SELECT*FROM XS WHERE 姓名 LIKE 王_;16第4章数据库的查询和视图4.2.2选择行范围比较范围比较 格式为:expressi
10、on NOT BETWEEN expression1 AND expression2【例例4.15】(1)查询XSH数据库CP表中价格在2000元与4000元之间的产品情况。SELECT*FROM CP WHERE JG BETWEEN 2000 AND 4000;(2)查询XSCJ数据库XS表中不在1979年出生的学生情况。SELECT*FROM XS WHERE CSSJ NOT BETWEEN TO_DATE(19790101,YYYYMMDD)and TO_DATE(19791231,YYYYMMDD);17第4章数据库的查询和视图4.2.2选择行IN关键字指定值表的格式为:关键字指定
11、值表的格式为:expression IN(expression,n)【例例4.16】查询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;18第4章数据库的查询和视图4.2.2选择行空值比较空值比较 格式为:expression IS NOT NULL【例例4.17】查询XSCJ数据库中总学分尚不定的学生情况。SELECT*FROM XS WHERE ZXF IS NUL
12、L;19第4章数据库的查询和视图4.2.2选择行子查询子查询 IN子查询子查询 格式为:expression NOT IN (subquery)【例例4.18】在XSCJ数据库中有描述课程情况的表KC和描述学生成绩表的表XS_KC(表的结构和样本数据见附录A)。查找选修了课程号为101的课程的学生的情况:SELECT*FROM XSWHERE XH IN (SELECT XH FROM XS_KC WHERE KCH=101);20第4章数据库的查询和视图4.2.2选择行【例例4.19】查找未选修离散数学的学生的情况。SELECT XH,XM,ZYM,ZXF FROM XSWHERE 学号 N
13、OT IN(SELECT 学号FROM XS_KCWHERE 课程号 IN (SELECT 课程号 FROM KC WHERE 课程名=离散数学);21第4章数据库的查询和视图4.2.2选择行比较子查询 格式为:expression|=|!=|ALL|SOME|ANY (subquery)【例例4.20】查找比所有计算机系学生年龄都大的学生。SELECT*FROM XSWHERE CSSJ=ANY(SELECT CJ FROM XS_KC WHERE KCH=101);23第4章数据库的查询和视图4.2.2选择行EXISTS子查询 格式为:NOT EXISTS(subquery)【例例4.22
14、】查找选修206号课程的学生姓名。SELECT XM FROM XS WHERE EXISTS (SELECT*FROM XS_KC WHERE XH=XS.XH AND KCH=206);24第4章数据库的查询和视图4.2.2选择行【例例4.23】查找选修了全部课程的同学的姓名。SELECT XM FROM XS WHERE NOT EXISTS (SELECT*FROM KC WHERE NOT EXISTS (SELECT*FROM XS_KC WHERE XH=XS.XH AND KCH=KC.KCH);25第4章数据库的查询和视图4.2.3查询对象【例例4.24】查找选修了00110
15、2号同学所选修的全部课程的同学的学号。SELECT DISTINCT XHFROM XS_KC AS CJ1WHERE NOT EXISTS(SELECT*FROM XS_KC AS CJ2WHERE CJ2.XH=001102 AND NOT EXISTS(SELECT*FROM XS_KC AS CJ3WHERE CJ3.XH=CJ1.XH AND CJ3.KCH=CJ2.KCH);26第4章数据库的查询和视图4.2.3查询对象【例例4.25】在XS表中查找1980年1月1日以前出生的学生的姓名和专业名。SELECT XM,ZYMFROM (SELECT*FROM XS WHERE CSS
16、J=80;执行结果为:姓名 成绩王燕 81李方方 80林一帆 87张蔚 8929第4章数据库的查询和视图4.2.4连接【例例4.29】查找选修了“计算机基础”课程且成绩在80分以上的学生学号、姓名、课程名及成绩。SELECT XS.XH,XM,KCM,CJ FROM XS,KC,XS_KC WHERE XS.XH=XS_KC.XH AND KC.KCH=XS_KC.KCH AND KCM=计算机基础 AND CJ=80;30第4章数据库的查询和视图4.2.4连接 以以JOIN关键字指定的连接关键字指定的连接 连接表的格式为:ON|CROSS JOIN|内连接【例例4.30】查找XSCJ数据库每
17、个学生的情况以及选修的课程情况。SELECT*FROM XS INNER JOIN XS_KC ON XS.XH=XS_KC.XH;【例例4.31】用FROM的JOIN关键字表达下列查询:查找选修了206课程且成绩在80分以上的学生姓名及成绩。SELECT XM,CJ FROM XS JOIN XS_KC ON XS.XH=XS_KC.XH WHERE KCH=206 AND CJ=80;31第4章数据库的查询和视图4.2.4连接【例例4.32】用FROM的JOIN关键字表达下列查询:查找选修了“计算机基础”课程且成绩在80分以上的学生学号、姓名、课程名及成绩。SELECT XS.学号,XM,
18、CKM,CJ FROM XS JOIN XS_KC JOIN KC ON XS_KC.KCH=KC.KCH ON XS.XH=XS_KC.XH WHERE KCM=计算机基础 AND CJ=80;【例例4.33】查找不同课程成绩相同的学生的学号、课程号和成绩。SELECT a.XH,a.KCH,b.KCH,a.CJ FROM XS_KC a JOIN XS_KC b ON a.CJ=b.CJ AND a.XH=b.XH AND a.KCH!=b.KCH;32第4章数据库的查询和视图4.2.4连接外连接 左外连接(LEFT OUTER JOIN)右外连接(RIGHT OUTER JOIN)完全外
19、连接(FULL OUTER JOIN)【例例4.34】查找所有学生情况及他们选修的课程号,若学生未选修任何课,也要包括其情况。SELECT XS.*,KCH FROM XS LEFT OUTER JOIN XS_KC ON XS.XH=XS_KC.XH;【例例4.35】查找被选修了的课程的选修情况和所有开设的课程名。SELECT XS_KC.*,KCM FROM XS_KC RIGHT JOIN KC ON XS_KC.KCH=KC.KCH;33第4章数据库的查询和视图4.2.4连接交叉连接【例例4.36】列出学生所有可能的选课情况。SELECT XH,XM,KCH,KCM FROM XS C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle9i第4章 数据库的查询和视图免费下载 Oracle9i 数据库 查询 视图 免费 下载
限制150内