赞
踩
*分页查询:
-- 需求:当每次查询的记录数比较大,
通常一页显示不下,
此时我们可以进行分页查询。
-- 关键字:limit
-- 用法: limit begin,size;
-- begin:记录的开始行数. 偏移量
-- size:每页的最大记录数。
-- 完整的DQL
书写顺序:select,from,where,group by,having,order by,limit
执行顺序:from,where,group by,having,select,order by,limit
-- 注意:limit后可以是一个参数,
-- 一个参数时,是指每次最大的查询记录数,limit size;
-- 默认记录数从0开始,而不是1.
【第n页,每页显示m条数据的分页写法】:
select * from tablename limit (n-1)*m,m
- --练习1:查询员工表,查询第一页的数据,每页10条。
- select * from emp limit 0,10;
- --练习2:查询员工表,查询第二页的数据,每页5条。
- select * from emp limit 5,5;
- --练习3:按照部门号升序排序,查询第二页的数据,每页5条
- select * from emp order by deptno limit 5,5;
- --练习4:按照员工编号降序排序,查询第二页的数据,每页5条。
- select * from emp order by empno desc limit 5,5;
- --练习5:使用子查询,先排序,再查询每页的数据。
- -- 按照员工工资降序排序,查询第二页的数据,每页6条。
- select e.* from (select * from emp order by sal desc) e limit 6,6;
=====================================================================================
*视图: VIEW
表的一部分投影
也是数据库里一个对象。(表的虚拟部分)
-- 视图的作用:
因为视图中含有某表中的部分数据,
不在视图中的字段有隐藏效果。
相对来说,安全。
--如何操作视图呢?
视图可以像表一样,进行增删改查。
--如何创建视图呢?
--格式: create view ViewName as subQuery
-- 【通过视图进行DML操作,一定会对表有影响】
-- 【通过表进行DML操作,可能会对视图有影响】
--with check option:对视图的一种检查约束选项,
如果在创建视图有此选项时,表示,只能对视图DML操作可见数据。
反之,对视图不可见的数据,是不可以通过视图进行DML操作的。
--视图的分类:
简单视图:subQuery是一个表中的普通查询语句
复杂视图:subQuery是一个可以带有分组函数的,或者关联查询的语句。
【复杂视图不能对视图进行DML操作,只能进行DQL操作】
- --6.使用emp表中deptno=20的数据做成一个视图
- CREATE VIEW emp_20_view AS select * from emp where deptno=20;
- --7.查询视图中所有的数据
- select * from emp_20_view;
- --8.向视图中插入数据
- INSERT INTO emp_20_view VALUES(8110,'ZHANGSAN','MANAGER',
- 7369,'2010-10-10',5000,null,10);
- --9.查询视图中所有的数据
- select * from emp_20_view
- --10.删除emp表中empno=8010
- delete from emp where empno = 8010
- --11.创建具有检查约束的视图
- CREATE VIEW emp_20_view AS
- select empno,ename,sal,deptno from emp where deptno=20
- WITH CHECK OPTION
- --12.查询视图数据
- select * from emp
- --13.向视图中插入数据
- INSERT INTO emp_20_view(empno,ename,sal,deptno) VALUES(8110,'ZHANGSAN',7000,10)
- --14.练习:创建一个复杂视图view_emp_100,
- -- 是每个部门的平均工资,最高工资,最低工资,及其部门号。
- create view view_emp_100 as
- select avg(ifnull(sal,0)) avg_sal,max(sal) max_sal,min(sal) min_sal,deptno
- from emp group by deptno;
- select * from view_emp_100;
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
==================================================================================
*索引(Index):
目的是为了提高查询速度。
相当于一本书的目录。
索引也是数据库的对象,占空间。
每张表每个字段都可以设置相应的索引
-- 优点: 提高查询速度。
缺点: 占空间,
每次进行DML操作时,数据库都要(自动)重新维护索引,降低效率.
总体来说:
表中有索引可以提高效率,
但不是索引越多越好。
当表中的数据量比较小时,
无需索引(因为直接查询可以比使用索引更快),
当某个字段的值比较少时,也不需要索引,
如性别字段只有'f','m'.
只有当数据量比较大,和字段值多时,可以使用索引。
--练习1:给emp表中的empno创建索引。
create index index_emp_empno on emp(empno);
--练习2:查询empno为9003的数据。
select * from emp where empno=9003;
/*15.为emp表deptno创建索引
CREATE INDEX emp_dept_index ON emp(deptno)
*/
--删除索引,删除视图都是用drop:
drop index indexName
drop view viewName
--可以自学: PLSQL(数据库编程语言)--触发器,存储过程
=======================================================================================================
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。