DML data manipulation language
DDL Data Definition Language
DCL(Data Control Language
向表中插入空值:
显示插入
隐式插入
向表中插入日期
把字符串转换成日期格式并告诉给数据库日期的识别格式
To_Date(‘2007-02-02’,”yyyy-mm-dd”);
在SQL 语句中使用 & 变量指定列值。
在 INSERT 语句中加入子查询。
不必书写 VALUES 子句。
子查询中的值列表应与 INSERT 子句中的列名对应
Insert into a (a1,a2,a3)
Select (b1,b2,b3) from b;
在 UPDATE 中使用子查询,使更新基于另一个表中的
数据。
在 DELETE 中使用子查询,使删除基于另一个表
中的数据。
都是删除表中的数据
Delete操作可以rollback,可以闪回
Delete操作可能产生碎片,并且不释放空间
Truncate:清空表
数据库事务由以下的部分组成:
一个或多个DML 语句
一个 DDL(Data Definition Language – 数据定义语言) 语句
一个 DCL(Data Control Language – 数据控制语言) 语句
以第一个 DML 语句的执行作为开始
以下面的其中之一作为结束:
显示结束: commit rollback
隐式结束(自动提交): DDL语言,DCL语言, exit(事务正常退出)
隐式回滚(系统异常终了): 关闭窗口,死机,掉电
使用COMMIT 和 ROLLBACK语句,的 优点
确保数据完整性。
数据改变被提交之前预览。
将逻辑上相关的操作分组。
回滚到保留点:
使用 SAVEPOINT 语句在当前事务中创建保存点。
使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。
自动提交在以下情况中执行:
DDL 语句。
DCL 语句。
不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。
会话异常结束或系统异常会导致自动回滚。
提交或回滚前的数据状态
改变前的数据状态是可以恢复的
执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正
其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
DML语句所涉及到的行被锁定, 其他用户不能操作。
提交后的数据状态
数据的改变已经被保存到数据库中。
改变前的数据已经丢失。
所有用户可以看到结果。
锁被释放, 其他用户可以操作涉及到的数据。
所有保存点被释放。
数据库的隔离级别
对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:
脏读: 对于两个事物 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段. 之后, 若 T2 回滚, T1读取的内容就是临时且无效的.
不可重复读: 对于两个事物 T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段. 之后, T1再次读取同一个字段, 值就不同了.
幻读: 对于两个事物 T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的行. 之后, 如果 T1 再次读取同一个表, 就会多出几行.
数据库事务的隔离性: 数据库系统必须具有隔离并发运行各个事务的能力, 使它们不会相互影响, 避免各种并发问题.
一个事务与其他事务隔离的程度称为隔离级别. 数据库规定了多种事务隔离级别, 不同隔离级别对应不同的干扰程度, 隔离级别越高, 数据一致性就越好, 但并发性越弱
Oracle 支持的 2 种事务隔离级别:READ COMMITED, SERIALIZABLE. Oracle 默认的事务隔离级别为: READ COMMITED
Mysql 支持 4 中事务隔离级别. Mysql 默认的事务隔离级别为: REPEATABLE READ
====================
datalink 数据库通信
创建表 必须首先要有权限
rowid维护一个地址,该地址指向在硬盘上的位置
DROP TABALE首先放入到了回收站
purge 彻底删除
select * from tab;
查看回收站
show recyclebin;
purge recyclebin;
视图时由一个表或多个表组成的逻辑表
create or replace tablename(empno,ename,
sal,deptno)
as
select empno,ename,sal,deptno from emp;
or replace 如果名字重复就替换
同样创建视图要有权限
序列默认一次创建20个值放入内存
序列可能不连续
Conn to hr/hr 切换用户
给用户加上视图权限
grant create view to scott;
权限的种类(session,table,sequence,view,procedure)
rownum:伪列
1.rownum 一旦生成就会不变
2.rownum 只能使用<= 不能使用> 或>=
@c:\sql.sql 运行脚本文件
delete 一条一条删除truncate 清空表效率高
delete可以回滚 truncate不可以
delete产生碎片 trunctate不产生
delete删除数据后 空间还在 不会释放空间
truncate 释放空间