记录于2012-5-16
第4章 使用SQL语句 笔记
1.desc显示表的结构,是SQL*Plus命令
2.set pagesize 5[可定义] 作用查询emp表以5条记录做一次分隔符
3.检索日期列
注意:日期数据的默认显示格式为“DD-MON-YY”,如果希望使用显示格式(yyyy-mm-dd),那么必须 使用TO_CHAR函数进行转换。
4.取消重复行关键字distinct
5.使用算术表达式
当执行查询操作时,可以在数字列上使用算术表达式(+,-,X,/)
示例:select ename,sal*12 from emp;
6.使用列别名 as关键字 双引号
7.处理NULL
NULL表示未知值,它既不是空格也不是0
使用nvl函数解决null值的问题
8.连接字符串|| 在字符串中要加入数字值,那么在“||"后可以指定数字;如果加字符和日期值, 则必须用单引号引住
示例:SQL> select ename||900,ename||'2000-09-09' from emp;
9.使用first操作符执行多表插入
10.更新关联数据
update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SMITH')
WHERE ename='SCOTT';
11.使用TRUNCATE Table截断表
当使用delete语句删除表的所有数据时,不会释放表所占用的空间。
TRUNCATE Table 语句不仅删除表的所有数据时,而且会释放表所占用的空间,删除表的速度更 快。
注意:delete语句的操作可以回退。
12.事务用于确保数据库的一致性,它由一组相关的DML语句组成。该组DML语句所执行的操作要么全 部成功,要么全部取消。
13.事务和锁
当执行事务操作(DML语句)时,Oracle会在被作用表上加表锁,以防止其他用户改变表结构;同时会在被作用行上加行锁,以防止其他事务在相应行执行DML操作。
在Oracle数据库中,为了确保数据库数据的读一致性,不允许其他用户读取脏数据(未提交事务)。假如会话A将雇员SCOTT工资修改为2000(未提交),那么其他会话将只能查询原来的工资;只有在会话A提交了事务之后,其他会话才能查询到新工资。
14提交事务
使用COMMIT语句可以提交事务。当执行了COMMIT语句之后,会确认事务变化、结束事务、删除保存点、释放锁。当使用COMMIT语句结束事务之后,其他会话将可以查看到事务变化后的新数据。
当出现以下情况时会自动提交事务:
a.当执行DDL语句时会自动提交事务,例如CREATE TABLE,ALTER TABLE,DROP TABLE等语句;
b.当执行DCL语句(GRANT、REVOKE)时。
c.当退出SQL*Plus时。
15回退事务
在介绍回退事务之前,先给大家介绍一下保存点(savepoint)的概念和作用。保存点是事务中的一点,它用于取消部分事务。当结束事务时,会自动删除该事务所定义的所有保存点。在执行ROLLBACK命令时,通过指定保存点可以取消部分事务。
1.设置保存点
设置保存点是使用SQL命令SAVEPoint来完成的。另外,开发人员在编写应用程序时,也可以使用包DBMS_TRANSACTION的过程SAVEPOINT来设置保存点。
示例如下:
savepoint a;
或
exec dbms_transaction.savepoint('a')
2.取消部分事务
为了取消部分事务,用户可以回退到保存点。回退到保存点即可以使用ROLLBACK命令,也可以使用包DBMS_TRANSACTION的过程ROLLBACK_SAVEPOINT.示例如下
rollback to a;
或
exec dbms_transaction.rollback_savepoint('a');
3.取消全部事务
使用ROLLBACK命令可以取消全部,也可以使用包DBMS_TRANSACTION的过程ROLLBACK取消全部事务
示例如下:
rollback;
或
exec dbms_transaction.rollback
4.只读事务
只读事务是指只允许执行查询操作,而不允许执行任何DML操作的事务。
注意,当设置只读事务时,该语句必须是事务开始的第一条语句。
示例如下:
set transaction read only;
或
exec dbms_transaction.read_only
5.顺序事务
set transaction isolation level serializable;
只读事务是指只允许执行查询操作,而允许执行任何DML操作的事务。
记录于2012-5-18 0:27
【合并查询】
1.合并多个select语句的结果,可以使用集合操作符union,union all,intersect 和minus
(a)UNION操作符用于获取两个结果集的并集。会自动去掉结果集中的重复行,并且会以第一列的结果排序。
(a)UNION ALL操作符用于获取两个结果集的并集。不会自动去掉结果集中的重复行,而且也不会以任何列进行排序。
(c)INTERSECT操作符用于获取两个结果集的交集。只会显示同时存在于两个结果集中的数据,并且会以第一列的结果排序。
(d)MINUS操作符用于获取两个结果集的差集。只会显示在第一个结果集中存在,在第二结果集中不存在的数据,并且会以第一列的结 果排序。
【其他复杂查询】
层次查询
cast表达式 语法 select ...when..then end from 表名 使用when子句可以指定条件语句。
倒叙查询
使用WITH子句重用子查询