查詢語句,sql查詢語句
排序查詢 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 '%book@sina.com.cn';
--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的的賬號的權限