OCP复习 - PLSQL(11-15) -DML和对象修改SQL

来源:互联网 发布:数据泄密的主要途径 编辑:程序博客网 时间:2024/06/06 20:22

1、DML语句
注意INSERT和DELETE语句的正确语法
INSERT INTO TABLE1(COL1, COL2) SELECT COL1, COL2 FROM TABLE2 WHERE ...
DELETE [FROM] TABLE1 WHERE ...

2、关于事务控制的语法和理解
几个DML可以是一个事务,但一个DCL/DDL语句就是一个事务。

事务控制的SQL语句:
COMMIT
SAVEPOINT [name]
ROLLBACK [TO savepoint_name]

事务必然涉及到数据一致性和锁表,默认情况下ORACLE的锁表策略是行级。也可以使用LOCK TABLE来锁表。

其他两个语句:
SELECT ... FOR UPDATE
SET TRANSACTION READ ONLY

3、修改表的列定义

ALTER TABLE XXX ADD ( COLUMN datatype [DEFAULT xxx] [NOT NULL], col2, ... )
ALTER TABLE XXX MODIFY ( COLUMN datatype [DEFAULT xxx] [NOT NULL], col2, ... )

4、修改表的约束(注意ENABLE和DISABLE语句)

ALTER TABLE XXX ADD CONSTRAINT cons_name cons_type (column)
ALTER TABLE XXX DROP CONSTRAINT cons_name [CASCADE]
ALTER TABLE table1 ADD CONSTRAINT cons1 FOREIGN KEY(column1) REFERENCES table2(column2)
ALTER TABLE XXX DROP PRIMARY KEY
ALTER TABLE XXX DROP UNIQUE(col1)
ALTER TABLE XXX DISABLE CONSTRAINT cons_name [CASCADE]
ALTER TABLE XXX ENABLE CONSTRAINT cons_name

5、重命名对象
RENAME命令可用于重命名一个表、视图、同义词、序列
RENAME obj1 to obj2

6、TRUNCATE一个表,注意TABLE关键字是存在的
TRUNCATE TABLE table1

7、序列的用法:
CREATE/ALTER SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]

SEQUENCE被保存在DBA_SEQUENCES字典表中。

使用SEQUENCE的方法:INSERT INTO XXX VALUES(seq_1.NEXTVAL)
查看SEQUENCE当前值的方法:select seq1.CURRVAL from sys.dual

删除SEQUENCE的方法:DROP SEQUENCE XXX

8、视图的相关语法
创建一个视图的方法,注意OR REPLACE关键字可以用来替代一个已经存在的视图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]

删除一个视图:DROP VIEW XXX

9、索引的相关语法
CREATE INDEX index
ON table (column[, column]...);

删除一个索引: DROP INDEX XXX --注意索引名称是全局的,而不是依附于一个表的。
注意ORACLE不推荐在INDEX上使用UNIQUE关键字,如果有需要,应该建立一个CONSTRAINT.