#web开发/czh_blog/数据库
2017年8月31日 下午2:35
索引
- 主键索引,唯一索引(unique)
- 索引: index 建立索引是为了提高查询速度 但是对于频繁改动的字段添加索引会降低性能
- 在创建表或者改变表内字段约束时, primary key 和 unique 约束会自动为该字段创建对应索引
- 索引的用途: 在查询时将索引字段用于条件判断可以提升速度(性能)
- 慎用!!
- 索引的创建 与 删除
1
2
3create index stu_s_name on stu(s_name)
drop index stu_s_name
事务在不同数据库中的不同
- MYSQL和Windows sqlSEVER 默认开启自动提交
- 在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。
- 因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。
- 当使用begin时,就不会自动提交了
- ORACL中需要手动的commit进行提交,不会默认进行提交
- 参考MySQL 事务 | 菜鸟教程
- 在没有commit之前,是可以回滚的
- 但是commit之后就不可以回滚了,同时,前面设置的回滚点也会失效
注:
- 在一个查询窗口中,没有commit的insert操作是不写入磁盘的。这时的insert的操作只是影响内存的数据
- 在PL/SQL中(软件),如果一个sql insert执行完没有commit,在当前查询窗口中,查询select是可以出表的变化的。
- 但是,但如果换一个查询窗口,或者去表中去看,其实是没有插入的,这就是因为oracle不是自动commit事务,需要手动提交,
- 你在当前查询窗口中可以查询出表的变化,是因为在当前窗口中是从当前查询表对应的内存去查询,并不是去硬盘上去查询
sequence 序列
- mysql SQLServer 由表自身维护主键
- Oracle 由对象维护主键 需要有SQL进行配合(这里的对象指的是sequence对象)
- 不一定保证连续
- 每行调用nextval后都会自增
- 同一行多次调用后只会自增一次
- 想使用currval 必须先调用一次 nextval 否则序列不会自动初始化
1 | create sequence seq_stu |
创建索引
自动创建索引
case
exists
sequence
用户 表空间 版本号