欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Oracle第13章SQL语言基础.pptx

    • 资源ID:91026365       资源大小:5.88MB        全文页数:113页
    • 资源格式: PPTX        下载积分:25金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要25金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Oracle第13章SQL语言基础.pptx

    第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 语言是关系数据库操作的基础语言,将数据查询、数据操纵、数据定义、事务控制、系统控制等功能集于一体,从而使得数据库应用开发人员、数据库管理员等都可以通过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 数据查询语言(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 功能一体化:几乎涵盖了对数据库的所有操作,语言风格统一。p 高度的非过程化:在使用SQL 语言操作数据库时,用户只需要说明“做什么”,而不需要说明“怎样做”。用户任务的实现对用户而言是透明的,由系统自动完成。这大大减轻了用户的负担,同时降低了对用户的技术要求。p 面向集合的操作方式:SQL 语言采用集合操作方式,不仅查询结果可以是多条记录的集合,而且一次插入、删除、修改操作的对象也可以是多条记录的集合。面向集合的操作方式极大地提高了对数据操作效率。p 多种使用方式:SQL 语句既是自含式语言,又是嵌入式语言。SQL 语言可以直接以命令方式与数据库进行交互,也可以嵌入到其他的高级语言中使用。p 简洁、易学: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_name2 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 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 NULL,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 可以用来查找属性值属于指定集合的元组。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 不能用=替代。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 使用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 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 如果列名或表达式名称很长,那么使用位置排序可以缩短排序语句的长度。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)计算一列值的总和(要求数值列)STDDEVSTDDEV().计算一列值的标准差VARIANCEVARIANCE()计算一列值的方差培训专用p 注意n 除了COUNT(*)函数外,其他的统计函数都不考虑返回值或表达式为NULL 的情况。n 聚集函数只能出现在目标列表达式、ORDER BY 子句、HAVING 子句中,不能出现在WHERE 子句和GROUP BY 子句中。n 默认对所有的返回行进行统计,包括重复的行;如果要统计不重复的行信息,则可以使用DISTINCT 选项。n 如果对查询结果进行了分组,则聚集函数的作用范围为各个组,否则聚集函数作用于整个查询结果。培训专用p SELECT count(*),avg(sal),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 conditionn 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 子句对分组后形成的组进行过滤。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 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 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 条记录,那么交叉连接的结果集中将有 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 中的第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.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 SELECT 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 SELECT 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 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 右外连接语法:Oracle 扩展的连接方式n SELECT table1.column,table2.column,n FROM table1,table2,n WHERE table1.column(+)n table2.column;培训专用p 查询20 号部门的部门名称及其员工号、员工名,和所有其他部门的员工名、员工号,语句为n SELECT empno,ename,dname n FROM dept RIGHT JOIN empn ON dept.deptno=emp.deptno AND n dept.deptno=20;p 或n SELECT empno,ename,dname n FROM dept,empn WHERE dept.deptno(+)=emp.deptno AND n dept.deptno(+)=20;培训专用p 全外连接是指在内连接的基础上,将连接操作符两侧表中不符合连接条件的记录加入结果集中。p 在Oracle 数据库中,全外连接的表示方式为n SELECT table1.column,table2.column,n FROM table1 FULL JOIN table2,n ON table1.column1=table2.column2;p 查询所有的部门名和员工名,语句为n SELECT dname,ename n FROM emp FULL JOIN dept n ON emp.deptno=dept.deptno;培训专用13.2.5 子查询p 子查询概述p 单行单列子查询p 多行单列子查询p 单行多列子查询p 多行多列子查询p 相关子查询p 在FROM 子句中使用子查询 p 在DDL 语句中使用子查询p 使用WITH 子句的子查询培训专用p 子查询的概念n 子查询是指嵌套在其他SQL 语句中的SELECT 语句,也称为嵌套查询。n 在执行时,由里向外,先处理子查询,再将子查询的返回结果用于其父语句(外部语句)的执行。p 子查询作用n 在INSERT 或CREATE TABLE 语句中使用子查询,可以将子查询的结果写入到目标表中;n 在UPDATE 语句中使用子查询可以修改一个或多个记录的数据;n 在DELETE 语句中使用子查询可以删除一个或多个记录n 在WHERE 和HAVING 子句中使用子查询可以返回的一个或多个值。(1)子查询概述培训专用p 单行单列子查询是指子查询只返回一行数据,而且只返回一列的数据。p 运算符n=,=,n(SELECT sal FROM emp WHERE empno=7934);(2)单行单列子查询培训专用(3)多行单列子查询p 多行单列子查询是指返回多行数据,且只返回一列的数据。p 运算符号运 算 符 含 义IN 与子 查询 返回 结 果中任何一个 值 相等NOT IN 与子 查询 返回 结 果中任何一个 值 都不等ANY 比子 查询 返回 结 果中某一个 值 大=ANY 与子 查询 返回 结 果中某一个 值 相等ALL 比子 查询 返回 结 果中所有 值 都大ALL 比子 查询 返回 结 果中任何一个 值 都小EXISTS 子 查询 至少返回一行 时 条件 为TRUENOT EXISTS 子 查询 不返回任何一行 时 条件 为TRUE培训专用p 查询与10 号部门某个员工工资相等的员工信息。n SELECT empno,ename,sal n FROM emp n WHERE sal IN n(SELECT sal FROM emp WHERE deptno=10);p 查询比10 号部门某个员工工资高的员工信息。n SELECT empno,ename,sal n FROM empn WHERE sal ANY n(SELECT sal FROM emp WHERE deptno=10);p 查询比10 号部门所有员工工资高的员工信息。n SELECT empno,ename,sal FROM empn WHERE sal ALL n(SELECT sal FROM emp WHERE deptno=10);培训专用(4)单行多列子查询p 单行多列子查询是指子查询返回一行数据,但是包含多列数据。p 多列数据进行比较时,可以成对比较,也可以非成对比较。成对比较要求多个列的数据必须同时匹配,而非成对比较则不要求多个列的数据同时匹配。培训专用p 查询与7844 号员工的工资、工种都相同的员工的信息。n SELECT empno,ename,sal,job FROM emp n WHERE(sal,job)=(SELECT sal,job FROM empn WHERE empno=7844);p 查询与10 号部门某个员工工资相同,工种也与10 号部门的某个员工相同的员工的信息。n SELECT empno,ename,sal,job FROM emp n WHERE sal IN(SELECT sal FROM emp WHERE n deptno=10)AND job IN(SELECT job FROM emp n WHERE deptno=10);培训专用(5)多行多列子查询p 多行多列子查询是指子查询返回多行数据,并且是多列数据。p 例如,查询与10 号部门某个员工的工资和工种都相同的员工的信息,语句为n SELECT empno,ename,sal,job FROM empn WHERE(sal,job)IN(n SELECT sal,job FROM emp WHERE deptno=10);培训专用(6)相关子查询p 子查询在执行时并不需要外部父查询的信息,这种子查询称为无关子查询。p 如果子查询在执行时需要引用外部父查询的信息,那么这种子查询就称为相关子查询。p 在相关子查询中经常使用EXISTS 或NOT EXISTS 谓词来实现。如果子查询返回结果,则条件为TRUE,如果子查询没有返回结果,则条件为FALSE。培训专用p 查询没有任何员工的部门号、部门名。n SELECT deptno,dname,loc FROM dept n WHERE NOT EXISTS(SELECT*FROM emp WHERE n emp.deptno=dept.deptno);p 查询比本部门平均工资高的员工信息。n SELECT empno,ename,sal n FROM emp e n WHERE sal(SELECT avg(sal)FROM emp WHERE n deptno=e.deptno);培训专用(7)在FROM 子句中使用子查询p 当在FROM 子句中使用子查询时,该子查询被作为视图对待,必须为该子查询指定别名。p 查询各个员工的员工号、员工名及其所在部门平均工资。n SELECT empno,ename,d.avgsal FROM emp,n(SELECT deptno,avg(sal)avgsal FROM emp GROUP n BY deptno)d WHERE emp.deptno=d.deptno;p 查询各个部门号、部门名、部门人数及部门平均工资。n SELECT dept.deptno,dname,d.amount,d.avgsal n FROM dept,(SELECT deptno,count(*)amount,n avg(sal)avgsal FROM emp GROUP BY deptno)d n WHERE dept.deptno=d.deptno;培训专用(8)在DDL 语句中使用子查询p 可以在CREATE TABLE 和CREATE VIEW 语句中使用子查询来创建表和视图。n CREATE TABLE emp_subquery n AS n SELECT empno,ename,sal FROM emp;n CREATE VIEW emp_view_subqueryn ASn SELECT*FROM emp WHERE sal2000;培训专用(9)使用WITH 子句的子查询p 如果在一个SQL 语句中多次使用同一个子查询,可以通过WITH 子句给子查询指定一个名字,从而可以实现通过名字引用该子查询,而不必每次都完整写出该子查询。p 查询人数最多的部门的信息。n SELECT*FROM deptn WHERE deptno IN(n SELECT deptno FROM emp GROUP BY deptno n HAVING count(*)=ALL(n SELECT count(*)FROM emp GROUP BY deptno)n);培训专用p 相同的子查询连续出现了两次,因此可以按下列方式编写查询语句。n WITH deptinfo AS(SELECT deptno,count(*)num n FROM emp GROUP BY deptno)n SELECT*FROM dept WHERE deptno IN(SELECT n deptno FROM deptinfo WHERE num=(SELECT n max(num)FROM deptinfo)n);培训专用13.2.6 合并查询p 语法p UNIONp INTERSECTp MINUS培训专用p 语法:SELECT query_statement1 UNION|UNION ALL|INTERSECT|MINUS SELECT query_statement2;p 注意:n 当要合并几个查询的结果集时,这几个查询的结果集必须具有相同的列数与数据类型。n 如果要对最终的结果集排序,只能在最后一个查询之后用ORDER BY 子句指明排序列。培训专用(1)UNIONp UNION 运算符用于获取几个查询结果集的并集,将重复的记录只保留一个,并且默认按第一列进行排序。p 查询10 号部门的员工号、员工名、工资和部门号以及工资大于2000 的所有员工的员工号、员工名、工资和部门号,语句为n SELECT empno,ename,sal,deptno n FROM emp WHERE deptno=10n UNIONn SELECT empno,ename,sal,deptno n FROM emp WHERE sal2000n ORDER BY deptno;培训专用p 如果要保留所有的重复记录,则需要使用UNION ALL 运算符。n SELECT empno,ename,sal,deptnon FROM emp WHERE deptno=10n UNION ALLn SELECT empno,ename,sal,deptno n FROM emp WHERE sal2000n ORDER BY deptno;培训专用(2)INTERSECTp INTERSECT 用于获取几个查询结果集的交集,只返回同时存在于几个查询结果集中的记录。同时,返回的最终结果集默认按第一列进行排序。p 查询30 号部门中工资大于2000 的员工号、员工名、工资和部门号,语句为:n SELECT empno,ename,sal,deptno n FROM emp WHERE deptno=30n INTERSECTn SELECT empno,ename,sal,deptno n FROM EMP WHERE sal2000;培训专用(3)MINUSp MINUS 用于获取几个查询结果集的差集,即返回在第一个结果集中存在,而在第二个结果集中不存在的记录。同时,返回的最终结果集默认按第一列进行排序。p 查询30 号部门中工种不是“SALESMAN”的员工号、员工名和工种名称,语句为:n SELECT empno,ename,job n FROM emp WHERE deptno=30n MINUSn SELECT empno,ename,job n FROM EMP WHERE job=SALESMAN;培训专用13.3 数据操纵p 插入数据p 修改数据p MERGE 语句 p 删除数据培训专用13.3.1 插入数据p 插入 单行记录p 利用子查询插入数据p 向多个表中插入数据培训专用(1)插入 单行记录p 语法n INSERT INTO table_name|view_name n(column1,column2)n VALUES(value1,values,)p 注意n 如果在INTO 子句中没有指明任何列名,则VALUES 子句中列值的个数、顺序、类型必须与表中列的个数、顺序、类型相匹配。n 如果在INTO 子句中指定了列名,则VALUES 子句中提供的列值的个数、顺序、类型必须与指定列的个数、顺序、类型按位置对应。n 向表或视图中插入的数据必须满足表的完整性约束。n 字符型和日期型数据在插入时要加单引号。日期类型数据需要按系统默认格式输入,或使用TO_DATE 函数进行日期转换。培训专用p 向dept 表中插入一行记录。n INSERT INTO dept VALUES(50,IM,dalian);p 向emp 表中插入一行记录。n INSERT INTO emp(empno,ename,sal,hiredate)n VALUES(1234,JOAN,2500,20-4 月-2007);培训专用(2)利用子查询插入数据 p 语法n INSERT INTO table_name|view_namen(column1,column2,)n subquery;p 注意n INTO 子句中指定的列的个数、顺序、类型必须与子查询中列的个数、顺序和类型相匹配。培训专用p 统计各个部门的部门号、部门最高工资和最低工资,并将统计的结果写入到表emp_salary(假设该表已经创建)中。n INSERT INTO emp_salary n SELECT deptno,max(sal),min(sal)FROM emp n GROUP BY deptno;p 向emp 表中插入一行记录,其员工名为FAN,员工号为1235,其他信息与员工名为SCOTT 的员工信息相同。n INSERT INTO emp n SELECT 1235,FAN,job,mgr,hiredate,sal,comm,deptnon FROM emp WHERE ename=SCOTT;培训专用p 如果要将大量数据插入表中,可以利用子查询直接装载的方式进行。由于直接装载数据的操作过程不写入日志文件,因此数据插入操作的速度大大提高。p 利用子查询装载数据语法为:n INSERT/*+APPEND*/INTO n table_name|view_name(column1,column2,)n subquery;p 复制emp 表中empno,ename,sal,deptno 四列的值,并插入到new_emp 表中,语句为:n INSERT/*+APPEND*/INTO n new_emp(empno,ename,sal,deptno)n SELECT empno,ename,sal,deptno from emp;培训专用13.3.2 修改数据p 基本语法p 修改单行记录p 修改多行记录p 带有子查询的修改培训专用p 基本语法n UPDATE table_name|view_namen SET column1=value1,column2=value2 n WHERE conditionp 修改单条记录n UPDATE emp SET sal=sal+100,comm=200 n WHERE empno=7844;p 修改多条记录n UPDATE emp SET sal=sal+150 n WHERE deptno=20;p 利用子查询修改记录n UPDATE emp SET sal=300+(SELECT avg(sal)n FROM emp WHERE deptno=10)n WHERE deptno=30;培训专用13.3.3 MERGE 语句p 利用MERGE 语句可以同时完成数据的插入与更新操作。p 将源表的数据分别与目标表中的数据根据特性条件进行比较(每次只比较一条记录),如果匹配,则利用源表中的记录更新目标表中的记录,如果不匹配,则将源表中的记录插入目标表中。p 使用MERGE 语句操作时,用户需要具有源表的SELECT 对象权限以及目标表的INSERT,UPDATE 对象权限。培训专用p MERGE 语句的基本语法为:n MERGE INTO schema.target_table target_alias n USING schema.source_table|source_view|n source_subquery source_aliasn ON(condition)n WHEN MATCHED THEN UPDATE SETn column1=expression1 n,column2=expression2 n where_clauseDELETE where_clausen WHEN NOT MATCHED THEN n INSERT(column2,column2)n VALUES(expresstion1,expression2)n where_clause;培训专用p 参数说明n INTO:指定进行数据更新或插入的目标表;n USING:指定用于目标表数据更新或插入的源表或视图或子查询;n ON:决定MERGE 语句执行更新操作还是插入操作的条件。对于目标表中满足条件的记录,则利用源表中的相应记录进行更新;而源表中不满条件的记录将被插入目标表中;n where_clause:只有当该条件为真时才进行数据的更新或插入操作;n DELETE where_clause:当目标表中更新后的记录满足该条件时,则删除该记录。培训专用p 使用“雇员”表(别名e)作为数据源,在该表 的副本“副本_ 雇员”表(别名c)中插入并更新行。p MERGE INTO 副本_ 雇员 c USING

    注意事项

    本文(Oracle第13章SQL语言基础.pptx)为本站会员(lil****205)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开