当前位置:   article > 正文

分页查询、视图、索引_有了分页查询 还需要索引嘛

有了分页查询 还需要索引嘛

*分页查询
--  需求:当每次查询的记录数比较大,
             通常一页显示不下,
             此时我们可以进行分页查询。
--  关键字: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. --练习1:查询员工表,查询第一页的数据,每页10条。
  2. select * from emp limit 0,10;
  3. --练习2:查询员工表,查询第二页的数据,每页5条。
  4. select * from emp limit 5,5;
  5. --练习3:按照部门号升序排序,查询第二页的数据,每页5条
  6. select * from emp order by deptno limit 5,5;
  7. --练习4:按照员工编号降序排序,查询第二页的数据,每页5条。
  8. select * from emp order by empno desc limit 5,5;
  9. --练习5:使用子查询,先排序,再查询每页的数据。
  10. -- 按照员工工资降序排序,查询第二页的数据,每页6条。
  11. 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操作】

  1. --6.使用emp表中deptno=20的数据做成一个视图
  2. CREATE VIEW emp_20_view AS select * from emp where deptno=20;
  3. --7.查询视图中所有的数据
  4. select * from emp_20_view;
  5. --8.向视图中插入数据
  6. INSERT INTO emp_20_view VALUES(8110,'ZHANGSAN','MANAGER',
  7. 7369,'2010-10-10',5000,null,10);
  8. --9.查询视图中所有的数据
  9. select * from emp_20_view
  10. --10.删除emp表中empno=8010
  11. delete from emp where empno = 8010
  12. --11.创建具有检查约束的视图
  13. CREATE VIEW emp_20_view AS
  14. select empno,ename,sal,deptno from emp where deptno=20
  15. WITH CHECK OPTION
  16. --12.查询视图数据
  17. select * from emp
  18. --13.向视图中插入数据
  19. INSERT INTO emp_20_view(empno,ename,sal,deptno) VALUES(8110,'ZHANGSAN',7000,10)
  20. --14.练习:创建一个复杂视图view_emp_100,
  21. -- 是每个部门的平均工资,最高工资,最低工资,及其部门号。
  22. create view view_emp_100 as
  23. select avg(ifnull(sal,0)) avg_sal,max(sal) max_sal,min(sal) min_sal,deptno
  24. from emp group by deptno;
  25. select * from view_emp_100;


==================================================================================

*索引(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(数据库编程语言)--触发器,存储过程
=======================================================================================================

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号