Oracle 层次查询、事务、VARCHAR2/CHAR

  1. 层次查询
SELECT employee_id, last_name, manager_id,salary
    FROM employees WHERE salary>10000
    START WITH employee_id='F00001'
    CONNECT BY PRIOR employee_id = manager_id;

先找到employee_id为F00001这条记录,接着找下一条记录,查找下一条记录条件为manager_id为F00001,然后根据第二条记录的employer_id的值做为manager_id找第三条记录,以此类推递归查询,最后找出salary大于10000的记录

  1. Oracle 事务
    两种基本模式的锁:排它锁,共享锁。当数据对象被加上排它锁时,其他的事物不能对他进行读取和修改,当加上共享锁时候,其它事物不能对他进行修改,但是可以进行读取。
    Oracle中主要锁为DML锁,DML锁包括TM锁表级锁,TX锁行级锁。当Oracle执行DML语句时,系统自动在所需要的表上申请TM模式的锁。当获得TM锁后,在自动申请TX模式的锁,并将实际锁定的数据行的锁标志为进行置位。这样在事务加锁前检查TX锁相容性时就不用在逐行进行检查锁标志,而只检查TM锁的相容性即可。
    TM锁是在表添加的锁,当一个事务执行insert,update,merge,delete语句,或使用select for update 语句进行查询,或执行lock table 语句时,事务获得操作表的TM锁。
    Oracle数据库中TM锁分为行级共享锁、行级排它锁、共享锁、共享行级排它锁和排他锁5中模式。
    LOCK TABLE 表名 IN SHARE MODE;
    LOCK TABLE 表名 IN EXCLUSIVE MODE NOWAIT;
    LOCK TABLE 表名 IN ROW SHARE MODE;
    LOCK TABLE 表名 IN ROW EXCLUSIVE MODE;
    LOCK TABLE 表名 IN SHARE ROW EXCLUSIVE MODE;
    当执行COMMIT 或 ROLLBACK 语句时,使用LOCK TABLE语句对表加的锁将自动解除。

  2. CHAR和VARCHAR2
    CHAR的长度时固定,VARCHAR2长度时可以变化的。VARCHAR2是按实际长度存储。
    因为CHAR长度固定,省去了判断实际长度在去寻址的操作,效率比VARCHAR2的效率稍高。
    如果一个一个字段经常被修改,而且每次被修改的数据长度不同,会引起行迁移现象,造成多余I/O,这是数据库设计中尽量避免的,在这种情况下CHAR代替VARCHAR2会好。
    CHAR使用场景:数据长度基本一致,且长度不易过长。数据更新频繁查询较少,可防止行迁移发生的概率,同时尽可能少见索引。DDL操作非常少,CHAR类型增加长度的开销是很大的。
    VARCHAR2使用场景:该字段数据长度不规则,差异大。数据更新较少,查询操作频繁,适量建立索引。DDL操作少,VARCHAR2类型增加长度也会加大行迁移发生概率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值