sql学习笔记 oracle相关

 

1 for update 说明

select * from user_t for update;

 首先一点,如果只是select 的话,Oracle是不会加任何锁的,也就是Oracle对 select 读到的数据不会有任何限制,虽然这时候有可能另外一个进程正在修改表中的数据,并且修改的结果可能影响到你目前select语句的结果,但是因为没有锁,所以select结果为当前时刻表中记录的状态。 

 如果加入了for update, 则Oracle一旦发现(符合查询条件的)这批数据正在被修改,则不会发出该select语句查询,直到数据被修改结束(被commit),马上自动执行这个select语句。 

 同样,如果该查询语句发出后,有人需要修改这批数据(中的一条或几条),它也必须等到查询结束后(commit)后,才能修改。

2 PL/SQL 对查询的结果直接进行修改有两种方法

select * from user_t for update;

select t.*,t.rowid from user_t t;

 

UNION UNION ALL的用法

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

UNION ALL

UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

 

select  account_name,account_age,'男' user_sex,'南宁' user_addresss from account_t a

union

select  user_name,age,u.sex user_sex,u.address user_addresss from user_t u;

 

在上面的例子中,accout_t表中没有sex和address两个字段,为了保证两个表的字段个数和数据类型一样,就给它加上两个具有指定值的列名(来自user_t表中的列)

4 聚合函数sum、avg、max、min等是作用在多条记录上,查询时如果和其他字段出现在select语句则必须使用group by 对结果进行排序。

select user_name,max(age) from user_t group by user_name;

你可能感兴趣的:(oracle,sql,学习)