Oracle Oracle Oracle Oracle 1977Software Development LaboratoriesSDL 1979Relational
Oracle简介 Oracle数据库管理系统 Oracle(甲骨文)公司 Oracle公司的核心产品 1977年,三人合伙创办(Software Development Laboratories,SDL) 目前最流行的数据库 1979年,更名为Relational Software Inc. ,RSI 主要版本Oracle 8 i/9 i(internet)、Oracle 10 g/11 g(grid) ,RSI更名为Oracle 1983年,为了突出核心产品 基于C/S系统结构 2002年 04月26日,启用“甲骨文”作为中文注册商标 5/46
分页 如何从EMP表中查询出薪水从高到低排序的第 5~9条 记录? 提问 使用伪列ROWNUM实现分页查询 分析 SELECT * FROM ( SELECT e. *, rownum rn FROM ( SELECT * FROM emp ORDER BY sal DESC) e ) WHERE rn>=5 AND rn<=9 19/46
SQL 简介 数据定义语言(DDL) CREATE ALERT DROP TRUNCATE 事务控制语言(TCL) COMMIT SAVEPOINT ROLLBACK 数据操纵语言(DML) SQL 语言 INSERT UPDATE DELETE SELECT 数据控制语言(DCL) GRANT REVOKE 21/46
数据操纵语言4 -1 示例 不重复显示所有学员姓名和年龄 SQL>SELECT DISTINCT stu. Name, stu. Age FROM stu. Info; 按照姓名升序,如果姓名相同按照年龄降序排序 SQL>SELECT stu. No, stu. Name, stu. Age FROM stu. Info WHERE stu. Age>17 ORDER BY stu. Name ASC, stu. Age DESC; 升序 演示示例4:操纵stu. Info表 降序 23/46
数据操纵语言4 -2 使用别名显示姓 名、年 龄和身份证号列 示例 SQL> SELECT stu. Name as "姓 名", stu. Age as "年 龄", stu. ID as 身份证号 FROM Stu. Info; 利用现有的表创建新表 SQL> CREATE TABLE new. Stu. Info 1 AS SELECT * FROM Stu. Info; 含有特殊字符(如空格)加双引号 选择所有数据 SQL> CREATE TABLE new. Stu. Info 2 选择指定的列所有数据 AS SELECT stu. Name, stu. No, stu. Age FROM Stu. Info; SQL> CREATE TABLE new. Stu. Info 2 AS SELECT stu. Name, stu. No, stu. Age FROM Stu. Info WHERE 1=2; 只留表结构,不留数据 24/46
数据操纵语言4 -3 示例 查看表中行数 执行效率低 SQL>SELECT COUNT (*) FROM stu. Info; SQL>SELECT COUNT (1) FROM stu. Info; 执行效率高 取出stu. Name, stu. Age列不存在重复数据的记录 SQL> SELECT stu. Name, stu. Age FROM stu. Info GROUP BY stu. Name, stu. Age HAVING(COUNT(stu. Name||stu. Age) <2); 重复的个数 为 1 25/46
数据操纵语言4 -4 示例 删除stu. Name、stu. Age列重复的行(保留一行) SQL>DELETE FROM stu. Info WHERE ROWID NOT IN( SELECT max(ROWID) FROM stu. Info GROUP BY stu. Name, stu. Age ); 26/46
事务控制语言2 -1 用于事务控制的语句 COMMIT ROLLBACK SAVEPOINT ROLLBACK TO <Save. Point_Name> 提问 下列代码执行后,结果集是否包含 50、60和70的记录? 为什么? SQL>INSERT INTO dept VALUES(50, 'a', null); SQL>INSERT INTO dept VALUES(60, 'b', null); SQL>SAVEPOINT a; SQL>INSERT INTO dept VALUES(70, 'c', null); SQL>ROLLBACK TO SAVEPOINT a; SQL>COMMIT; SQL>SELECT * FROM dept; 演示示例5:事务控制语言 27/46
转换函数 转换函数将值从一种数据类型转换为另一种数据类型 常用的转换函数 TO_CHAR() TO_DATE() 示例 TO_NUMBER() SELECT TO_CHAR(sysdate, 'YYYY"年"fm. MM"月"fm. DD"日" HH 24: MI: SS') FROM dual; SELECT TO_CHAR(1210. 7, '$9, 999. 00') FROM dual; SELECT TO_DATE('2005 -12 -06', 'yyyy-mm-dd') FROM dual; SELECT TO_NUMBER('100') FROM dual; 演示示例7:转换函数 36/46
其它函数 转换空值的函数 NVL 示例 DECODE SELECT ename, sal+NVL(comm, 0) sal 1, NVL 2(comm, sal+comm, sal) sal 2, DECODE(to_char(hiredate, ‘MM ’), '01', '一月', '02', '二月', '03', '三月', '04', '四月', '05', '五月', '06', '六月', '下半年') mon FROM employee; 演示示例8:其他函数 37/46
- Slides: 46