1. 程式人生 > >分頁查詢、檢視、索引

分頁查詢、檢視、索引

*分頁查詢: --  需求:當每次查詢的記錄數比較大,              通常一頁顯示不下,              此時我們可以進行分頁查詢。 --  關鍵字: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;

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

*索引(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(資料庫程式語言)--觸發器,儲存過程 =======================================================================================================