一、SELECT 语句的各个关键词的顺序及作用简解(这个我简略点写~)1.SELECT2.FROM3.WHERE4.GROUP BY ---对结果集进行分组,通常与聚合函数一起使用5.HAVING6.ORDER BY举个例子如下:select item_name,count(item_name) from lab_item_dictwhere price="25"group by item_namehaving count(item_name)>1 order by count(item_name);注意这个顺序。
二、SELECT语句基本执行过程详解:当执行SELECT语句时,DBMS的执行步骤可以表示如下: step1:首先执行FROM子句,组装来自不同数据源的数据,及根据FROM子句中的一个或多个表创建工作表。如果在FROM子句中有两个或多个表,DBMS将执行 CROSS JOIN运算对表进行交叉连接,作为工作表。 step2:若果有WHERE子句,实现基于制定的条件对记录进行筛选,即DBMS将WHERE子句列出的搜索条件作用于step1中生成的工作表。DBMS将保留哪些满座搜索条件的行,删除那些不满足条件的行。 step3:若果有GROUP BY子句,它讲把数据划分为多个分组。DBMS将step2生成的结果表中的行分成多个组,每个组中有行的group_by_expression字段具有相同的值。接着,DBMS将每组减少到单行,而后将其添加到新的结果表中,用以代替step1的工作表。 step4:如果有HAVING子句,他将筛选分组。DBMS将HAVING子句列出的搜索条件作用于step3生成的“组合”表中的每一行。DBMS将保留哪些满足搜索条件的行,删除那些不满足条件的行。 step5:将SELECT子句作用于结果表,删除表中不包含再select_list中的列。如果SELECT子句包含DISTINCT关键词,DBMS将从结果中删除重复的行。 step6:如果有ORDER BY子句,则按指定的排序规则对结果进行排序。 step7:对于交互式的SELECT语句,在屏幕上出现结果;对于嵌入式的SQL,使用游标将结果传递给宿主程序。以上就是SELECT语句的基本执行过程。理解它对于提高SQL查询的效率将有帮助。
3、PL/SQL中的rownum在查询中用法举例主要是最近项目遇到,很实用的一些功能,给大家分享:有表如下:(1)查询表中价格最大的药品记录select distinct * from LAB_ITEM_DICT t where price in (select max(price) from lab_item_dict);(2)查询表中的前5行记录select * from lab_item_dict where rownum<=5;select * from lab_item_dict where lnnvl(rownum>5);select * from CLINIC_MASTER where rownum!=6;注意第二条:lnnvl 排除指定条件;第三条:理解关键点为rownum是伪列,先计算结果集,然后在结果集上加上rowmun列。上面3条语句,等价。(3)查询表中第6-10行数据select * from lab_item_dict where item_code not in (select item_code from lab_item_dict where rownum<=5) and rownum<=5或者:select * from lab_item_dict where lnnvl(item_code in (select item_code from lab_item_dict where rownum<=5)) and rownum<=5;(4)查询表中价格前5大的数据select distinct * from lab_item_dict where price in(select distinct price from (select distinct price from lab_item_dict order by price desc) where rownum<=5)and rownum<=5 order by price desc;(5)查询另一张表中,就诊序号分别为‘1’和‘4’的两个病人日期最近的各前5条数据(这个是百度上面有人提问的
一道淘宝网的面试题,类似的意思~)select * from (select * from OUTP_PRESC t where visit_no="1" order by visit_date desc ) where rownum<=5union allselect * from (select * from OUTP_PRESC t where visit_no="4" order by visit_date desc ) where rownum<=5暂时,想到常用的这么多~有空续。。。请点击下面的“绿色通道”--“关注DebugLZQ”,共同交流进步~
相关阅读:rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题 http://www.linuxidc.com/Linux/2013-07/87890.htmSQLPLUS spool 到动态日志文件名 http://www.linuxidc.com/Linux/2013-03/80988.htmOracle SQLPLUS提示符设置 http://www.linuxidc.com/Linux/2012-10/73326.htm通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度 http://www.linuxidc.com/Linux/2011-07/38711.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12PL/SQL Developer 连接Oracle数据库详细配置方法Hive学习笔记之-使用Sqoop把Oracle表导入Hive相关资讯 select PL/SQL
- PL/SQL之存储过程和函数 (今 14:09)
- PL/SQL Developer连接本地Oracle (07月27日)
- 【PL/SQL系列】Oracle存储过程使用 (04月23日)
| - PL/SQL Developer 使用技巧分享 (09月16日)
- PL/SQL实现Java中的split()方法的 (07月10日)
- 从一个案例看PL/SQL代码片的编译与 (03月04日)
|
本文评论 查看全部评论 (0)