现在的位置: 首页 > 综合 > 正文

PL/SQL培训之 基本语法

2017年12月19日 ⁄ 综合 ⁄ 共 1367字 ⁄ 字号 评论关闭

SQL基本语法

SQL分类

数据定义语言DDLCREATE/DROP/ALTER/COMMENT/TRUNCATE

数据操作语言DMLUPDATE/DELETE/INSERT/CALL/SELECT FOR UPDATE

数据控制语言DCLGRANT/REVOKE/COMMIT/ROLLBACK

 

SELECT FOR UPDATE

SELECT FOR UPDATE锁住某个表的相关行。

如果是多表查询:

SELECT FOR UPDATE of table.column 

----用来表连接时锁住其中一个表的相关行;

----否则将锁住所有表(包括from子查询,不包括条件子查询)的相关行

举例:

SELECT t1.id, t2.info

FROM test_table1 t1, test_table2 t2

WHERE t1.id = t2.id

FOR UPDATE of t1.id

 

 

LOCK TABLE

LOCK TABLE table_name IN lockmode MODE (NOWAIT)

LOCK TABLE tanjie21 IN SHARE UPDATE MODE;  --同下

LOCK TABLE tanjie21 IN ROW SHARE MODE;  --行共享锁,其他会话无法获得排他锁
LOCK TABLE tanjie22 IN ROW EXCLUSIVE MODE; --
行排他锁,禁止SHARE锁定

--UPDATE/DELETE/INSERT自动获得
LOCK TABLE tanjie23 IN SHARE MODE; --
表共享锁
LOCK TABLE tanjie24 IN EXCLUSIVE  MODE; --
表排他锁
LOCK TABLE tanjie25 IN SHARE ROW EXCLUSIVE MODE; --
表级共享行级排他

 

 

 

WAIT/NOWAIT

NOWAIT           --ora-00054

WAIT integer()    --ora-30006

 

 

 

EXECUTE IMMEDIATE

处理动态SQL的两种方式:

1EXECUTE IMMEDIATE

2OPEN-FOR, FETCH, and CLOSE

性能优化(以后再讲):BULK EXECUTE IMMEDIATE

 

EXECUTE IMMEDIATE的完整语法:

EXECUTE IMMEDIATE dynamic_SQL_string

[INTO defined_variable1, defined_variable2, ...]

[USING [IN | OUT | IN OUT] bind_argument1, bind_argument2, ...]

[RETURNING INTO | RETURN bind_argument1, bind_argument2, ...]

 

使用INTO子句确定返回的是单行查询结果(与SELECT INTO类似)

 

 

 

SUB QUERY

标准子查询:和主查询没有直接联系,在ORACLE中首先执行且只执行一次

关联子查询:在执行过程中需要与主查询发生联系,如子查询的条件依赖于主查询传递的条件。

 

单值:=    

----注意要确保子查询出来的记录最多只有一条,如果没有返回记录,需要注意空的处理

----尤其是update

多值:IN/NOT IN/EXISTS/NOT EXISTS/ANY/SOME/ALL

 

ANY/SOME/ALL前必须加 =,<>,>=,<= 等连接符

 

抱歉!评论已关闭.