Oracle数据库高级学习笔记
Oracle 数据库高级
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。
优点:数据安全性强,稳定性强
1. 合并查询
在实际开发过程中,为了合并多个结果集,可以采用以下操作符:
- union(并集去重复)
- union all(并集不去重复)
- intersect(交集)
- minus(差集)
语法:
select 字段1, 字段2 from 表名 where 条件字段 = 值
结果集操作符
select 字段1, 字段2 from 表名 where 条件字段 = 值
注:结果集查询字段必须一模一样,字段顺序必须一样
在oracle语句中去除重复有三种:distinct、group、union
2. 序列
序列相当于一个数字生成器,生成一个唯一的数字,一般用于生成自增主键
2.1 创建格式
create sequence 序列名 `(序列名格式 = 表名_seq; / 序列名格式 = seq_表名;)`
increment by 1 --每次的增量(步长)
start with 1 --初始值
maxvalue (28个9) --最大值
minvalue 1 --最小值
cache 20 --缓冲区大小
2.2 简单创建方式
creat sequence 序列名;
2.3 修改序列
alter sequence 序列名 属性名 属性值;
注:不能修改start with(初始值)
修改minvalue(最小值)时,不能大于下一个值
2.4 删除序列
drop sequence 序列名;
2.5 查询序列值
查看当前值:select 序列名.currval from dual;
查看下一个值:select 序列名.nextval from dual;
3. 视图(view)
视图是通过一条查询SQL语句产生的虚拟表,把查询SQL语句的结果集当成一张表视图一般用于查询
3.1 创建视图格式
create or replace view 视图名 as 查询语句
3.2 视图的优缺点
- 优点:
- 视图可以选择性的去除表中部分数据,更灵活
- 用户可以通过简单的SQL语句查询出复杂的结果
- 视图独立性强,利于后期维护
- 安全性高,操作视图需要一定的权限,删除视图不影响物理表
- 相同的数据,可以产生不同的视图
- 缺点:
- 视图并没有提高查询效率,什么时候查询视图,才会执行视图中的SQL语句,视图不会预编译的
4. 索引(优化查询)
4.1 索引的作用:
索引用来提高表的查询效率,相当于书的目录,根据页码快速查询到数据存放的位置,索引作用在字段
4.2 什么样的字段适合建索引?
- 经常被查询的字段
- 不为空且字段值不重复
- 字段的值不经常改变
- 主键默认建唯一索引(唯一约束默认建唯一索引)
- 索引不是越多越好,一般一张表上最多添加2-3个索引
- 如果索引过多,数据库添加数据和删除数据时效率就会变低,并且增加数据库负担
4.3 创建索引
- 普通索引
create index 索引名字 on 表名(字段名)
- 唯一索引
create unique index 索引名字 on 表名(字段名)
- 复合普通索引
create index 索引名字 on 表名(字段名1,字段名2)
- 复合唯一索引(多个字段值相加不能重复)
create unique index 索引名字 on 表名(字段名1,字段名2)
- 删除索引
drop index 字段名字
- 重建索引
alter index 索引名字 rebuild reverse
- 索引的使用
在SQL语句汇总where条件使用到索引字段,自然会走索引,无需调用 - 以下情况不走索引
- 复合索引必须多个字段同时被查询
- 全模糊、前模糊查询不走索引
- 索引字段不能作用于运算
- 索引字段不能作用于函数
- 索引的优缺点
- 优点:提高查询效率
- 缺点:
- 增加存储空间
- 添加、修改、删除的效率降低
5. exists与in的区别
exists与in的作用是一样的,区别如下:
- 外表大于内嵌的表使用in
- 内嵌表大于外表使用exists
6. 如何优化SQL语句
- 少用
select *
,查询几个字段就写几个字段
- 能精确查询绝不模糊查询
- 多表查询时减少临时表的产生,能用两张表查询绝不用三张表
- 使用大数据表关联小数据表
- 使用or代替in
- 合理使用in与exists
- where条件中能过滤掉大数据的放后面(where条件是从右到左执行的)
7. Oracle分页查询
7.1 oracle分页查询语句
select * from (
select t.*, rownum m from 表名 t where rownum <= ?
) where m >= ?
7.2 分页流
public class Page {
1. 上一页
2. 下一页
3. 当前页
4. 总页数
5. 总条数
6. 每页显示多少条
7. 首页
8. 尾页
9. 搜索的开始位置
10. 搜索的结束位置
11. 结果集
}
开始位置 =(当前页 - 1) * 每页显示多少条 + 1
结束为止 = 当前页 * 每页显示多少条
本文来自博客园,作者:Schieber,转载请注明原文链接:https://www.cnblogs.com/xiqingbo/p/oracle-02.html