程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 查詢語句,sql查詢語句

查詢語句,sql查詢語句

編輯:Oracle教程

查詢語句,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 '%[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的的賬號的權限

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved