1. 程式人生 > >MySQL-分頁查詢-檢視

MySQL-分頁查詢-檢視

分頁查詢

當每次查詢的記錄數比較大,通常一頁顯示不下,此時我們可以進行分頁查詢。

語法:  limit  begin , size;    begin:記錄的開始行數. 偏移量    size:每頁的最大記錄數。

注意:limit後可以是一個引數,一個引數時,指每次最大的查詢記錄數(一頁顯示的數量),limit size,預設記錄數從0開始,而不是1.

練習:按照員工編號降序排序,查詢第二頁的資料,每頁5條。
select * from emp order by empno DESC limit 5,5;

還可以使用子查詢,先排序,再查詢每頁的資料

練習:按照員工工資降序排序,查詢第二頁的資料,每頁6條。
select e.* from (select * from emp order by sal desc) e limit 6,6;

當我們在做分頁查詢的時候,查詢的效率與偏移量有關係,偏移量越大,效率越低,消耗的時間就會越多,,我們可以先使用子查詢來確定偏移量的位置,在進行分頁查詢

-- (1)子查詢先確定偏移量的位置。
    select tid from temp_001 limit 100000,1
-- (2)再進行分頁查詢
    select * from where tid>=(查出id的值) limit 100;
--練習:
select * from temp_001 where tid>=
(select tid from temp_001 limit 144000,1) limit 100;

還有一種優化:首先確定tid必須是連續的資料。使用  between and   

select * from temp_001 where tid between 145000 and 145200 limit 100;

檢視VIEW

表的一部分投影。也是資料庫裡一個物件。(表的虛擬部分),因為檢視中含有某表中的部分資料,不在檢視中的欄位有隱藏效果。所以相對來說,安全。檢視可以像表一樣,進行增刪改查。 格式:create view ViewName as subQuery

刪除檢視:drop view viewName

檢視的分類:     簡單檢視:subQuery是一個表中的普通查詢語句     複雜檢視:subQuery是一個可以帶有分組函式的,或者關聯查詢的語句。複雜檢視不能對檢視進行DML操作,只能進行DQL操作

練習: 將員工表中的10部門的資料封裝到一個檢視view_emp_deptno_10
create view view_emp_deptno_10 as select * from emp where deptno=10;

通過檢視進行DML操作,一定會對錶有影響。通過表進行DML操作,可能會對檢視有影響。

with check option:對檢視的一種檢查約束選項,如果在建立檢視有此選項時,表示,只能對檢視DML操作可見資料。反之,對檢視不可見的資料,是不可以通過檢視進行DML操作的。  

練習:建立一個檢視view_emp_deptno_20,投影20號部門的 員工編號,員工姓名,職位,工資,部門號。
create view view_emp_deptno_20 as select empno,ename,job,sal,deptno
from emp where deptno = 20 with check option;
練習:建立一個複雜檢視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;