查询语句
排序查询 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的的账号的权限