5/10:
oracle的逻辑结构:
1)tablespace表空间:oracle中最大的逻辑结构,每一个tablespace隶属于一个database,其中有一个tablespace叫做system,用来存储系统的存储过程、函数、数据字典等等,也可以存放用户的表、索引。
2)segament段:oracle中有数据段、索引段、回滚段、临时段。数据段用来存放数据,索引段用来存放索引,回滚段对应事务,一对多,一个事务对应一个回滚段,一个回滚段可以对应多个事务,临时段在order by时产生。
3)extent区:磁盘空间分配的最小单元。
4)data block数据块:数据文件磁盘存储空间单位,最小的I/O单元。
oracle安装完毕后,会自动分配三个角色:sys超级管理员,system系统管理员,scott普通用户。(请注意sysdba并不是用户名,它是一种权限)
for update在select字句中将会放置一行或多行的排它锁(记录锁定,相对应的lock table表锁定)
oracle同义词:CREATE [PUBLIC] SYNONYM synonym FOR object;
有Public创建出来的就是共有同义词,所有用户都可以访问,否则只有创建的用户可以使用。同义词可以取代用户名.表名直接使用,如果出现同名public synonym和私有synonym,以私有为先。
savepoint可以设置回滚点。语法:
SAVEPOINT save_point;
ROLLBACK TO SAVEPOINT save_point;
oracle中的单引号和双引号:
单引号有两个作用:引用字符串/转义
双引号在字符串中只是一个普通字符,在to_char中有特殊用法,用来包装非法的格式,当去掉引号包装的格式后,应该是语法正确的引用。如to_char(sysdate,'hh24"小时"mm"分"ss"秒"')
oracle的序列在修改时,若想要修改起始值,必须删除序列再重新创建。
oracle的视图可以在子查询中的where语句后加上with check option,若如此做,当对视图进行DML操作时,如果更新后的数据违反了where条件,就会返回错误信息。如果没有where语句,加上with check opiton,并不影响什么。
oracle的视图在做DML操作时需要注意:出现以下:
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
时,将不能执行DML。对于update和insert,如果有列的定义是表达式,则不能操作。对于insert,如果有非空列未被包含,也不能操作。
关于oracle的索引,将会专门开一博客
关于oracle游标,将会专门开一博客