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