Oracle第13章SQL语言基础11067.pptx
《Oracle第13章SQL语言基础11067.pptx》由会员分享,可在线阅读,更多相关《Oracle第13章SQL语言基础11067.pptx(112页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle10g 数据库基础教程第第13章章 SQL语言基础语言基础Oracle 10g数据库基础教程本章内容本章内容pSQL语句分类p数据查询(SELECT)p数据操纵(INSERT、UPDATE、DELETE)p事务控制pSQL函数Oracle 10g数据库基础教程本章要求本章要求p掌握数据查询的各种应用p掌握数据操纵的各种应用p掌握事务处理p了解SQL函数应用Oracle 10g数据库基础教程13.1 SQL语言概述语言概述pSQL语言介绍 pSQL语言的分类 pSQL语言的特点 Oracle 10g数据库基础教程13.1.1 SQL语言介绍语言介绍pSQL(StructuredQue
2、ryLanguage)语言是1974年由Boyce和Chamberlin提出的。pSQL语言是关系数据库操作的基础语言,将数据查询、数据操纵、数据定义、事务控制、系统控制等功能集于一体,从而使得数据库应用开发人员、数据库管理员等都可以通过SQL语言实现对数据库的访问和操作。Oracle 10g数据库基础教程13.1.2 SQL语言的分类语言的分类p据定义语言(Data Definition Language,DDL):用于定义、修改、删除数据库对象,包括CREATE,ALTER,DROP,GRANT,REVOKE,AUDIT和NOAUDIT等。p数据操纵语言(Data Manipulation
3、 Language,DML):用于改变数据库中的数据,包括数据插入(INSERT)、数据修改(UPDATE)和数据删除(DELETE)。p数据查询语言(Data Query Language,DQL):用于数据检索,包括SELECT。p事务控制(Transaction Control):用于将一组DML操作组合起来,形成一个事务并进行事务控制。包括事务提交(COMMIT)、事务回滚(ROLLBACK)、设置保存点(SAVEPOINT)和设置事务状态(SET TRANSACTION)。p系统控制(System Control):用于设置数据库系统参数,包括ALTER SYSTEM。p会话控制(S
4、ession Control):用于设置用户会话相关参数,包括ALTER SESSION。Oracle 10g数据库基础教程13.1.3 SQL语言的特点语言的特点p功能一体化:几乎涵盖了对数据库的所有操作,语言风格统一。p高度的非过程化:在使用SQL语言操作数据库时,用户只需要说明“做什么”,而不需要说明“怎样做”。用户任务的实现对用户而言是透明的,由系统自动完成。这大大减轻了用户的负担,同时降低了对用户的技术要求。p面向集合的操作方式:SQL语言采用集合操作方式,不仅查询结果可以是多条记录的集合,而且一次插入、删除、修改操作的对象也可以是多条记录的集合。面向集合的操作方式极大地提高了对数据
5、操作效率。p多种使用方式:SQL语句既是自含式语言,又是嵌入式语言。SQL语言可以直接以命令方式与数据库进行交互,也可以嵌入到其他的高级语言中使用。p简洁、易学:SQL语言命令数量有限,语法简单,接近于自然语言(英语),因此容易学习和掌握。Oracle 10g数据库基础教程13.2 数据查询数据查询p数据查询基础p基本查询p分组查询p连接查询p子查询p合并查询Oracle 10g数据库基础教程 13.2.1 数据查询基础数据查询基础p基本语法:nSELECT ALL|DISTINCTcolumn_name,expressionnFROM table1_name,table2_name,view
6、_name,nWHERE conditionnGROUP BY column_name1,column_name2,nHAVING group_conditionnORDER BY column_name2 ASC|DESCn,column_name2,;Oracle 10g数据库基础教程13.2.2 基本查询基本查询p无条件查询p有条件查询p查询排序p查询统计Oracle 10g数据库基础教程(1)无条件查询)无条件查询p查询所有列nSELECT*FROM emp;p查询指定列nSELECT deptno,dname FROM dept;p使用算术表达式nSELECT empno,sal*0
7、.8 FROM emp;p使用字符常量nSELECT empno,Name is:,ename FROM emp;p使用函数nSELECT empno,UPPER(ename)FROM emp;Oracle 10g数据库基础教程p改变列标题nSELECT ename employeename,sal salary FROM emp;p使用连接字符串nSELECT 员工号:员工号:|empno|员工名员工名|ename FROM emp;p消除重复行nSELECT ALL deptno FROM emp;nSELECT DISTINCT deptno FROM emp;Oracle 10g数据库
8、基础教程(2)有条件查询)有条件查询p查询满足条件的元组可以通过WHERE 子句实现。pWHERE条件中常用的运算符号运算符号谓词比较大小=,=,=,,!=确定范围BETWEEN AND,NOT BETWEEN AND确定集合IN,NOT IN字符匹配LIKE,NOT LIKE空值IS NULL,IS NOT NULL多重条件AND,OROracle 10g数据库基础教程p关系运算 nSELECT empno,ename,sal FROM emp WHERE deptno!=10;nSELECT empno,ename,sal FROM emp WHERE sal1500p确定范围n谓词谓词B
9、ETWEEN AND与与NOT BETWEEN AND。n SELECT*FROM emp WHERE deptno BETWEEN 10 AND 20;nSELECT*FROM emp WHERE sal NOT BETWEEN 1000 AND 2000;Oracle 10g数据库基础教程p确定集合n谓词谓词IN可以用来查找属性值属于指定集合的元组。可以用来查找属性值属于指定集合的元组。nSELECT empno,ename,sal FROM emp WHERE deptno IN(10,30);p字符匹配n%(百分号)代表任意长(长度为(百分号)代表任意长(长度为0)字符串。)字符串。n
10、_(下划线)代表任意单个字符。(下划线)代表任意单个字符。nESCAPE:转义字符:转义字符nSELECT*FROM empWHERE ename LIKE%S%;nSELECT*FROM emp WHERE ename LIKE _A%;nSELECT*FROM emp WHERE ename LIKE%x_%ESCAPE x;Oracle 10g数据库基础教程p空值操作n涉及空值查询时使用涉及空值查询时使用IS NULL或或 IS NOT NULL,这里的这里的IS不能用不能用=替代。替代。nSELECT*FROM emp WHERE deptno IS NULL;nSELECT*FROM
11、 emp WHERE comm IS NOT NULL;Oracle 10g数据库基础教程p逻辑操作n用逻辑运算符用逻辑运算符NOT、AND和和OR来联结多个查询条件。来联结多个查询条件。n优先级:优先级:NOT、AND、OR(用户可以用括号改变优(用户可以用括号改变优先级)。先级)。nIN谓词实际上是多个谓词实际上是多个OR运算的缩写。运算的缩写。n nSELECT*FROM emp WHERE deptno=10 AND sal 1500;nSELECT*FROM emp WHERE(deptno=10 OR deptno=20)AND sal1500;Oracle 10g数据库基础教程p
12、注意:n使用使用BETWEENAND,NOT BETWEENAND,IN,NOT IN运算符的查询条件都可以转换为运算符的查询条件都可以转换为NOT,AND,OR的逻辑运算。例如,下面两个语句是等价的:的逻辑运算。例如,下面两个语句是等价的:nSELECT*FROM emp WHERE sal1000 AND sal2000;nSELECT*FROM emp WHERE sal BETWEEN 1000 AND 2000;Oracle 10g数据库基础教程p升序、降序排序nASC:升序升序(缺省);(缺省);DESC:降序降序nSELECT empno,ename,sal FROM emp O
13、RDER BY sal;nSELECT empno,ename,sal FROM emp ORDER BY sal DESC;p多列排序 n首先按照第一个列或表达式进行排序;当第一个列或表达首先按照第一个列或表达式进行排序;当第一个列或表达式的数据相同时,以第二个列或表达式进行排序,以此类式的数据相同时,以第二个列或表达式进行排序,以此类推推。nSELECT*FROM emp ORDER BY deptno,sal DESC;(3)查询排序)查询排序Oracle 10g数据库基础教程p按表达式排序 n可以按特定的表达式进行排序。可以按特定的表达式进行排序。nSELECT empno,ename
14、,sal FROM emp ORDER BY sal*12;p使用别名排序 n可以使用目标列或表达式的别名进行排序。可以使用目标列或表达式的别名进行排序。nSELECT empno,sal*12 salary FROM emp ORDER BY salary;p使用列位置编号排序 n如果列名或表达式名称很长,那么使用位置排序可以缩短如果列名或表达式名称很长,那么使用位置排序可以缩短排序语句的长度。排序语句的长度。nSELECT empno,sal*12 salary FROM emp ORDER BY 2;Oracle 10g数据库基础教程(4)查询统计)查询统计函数格式功能AVGAVG(DI
15、STINCT|ALL)计算一列值的平均值(要求数值列)COUNTCOUNT(DISTINCT|ALL*)统计元组个数COUNTCOUNT(DISTINCT|ALL)统计一列中 非空值的个数MAXMAX(DISTINCT|ALL)求一列值中的最大值MINMIN(DISTINCT|ALL)求一列值中的最小值SUMSUM(DISTINCT|ALL)计算一列值的总和(要求数值列)STDDEV STDDEV().计算一列值的标准差VARIANCEVARIANCE()计算一列值的方差Oracle 10g数据库基础教程p注意n除了除了COUNT(*)函数外,其他的统计函数都不考虑返函数外,其他的统计函数都不
16、考虑返回值或表达式为回值或表达式为NULL的情况。的情况。n聚集函数只能出现在目标列表达式、聚集函数只能出现在目标列表达式、ORDER BY子句、子句、HAVING子句中,不能出现在子句中,不能出现在WHERE子句和子句和GROUP BY子句中。子句中。n默认对所有的返回行进行统计,包括重复的行;如果默认对所有的返回行进行统计,包括重复的行;如果要统计不重复的行信息,则可以使用要统计不重复的行信息,则可以使用DISTINCT选项。选项。n如果对查询结果进行了分组,则聚集函数的作用范围如果对查询结果进行了分组,则聚集函数的作用范围为各个组,否则聚集函数作用于整个查询结果。为各个组,否则聚集函数作
17、用于整个查询结果。Oracle 10g数据库基础教程pSELECT count(*),avg(sal),max(sal),min(sal)FROM emp WHERE deptno=10;pSELECT avg(comm),sum(comm)FROM emp;pSELECT count(DISTINCT deptno)FROM emp;pSELECT variance(sal),stddev(sal)FROM emp;Oracle 10g数据库基础教程13.2.3 分组查询分组查询p基本语法p单列分组查询p多列分组查询p使用HAVING子句限制返回组p使用ROLLUP 和CUBEp合并分组查询
18、Oracle 10g数据库基础教程nSELECT column,group_function,nFROM tablenWHERE conditionnGROUP BY ROOLUP|CUBE|GROUPING SETS ngroup_by_expressionnHAVING group_conditionnORDER BY columnASC|DESC;(1)基本语法)基本语法Oracle 10g数据库基础教程p注意:nGROUP BY子句用于指定分组列或分组表达式。子句用于指定分组列或分组表达式。n集合函数用于对分组进行统计。如果未对查询分组,集合函数用于对分组进行统计。如果未对查询分组,则
19、集合函数将作用于整个查询结果;如果对查询结果则集合函数将作用于整个查询结果;如果对查询结果分组,则集合函数将作用于每一个组,即每一个分组分组,则集合函数将作用于每一个组,即每一个分组都有一个集合函数。都有一个集合函数。nHAVING子句用于限制分组的返回结果。子句用于限制分组的返回结果。nWHERE子句对表中的记录进行过滤,而子句对表中的记录进行过滤,而HAVING子子句对分组后形成的组进行过滤。句对分组后形成的组进行过滤。n在分组查询中,在分组查询中,SELECT子句后面的所有目标列或目子句后面的所有目标列或目标表达式要么是分组列,要么是分组表达式,要么是标表达式要么是分组列,要么是分组表达
20、式,要么是集合函数。集合函数。Oracle 10g数据库基础教程p单列分组查询n将查询出来的记录按照某一个指定的列进行分组将查询出来的记录按照某一个指定的列进行分组nSELECT deptno,count(*),avg(sal)FROM emp GROUP BY deptno;p多列分组查询n在在GROUP BY子句中指定了两个或多个分组列子句中指定了两个或多个分组列nSELECT deptno,job,count(*),avg(sal)FROM emp GROUP BY deptno,job;p使用HAVING子句限制返回组n可以使用可以使用HAVING子句,只有满足条件的组才会返回。子句,
21、只有满足条件的组才会返回。nSELECT deptno,count(*),avg(sal)FROM emp GROUP BY deptno HAVING avg(sal)1500;Oracle 10g数据库基础教程p使用ROLLUP 和CUBEn如果在如果在GROUP BY子句中使用子句中使用ROLLUP选项,则还选项,则还可以生成横向统计和不分组统计;可以生成横向统计和不分组统计;n如果在如果在GROUP BY子句中使用子句中使用CUBE选项,则还可以选项,则还可以生成横向统计、纵向统计和不分组统计。生成横向统计、纵向统计和不分组统计。nSELECT deptno,job,avg(sal)F
22、ROM emp GROUP BY ROLLUP(deptno,job);nSELECT deptno,job,avg(sal)FROM emp GROUP BY CUBE(deptno,job);Oracle 10g数据库基础教程p合并分组查询n使用使用GROUPING SETS可以将几个单独的分组查询可以将几个单独的分组查询合并成一个分组查询合并成一个分组查询 nSELECT deptno,job,avg(sal)FROM emp GROUP BY GROUPING SETS(deptno,job);Oracle 10g数据库基础教程13.2.4 连接查询连接查询p交叉连接p内连接n等值连接
23、等值连接n不等值连接不等值连接n自身连接自身连接p外连接n左外连接左外连接n右外连接右外连接n全外连接全外连接Oracle 10g数据库基础教程(1)交叉连接)交叉连接p概念n两个或多个表之间的无条件连接。一个表中所有记录两个或多个表之间的无条件连接。一个表中所有记录分别与其他表中所有记录进行连接。如果进行连接的分别与其他表中所有记录进行连接。如果进行连接的表中分别有表中分别有n1,n2,n3条记录,那么交叉连接的条记录,那么交叉连接的结果集中将有结果集中将有n1n2n3条记录。条记录。p以下情况可以出现交叉连接n连接条件省略连接条件省略n连接条件非法连接条件非法n一个表的所有行被连接到另一个
24、表的所有行一个表的所有行被连接到另一个表的所有行p示例nSELECT ename,dname from emp,dept;Oracle 10g数据库基础教程(2)内连接)内连接p执行过程p内连接语法p等值内连接p非等值内连接p自身内连接Oracle 10g数据库基础教程p执行过程n首先在表首先在表1中找到第一个元组,然后从头开始扫描表中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表,逐一查找满足连接条件的元组,找到后就将表1中的中的第第1个元组与该元组拼接形成结果表中的一个元组。表个元组与该元组拼接形成结果表中的一个元组。表2全部找完后,再找表全部找完后,再找表
25、1中的第中的第2个元组,然后再从头个元组,然后再从头扫描表扫描表2,逐一查找满足连接条件的元组,找到后就将,逐一查找满足连接条件的元组,找到后就将表表1中的第中的第2个元组与该元组拼接形成结果表中的一个个元组与该元组拼接形成结果表中的一个元组。重复执行,直到表元组。重复执行,直到表1中的全部元组都处理完毕为中的全部元组都处理完毕为止。止。Oracle 10g数据库基础教程p内连接语法:标准SQL语句的连接方式nSELECT table1.column,talbe2.column,nFROM table1 INNER JOIN table2 JOIN nON condition;p内连接语法:O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 13 SQL 语言 基础 11067
限制150内