Orcale 学习 持续更新......

关键字:DISTINCT 
格式:SELECT DISTINCT 列名称 FROM 表名称
官方用语:关键词 DISTINCT 用于返回唯一不同的值。
大白话:用distinct可以去重。
关键字:trim()
格式:
trim(列名) ltrim() 去掉左空格 rtrim() 去掉右空格
官方用语:除去两端空格
大白话:用trim()函数去空格
关键字:order by
格式:SELECT 列名1,列名2 FROM Orders ORDER BY 列名官方用语:排序大白话:排序,默认按照升序,降序(DE关键字:for update
格式:sql语句  for update
官方用语:一种行级锁,又叫排它锁一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,
其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁.即
使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占
方式锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。
重点:
明确指定主键且数据存在  row lock
格式:select* from table where id=3 for update
明确主键且数据不存在  无lock
格式:select * from table where id=xx for update
主键不明确  table lock
格式:select * from where id = '1%'for update
无主键    table lock
格式; select 8 from where name = 'Tom' for update




注意的点:

Oracle
1.当且仅当要修改数据时,Orcale才会锁定数据(行级锁),不会提升到块级,页级,表级。
2.Orcale不会为读取数据而锁定数据,简单读取不会在行上产生锁。(除了使用for update)
3.平时常用的行级锁(Row leavel Lock) 常用的事务锁,没有开销
  a. read 不 阻塞 read
  b. read 不 阻塞 write
  c. write 不 阻塞 read
  d. write 不 阻塞 write(不同行)
4.Rollback Segments是在你数据库中的一些存储空间,它用来临时的保存当数据库数据发生改变时的先前值,Rollback Segment主要有两个目的:
  a.如果因为某种原因或者其他用用户想要通过ROLLBACK声明来取消一个人的数据操作,数据就会复原到之前为改变时的值。这种情况只在transaction的过程中有效,
   如果用户执行了COMMIT命令,那么ROLLBACK SEGMENT里面的值就会标识为失效的,数据改变就将永久化。
  b.另一个目的是当有并发的session访问了一个数据值改变但事务还没有提交的表。如果一个SELECT语句开始读取一个表同时一个事务也在修改这个表的值,那么修改
   前的值就会保存到rollback segment里面,SELECT语句也是从ROLLBACK SEGMENT里面读取表的值。

  5.特别注意 group by的用法

  在plsql中 计算函数 和 普通列名,同查会出现,不是单组分组函数 的报错。

  错误格式:select  a(普通列名),sum(b)(计算函数) from table(表名);

  正确格式:select  a,sum(b) as b from table group by a;

  

 



符号:<>表示不等于与!=表示相同,但避免使用<>

MYSQL
1.由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的
资料例) ,否则MySQL将会执行Table Lock (将整个资料表单给锁住)。

原文地址:https://www.cnblogs.com/money131/p/12970820.html