Oracle知识总结PPT:NVL函数,DECODE函数的使用 ,死锁,自联接等【诗书画唱】
可搜索内容(这里含PPT的部分内容的索引词条):
02_Oracle的对象操作.ppt
表的创建
表的修改
表的删除
约束的类型
NVL函数的使用
DECODE函数的使用
自联接
行级锁
表级锁
死锁

02_Oracle的对象操作.ppt START

ORACLE网络配置(包括三个配置文件)
ORACLE企业管理其中创建用户
ORACLE9i中的三个默认用户
ORACLE中的权限分配
ORACLE数据类型

ORACLE中的表的创建、修改和删除及其相关约束
ORACLE中的系统函数
ORACLE中的查询、集合操作
ORACLE中的事务
ORACLE中锁的概念
ORACLE中视图、索引、序列、同义词

表的命名规范
可以包含1 到 128 个字符,包括字母、符号和数字
第一个字符必须是字母
首字符之后的字符可以包括字母、数字或 #、$ 符号及 _
除非在引号内定义对象名称,否则不允许有空格



































































02_Oracle的对象操作.ppt END
表的创建 START
CREATE TABLE [schema.]表名
(字段名1 数据类型 [DEFAULT expression] [constraint],
字段名2 数据类型 [DEFAULT expression] [constraint],
……)
[STORAGE子句]
[其他子句…];
例如:
CREATE TABLE NEW_STU
( STUNO NUMBER(4,2),
STUNAME VARCHAR2(6) not null,
ADDRESS VARCHAR2(20));
比较:
CREATE TABLE EMP_BAK AS SELECT * FROM EMP;
CREATE TABLE EMP_BAK1 AS SELECT * FROM EMP WHERE 1=2;
表的创建 END
表的修改 START
ALTER TABLE [schema.]表名
[ADD { column datatype [DEFAULT expr]
[column_constraint] ... | table_constraint
} |
{ column datatype [DEFAULT expr]
[column_constraint] ... | table_constraint
}
] 添加表的属性
[MODIFY column [datatype] [DEFAULT expr] [column_constraint] ...
| (column [datatype] [DEFAULT expr] [column_constraint] ...
]修改表的属性
[DROP COLUMN] 列名 删除表中的属性
例如:ALTER TABLE NEW_STU ADD SEXY CHAR(2);
表的修改 END
表的删除 START
DROP TABLE [schema.]表名
[CASCADE CONSTRAINTS]
其中CASCADE CONSTRAINTS代表级联删除所有约束
例如:
DROP TABLE NEW_STU CASCADE CONSTRAINTS;
表的删除 END
约束的类型 START
主键约束 primary key
确保字段值不重复不为NULL
外键约束 foreign key
确保字段值必须来自于指定表
非空约束 NOT NULL
确保字段值不为NULL
检查约束 check
确保字段值的取值范围
唯一约束 unique
确保字段值不重复
约束的类型 END
NVL函数的使用 START

SQL> SELECT ename, salary, (salary*12)+NVL(subsidy,0)
2 FROM emp;
ENAME SALARY (SALARY*12)+NVL(SUBSIDY,0)
---------- --------- --------- ---------------KING 60000 5000
BLAKE 34200 2850
CLARK 29400 2450
...
14 rows selected.
NVL函数的使用 END
DECODE函数的使用 START

SQL> SELECT job, salary,
2 DECODE(job, 'ANALYST', SAL*1.1,
3 'CLERK', SAL*1.15,
4 'MANAGER', SAL*1.20,
5 SAL)
6 REVISED_SALARY
7 FROM emp;
JOB SAL REVISED_SALARY
--------- --------- --------------
PRESIDENT 5000 5000
MANAGER 2850 3420
MANAGER 2450 2940
...
14 rows selected.
DECODE函数的使用 END
自联接 START
自连接就是把某一张表中的行同该表中另外一些行连接起来。自连接主要用于查询比较相同的信息,所比较的列必须有相同的或兼容的数据类型。
为了连接同一个表,需要为该表指定两个不同的别名,只有这样才能把该表逻辑上作为两个不同的表使用。
例如
select a.ename,a.sal,b.ename
from emp a,emp b
where a.deptno=b.deptno;

自联接 END
行级锁 START
SELECT … FOR UPDATE语法:
SELECT … FOR UPDATE [OF columns][WAIT n | NOWAIT];
SQL> SELECT * FROM order_master WHERE vencode=’V002’
FOR UPDATE OF odate, del_date;
SQL> UPDATE order_master SET del_date=’28-8月-05’
WHERE vencode=’V002’;
SQL> COMMIT;
SQL> SELECT * FROM order_master WHERE vencode=’V002’
FOR UPDATE WAIT 5;
SQL> SELECT * FROM order_master WHERE vencode=’V002’
FOR UPDATE NOWAIT;
行级锁 END
表级锁 START
行共享 (ROW SHARE) – 禁止排他锁定表(EXCLUSIVE),但是可以进行DML语句操作
行排他(ROW EXCLUSIVE) – 禁止使用排他锁和共享锁
共享锁(SHARE)--目的就是对表只读
锁定表,仅允许其他用户查询表中的行
禁止其他用户插入、更新和删除行
多个用户可以同时在同一个表上应用此锁
共享 行排他(SHARE ROW EXCLUSIVE) – 比共享锁更多的限制,禁止使用共享锁及更高的锁
排他(EXCLUSIVE) – 限制最强的表锁,仅允许其他用户查询该表的行。禁止修改和锁定表
表级锁 END
死锁 START
当两个事务相互等待对方释放资源时,就会形成死锁
Oracle会自动检测死锁,并通过结束其中的一个事务来解决死锁
右边是一个死锁的例子


