第4章-数据库的查询和视图.ppt
《第4章-数据库的查询和视图.ppt》由会员分享,可在线阅读,更多相关《第4章-数据库的查询和视图.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 数据库的查询和视图数据库的查询和视图01 选择、投影和连接选择、投影和连接02 数据库的查询数据库的查询03 数据库视图数据库视图1 选择、投影和连接选择、投影和连接主要内容 选择选择 投影投影 连接连接010203选择学号姓名性别平均成绩104215王敏男74104211李晓林女82 104210胡小平男88选择性别为女且平均成绩在80分以上的行学号姓名性别平均成绩104211李晓林女82 学生表选择后的结果查询满足条件的行投影学号姓名性别平均成绩104215王敏男74104211李晓林女82104210胡小平男88对“学号”和“平均成绩”投影学号平均成绩104215741042
2、118210421088学生表选择后的结果查询满足条件的列连接T1T21A6F2BT1T2T3T4T51A13M2B20NA表T3T4T513M20NB表T1=T3等值连接连接后的表等值连接T1T2T310A1B15A1C220D2C2T1T2T3T4T5T65A1C210A2C220D2C20A2D1A表T1T4T5T61100A1D11002B2C1200A2D1510A2C2B表自然连接连接后的表自然连接2 数据库的查询数据库的查询主要内容 选择列选择列 选择行选择行 连接连接 统计统计 排序排序0102030405为列指定列指定别名名不使用列不使用列别名名使用列使用列别名名看下面这两种
3、查询结果,哪个看着比较顺眼呢?看下面看下面这个例子个例子检索emp表员工的编号、姓名和年基本工资、日基本工资信息。分析:分析:年基本工资查询语句:句:select empno,ename,sal*12,sal/30 from emp;sal*12日基本工资信息sal/30 使用列使用列别名名列名 AS 列别名使用列别名列名 AS 列别名列名 列别名ename as 员工姓名empno 员工编号1.检索emp表员工的编号、姓名和年基本工资、日基本工资信息,并为查询结果设置列别名select empno as 员工编号,ename as 员工名称,sal*12 as 年基本工资,sal/30 as
4、 日基本工资 from emp;2.检索emp表的指定列(empno、ename、job),不使用任何关键字而直接为这些列指定中文的别名select empno 员工编号,ename 员工名称,job 职务 from emp;如果别名中包含了特殊字符,或想让别名原样显示,就要使用双引号双引号把别名括起来。“试一一试”中的第一个中的第一个查询,如果如果这样写:写:select empno as 员工编号,ename as 员工名称,sal*12 as 年-基本工资,sal/30 as 日基本工资 from emp;分析分析列别名:年-基本工资,包含特殊符号“-”,而且别名没有用双引号括起来注意使
5、用双引号注意使用双引号排除重复行排除重复行查询结果中包含重复行果中包含重复行查询结果中排除重复行果中排除重复行 查询结果中包含重复行果中包含重复行默认情况下,查询结果会包含所有满足条件的结果,其中可能会包含重复行。在SCOTT模式下,显示emp表中的job(职务)列查询结果中排除重复行果中排除重复行为了排除重复行,需要使用DISTINCT关键字在SCOTT模式下,显示emp表中的job(职务)列,要求显示的“职务”记录不重复select distinct job from emp;distinct的作用是消除重复内容,但是所谓的消除重复的内容,是指一条完整的数据全部是重复的,如果多行记录只有一
6、列重复而其他列不重复,那么也是无法消除的。查询emp表的员工编号和职位当查询比较大的表时应尽可能地避免使用DISTINCT关键字带有表达式的有表达式的SELECT子句子句在使用SELECT语句时,对于数字数据和日期数据都可以使用算术表达式。在SELECT语句中可以使用算术运算符,包括(+)、减(-)、乘(*)、除(/)和括号。检索emp表的sal列,把其值调整为原来的1.1倍select ename,sal,sal*(1+0.1)from emp;算术运算符是有优先先级先乘除后加减。在表达式中同一优先级的运算符计算次序是从左到右。如果使用了括号,括号中的运算优先。如果有多重括号嵌套,内存括号中
7、的运算优先。查询所有列所有列查询单个表中所有列个表中所有列查询多个表中所有列多个表中所有列select distinct|*|列名称 AS列别名,列名称AS列别名,from 表名称 表别名;查询单个表中所有列个表中所有列要查询表中所有列在SELECT子句后面使用星号(*)来实现在SCOTT模式下,在SELECT语句中使用星号(*)来检索dept表中所有的数据第一步:第一步:连接SCOTT模式connect scott/tiger第二步:第二步:查询dept表中所有的数据select*from dept;如果在SYSTEM模式中,查询emp表,要如何进行查询呢?想一想想一想如果这样做:selec
8、t*from emp;应该这样做:select*from soctt.emp;查询多个表中所有列多个表中所有列要查询多个表中所有列在FROM子句后面指定多个数据表,用逗号隔开在SCOTT模式下,同时查询dept和salgrade表中的所有数据分析:分析:要想“同时查询dept和salgrade表中的所有数据”就在from子句中指定两个数据表dept和salgrade查询语句:句:select*from dept,salgrade;查询特定列特定列查询特定列特定列伪列列如果想如果想查找找单个数据怎么个数据怎么办?买 雪地鞋,手套从 百货大楼查询特定列特定列SELECT column_name1,
9、column_name2,column_name3,column_name FROM 表名称;SELECT子句后面可以加想要查询的列名,用“,”隔开语法法在SCOTT模式下,检索emp表中指定的列(job、ename、empno)查询语句句select job、ename、empno from emp;分析分析用SELECT语句来查询job、ename、empno,只要在SELECT后面写job、ename、empno就可以啦伪列列一种数据类型,唯一标识一条记录,物理位置的一个id,基于64位编码的18个字符。定定义 它并不是真实的存在于数据表中的列,所以被称为伪列。伪列可以从表中查询,但是不
10、能插入、更新或删除。伪列的用途1.能以最快的方式访问表中的一行2.能显示表的行是如何存储的3.作为表中唯一标识 常用的伪列rowid和rownum数据库中的每一行都有一个行地址,rowid伪列返回该行地址。可以使用rowid值来定位表中的一行,通常情况下,rowid值可以唯一地标识数据库的一行。rowid对于一个查询返回的每一行,rownum伪列返回一个数值代表的次序。返回第一行的rownum值为1,第二行的rownum值为2,以此类推。通过使用rownum伪列,用户可以限制查询返回的行数rownum1.查询emp表的rowid列select rowid from emp;2.从emp表中查询
11、前5条数据select*from emp where rownum 6;选择行1表达式比较比较运算符的格式为:expression =|=|!=expression查询emp表中工资(sal)大于1500的数据记录SQL select empno,ename,sal from emp where sal 1500;选择行2模式匹配LIKE谓词表达式的格式为:string_expression NOT LIKE string_expressionESCAPE escape_characterLIKE谓词 LIKE运算符可以使用以下两个通配符“%”和“_”。其中:“%”:代表0个或多个字符。“_”
12、:代表一个且只能是一个字符。选择行3范围比较 用于范围比较的关键字BETWEEN关键字IN关键字选择行4空值比较空值(NULL)从技术上来说就是未知的、不确定的值,但空值与空字符串不同,因为空值是不存在的值,而空字符串是长度为0的字符串。SQL select empno,ename,sal,comm from emp where comm is null;查询emp表中没有奖金的员工信息选择行5子查询(1)单行子查询 单行子查询是指返回一行数据的子查询语句。当在WHERE子句中引用单行子查询时,可以使用单行比较运算符(=、=、=和)。SQL select empno,ename,sal fro
13、m emp where sal (select min(sal)from emp)and sal select empno,ename,job from emp where deptno in (select deptno from dept where dnameSALES);在emp表中,查询不是销售部门(SALES)的员工信息选择行(3)关联子查询 在一些特殊需求的子查询中,内查询的执行需要借助于外查询,而外查询的执行又离不开内查询的执行,这时,内查询和外查询是相互关联的,这种子查询就被称为关联子查询。SQL select empno,ename,sal from emp f where
14、 sal (select avg(sal)from emp where job=f.job)order by job;在emp表中,使用“关联子查询”检索工资大于同职位的平均工资的员工信息连接使用简短的表别名就可以替代原有较长的表名称,这样就可以大大缩减语句的长度。SQL select e.empno as 员工编号,e.ename as 员工名称,d.dname as 部门 from emp e,dept d where e.deptno=d.deptno and e.job=MANAGER;1表别名通过DEPTNO(部门号)列来关联emp表和dept表,并检索这两个表中相关字段的信息。连接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 查询 视图
限制150内