当前位置:
文档之家› oracle索引序列查询分组排序连接视图等
oracle索引序列查询分组排序连接视图等
SQL> CREATE SEQUENCE toys_seq START WITH 10 INCREMENT BY 10 MAXVALUE 2000 MINVALUE 10 NOCYCLE CACHE 10;
在达到最大值后停止生成下一个值 指定第一个序号从 指定序号之间的间隔为 表示序列的最大值为 表示序列的最小值为 1010 2000 开始 10 指定内存中预先分配的序号数
使用DROP SEQUENCE语句删除序列
SQL> DROP SEQUENCE toys_seq;
数据库的查询
SELECT 语句的格式 - SELECT[predicate]{*|table.*|[table.]field[,[table.]field2[,... ]]} [AS alias1 [,alias2[,...]]] FROM tableexpression [,...] [WHERE...] [GROUP BY...] [HAVING...]
本章目标
索引 序列 聚合函数 排序 分组 连接查询
视图
索引
什么是做引?
- 一种用户提升查询效率的数据库对象
- 通过快速定位数据的方法,减少磁盘I/O操作 - 索引信息与表独立存放 - oracle数据库自动使用和维护做引
索引分类
- 唯一性索引 - 非唯一性索引
创建索引的方式
×
聚合函数-2
MAX、MIN SELECT AVG(SCore) AS 平均成绩, MAX (Score) AS 最高分, MIN (Score) AS 最低分 From Score WHERE Score >=60
创建索引的原则
Байду номын сангаас 下列情况下可以创建索引
字段取值分布范围很广 字段中报刊大量的空值 字段经常出现在where子句或者连接条件中 表经常被访问、数据量很大,且通常每次访问的数据量小于记录总量 的2%-4%
表很小 字段不经常出现在where子句中 每次访问的数据量大于记录总数的2%-4% 表经常更新 被索引的字段作为表达式的一部分被引用
数据查询-排序 2
按多列排序
SELECT StudentID As 学员编号, Score As 成绩 FROM Score WHERE Score>60 ORDER BY Score,CourseID
思考:排序中的字段,可以使用表达式吗? —— 如果不可以,请说明原因; —— 如果可以,请举例说明;
指定序列的下一个值
SQL> SELECT toys_seq.CURRVAL FROM dual;
检索序列的当前值
更改和删除序列
使用ALTER SEQUENCE语句修改序列, 不能更改序列的START WITH参数
SQL> ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE;
问题
成绩表中存储了所有学员的成绩,我想知道: 学员的总成绩、平均成绩、有成绩的学员总共有多少名 怎么办?
聚合函数-1
SUM SELECT SUM(ytd_sales) FROM titles WHERE type = 'business'
SELECT SUM(ytd_sales) ,Price FROM titles WHERE type = 'business' AVG SELECT AVG(SCore) AS 平均成绩 From Score WHERE Score >=60
[ORDER BY...]
[WITH OWNERACCESS OPTION]
SELECT中的条件语句
FROM 条件子句
- SELECT fieldlist FROM 表名
WHERE 条件子句
- SELECT fieldlist FROM 表名 WHERE 条件
DISTINCT属性词用法
- 自动创建:在定义主键或唯一性约束的时候系统会自动在相应的字段上创建 唯一索引 - 手动创建:用户可以在其他列上创建索引,以加速查询速度
创建/删除索引
可以使用create index 语句手动创建索引
- create index 索引名 on 表名(列名[,列名])
删除索引
- 使用drop index 语句删除索引
- SELECT [*|DISTINCT] FROM table
SELECT中的条件语句
BETWEEN...AND 运算符
- expr[Not]BETWEEN value1 AND value2
LIKE 操作数
- expression LIKE "pattern" expression
空值的查询 列的别名
数据查询-排序 1
升序排列
SELECT StudentID As 学员编号,(Score*0.9+5) As 综合成绩 FROM Score WHERE (Score*0.9+5)>60 ORDER BY Score 降序排列 SELECT Au_Lname +'.' +Au_fName AS EMP From Authors Union SELECT fName +'.'+ LName AS EMP From Employee ORDER BY EMP DESC
下列情况可以不用创建索引
-
查看索引
查询用户字典视图 user_indexes
- 可得到用户的所有索引
查询用户字典视图user_ind_columns
- 可以获知索引建立在哪些字段上
序列
序列是用于生成唯一、连续序号的对象 序列可以是升序的,也可以是降序的 使用CREATE SEQUENCE语句创建序列
访问序列
通过序列的伪列来访问序列的值
- NEXTVAL 返回序列的下一个值
- CURRVAL 返回序列的当前值
SQL> INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, ‘TWENTY’, 25); SQL> INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, ’MAGIC PENCIL’, 75);