排序查詢 order by desc --排序查詢 --排序查詢使用order by進行查詢,執行是先查詢(數據)後排序 --默認的排序使用升序排序,也可以使用asc進行顯示聲明;也可以使用desc進行降序排序 select * from libprivilege order by pid desc; --在排序查詢時,如果有多個排序列可以使用逗號進行分隔, --查詢會按照排序列先排第一列,排完後再按照第二列進行排序,排完後再按照第N列進排序 select parentid,pname from libprivilege order by parentid,pname asc; select parentid,pname from libprivilege order by parentid,pname desc; select parentid,pname from libprivilege order by parentid desc,pname desc; 組查詢 count(列名) --組查詢 --計數查詢--使用count進行計數 select count(pid) 記錄總數 from libprivilege; --組查詢:查詢的列必須出現在分組中. select pid,pname,parentid from libprivilege group by pid,parentid,pname; --按照parentid進行分組,查詢每個分組下有幾個權限 --統計查詢,統計每個權限下都有幾個直接子權限 --分組查詢:查詢的列可以使用統計(分組)函數,或者是分組的列 select count(pid),parentid from libprivilege group by parentid; 求和查詢 sum(列名) --求和查詢 select * from book; select sum(price) 總價值,sum(pages) 總頁數 from book; --查詢書籍的平均價格是多少 select avg(price) 平均價格 from book; --查詢價格低於平均價格的數據信息 --select * from book where price <avg(price); 不能在查詢條件中直接使用分組函數 select * from book where price <(select avg(price) 平均價格 from book); --查詢價格不低於平均價格的數據信息 >= --查詢價格不高於平均價格的數據信息 <= --查詢價格高於平均價格的數據信息 > --查詢價格不等於平均價格的數據信息 != --查找出價格最低的書籍信息 select * from book where price = (select min(price) from book); --查找出價格最高的書籍信息 select * from book where price = (select max(price) from book); --把價格低於平均價格的書籍,價格加10元 update book set price=price+10 where price <(select avg(price) from book); -- select * from libprivilege; select * from libprivilege group by parentid; 統計查詢 count(列名)from 列名 where 列名=‘’ --統計查詢:書籍名稱為"測試書籍1"的書籍有多少本 select count(bookid) from testbook where bookname='測試書籍1'; --根據書名進行分組統計,同一書名下有幾本書 --1.如有查詢過濾條件才需要使用where查詢 --2.如果一個查詢中,包含有分組(group by bookname)和條件過濾(where bookname='測試書籍1'),則分組查詢需要放到where的後面 --分組是對查詢出來的數據進行分組顯示,先查詢後分組 select bookname,count(bookid) from testbook group by bookname ; --select bookname,count(bookid) from testbook where bookname='測試書籍1' group by bookname ; --根據書名進行分組統計,同一書名下有幾本書,並按照數量的多少進行升序排序 -- select bookname,count(bookid) bookcount from testbook order by bookcount group by bookname ; --3.在分組查詢中如有排序列,則先執行分組後執行排序(排序是對分組後的結果進行排序) select bookname,count(bookid) bookcount from testbook group by bookname order by bookcount desc; --查詢價格大於60元的數據,根據書名進行分組統計,同一書名下有幾本書,並按照數量的多少進行升序排序 -- select count(bookid) bookcount from testbook where price >60; --4.在組合查詢中,先進行where條件過濾數據,再執行分組,最後對分組後的信息進行排序 select bookname,count(bookid) bookcount from testbook where price >60 group by bookname order by bookcount asc; 最全查詢語法 --最全的語法 --where是對查詢前(對表中)的數據進行過濾,having是對查詢後的數據進行二次過濾 select bookname,count(bookid) bookcount from testbook where price >60 group by bookname having bookname like '測試書籍%' order by bookcount asc ; --SELECT [hint][DISTINCT] select_list -- FROM table_list -- [WHERE conditions] -- [GROUP BY group_by_list] -- [HAVING search_conditions] -- [ORDER BY order_list [ASC | DESC] ] -- [FOR UPDATE for_update_options] 權限查詢 --2.根據該賬號查詢該賬號擁有的所有權限; select p.* from libprivilege p join rroleprivilege rr on p.pid = rr.privilegeid join librole r on rr.roleid = r.rid join libmanager m on r.rid = m.roleid where m.maccount='superAdmin'; --2.1查詢郵箱賬號包含: sina.com.cn的賬號的所有權限 select p.* from libprivilege p join rroleprivilege rr on p.pid=rr.privilegeid join librole r on rr.roleid =r.rid join libmanager m on r.rid=m.roleid where m.email like '%sina.com.cn'; select p.* from libprivilege p join rroleprivilege rr on p.pid=rr.privilegeid join librole r on rr.roleid =r.rid join libmanager m on r.rid=m.roleid where m.email like '%[email protected]'; --3.給定一個權限,找出擁有該權限的所有管理賬號 select m.* from libmanager m join librole r on m.roleid = r.rid join rroleprivilege rr on r.rid =rr.roleid join libprivilege p on rr.privilegeid = p.pid where p.pname='退出'; select m.* from libmanager m join librole r on m.roleid = r.rid join rroleprivilege rr on r.rid =rr.roleid join libprivilege p on rr.privilegeid = p.pid where p.pname='角色管理'; select m.* from libmanager m join librole r on m.roleid = r.rid join rroleprivilege rr on r.rid =rr.roleid join libprivilege p on rr.privilegeid = p.pid where p.pname='書籍分類管理'; --作業: --3.1查找注冊時間是:2016-07-19的賬號的權限 --時間的精確判斷 select p.* from libprivilege p join rroleprivilege rr on p.pid=rr.PRIVILEGEID join librole r on rr.roleid =r.rid join libmanager m on r.rid=m.roleid where to_char(m.regdate,'yyyy-mm-dd')='2016-07-19'; --時間的模糊判斷 --3.2查找注冊時間在2015-12-12後的賬號的權限 select p.* from libprivilege p join rroleprivilege rr on p.pid=rr.PRIVILEGEID join librole r on rr.roleid =r.rid join libmanager m on r.rid=m.roleid where m.regdate>to_date('2016-07-18','yyyy-mm-dd'); --3.3查找賬號為superAdmin,密碼是123456的賬號的權限 select p.* from libprivilege p join rroleprivilege rr on p.pid=rr.PRIVILEGEID join librole r on rr.roleid =r.rid join libmanager m on r.rid=m.roleid where m.maccount='superAdmin' and m.passwd='123456'; --3.4查找注冊時間在2015-12-12~2016-07-15的賬號的權限 --3.5查找注冊時間在2015-12-12~2016-07-15,且電話號碼包含8444的的賬號的權限