PL/SQL 第4章 使用SQL 笔记

这篇笔记详细介绍了Oracle中的SQL使用,包括desc显示表结构、取消重复行、算术表达式、处理NULL值、字符串连接、多表插入、更新关联数据、截断表、事务处理、保存点及回退事务、合并查询和其他复杂查询,如层次查询和倒叙查询等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录于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子句重用子查询

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值