oracle学习笔记二——查询之过滤和排序

二、过滤和排序

1.过滤:where

(1)等值查询:

--查询10号部门的员工

SQL>select * from emp where deptno=10;


--字符串大小写敏感(字符串必须用单引号括起来,和别名使用的双引号不同)

SQL>select * from emp where ename='KING';

和下面的语句不一样

SQL>select * from emp where ename='king';

就本例(第一条有值,第二条没有值)


--日期格式敏感

SQL> --查询入职日期为17-11月-81的员工信息

SQL> select * from emp where hiredate='17-11月-81';

注意:

        1)hiredate是日期格式(Date),这里隐藏了一个隐式转换[to_date('17-11月-81','DD-MON-RR')],我们在查询时应尽可能使用显示转换,显式指定to_date('17-11月-81','DD-MON-RR')

        2)oracle中表示日期,只有Date(没有其他数据库,如mysql的date和datetime的区别),可以通过指定显示格式,只显示日期还是连时间一起显示

        3)那么这里的参数format('DD-MON-RR')怎么来的?

补充:查询oracle数据库的默认参数

           SQL> --查询参数

           SQL>select * from v$nls_parameters;

           结果示例:

           NLS_LANGUAGE                                                    SIMPLIFIED CHINESE

           NLS_DATE_FORMAT                                                  DD-MON-RR

           注:以’v$‘打头的表是数据库管理员提供的表和上面的tab表类似

                  SQL> --修改日期格式(alter session)

                  SQL>alter session set NLS_DATE_FORMAT='yyyy-mm-dd';

(2)不等值查询

--between ..and : 在。。。之间

--查询月薪在1000~2000的员工

SQL> select * from emp where sal between 1000 and 2000;

注:between and: 小值在前 大值在后


--in 在集合中

--查询部门号是10和20的员工

SQL> select * from emp where deptno in (10,20);

同理,not in

SQL> select * from emp where deptno not in (10,20);

补:关于Oracle书写SQL中的null值:

       3. 如果集合中含义null,不能使用not in

(3)模糊查询

--like:%表示任意多个字符,_表示一个字符

--查询名字以S打头的员工信息

SQL> select * from emp where ename like 'S%';

--查询名字是4个字的员工

SQL> select * from emp where ename like '____';

--查询名字中含义下划线的员工

        由于“_”在oracle中有特殊的含义,因此需要对“_”进行转义,注意escape关键字后面指定的字符可以是任意的,只是习惯上使用“\”(写代码的应该都知道)

错的:SQL> select *  from emp  where ename like '%_%';

对的:SQL> select *  from emp where ename like '%\_%'escape'\'

补:关于事务

        oracle默认自动开启事务

        不像mysql等需要手动开启,通过start transaction

2.排序:order by

--查询员工信息,按照月薪排序(升序)

SQL> select * from emp order by sal;

--查询员工信息,按照月薪排序(倒序)

SQL> select * from emp order by sal desc;

注1:order by后面可以跟哪些内容:

        1)列名

        2)表达式

        --按照年薪排序

        SQL> select ename,sal,sal*12 from emp order by sal*12;

        3)别名

        SQL> select ename,sal,sal*12 年薪 from emp order by 年薪

        4)序号

        SQL> select ename,sal,sal*12 年薪 from emp order by 3

         --->如果是order by 4则会报错,因为只查了3列

注2:order by后跟多列的情况:

        SQL> select * from emp order by deptno,sal;

        则先按deptno升序排列,然后内部再根据sal升序排列,那如果像下面这样呢?

        SQL> select * from emp order by deptno,sal desc;

        则先按deptno升序排列,然后内部再根据sal降序排列,也就是说desc只作用于离它最近的列,并不作用于她前面的所有列(这点和distinct作用于其后所有列不同),如果deptno也要降序,应该像下面这样

        SQL> select * from emp order by deptno desc,sal desc;

注3:order by后面的列如果有空值会怎么样?

        --查询员工信息:按照奖金排序

        SQL> select * from emp order by comm;

含有空值的列——升序

        -->升序没问题


        SQL> select * from emp order by comm desc;

        -->降序,发现前面的记录该列都是空,这就要命了,如果在代码里写循环,判断该列为空就退出,后面的数据就取不到了,这是个bug,得治,这就用到了nulls last

含有空值的列——降序


        SQL> select * from emp order by comm desc nulls last;

        -->好了,comm降序,并且空值都移到最后了

含有空值的列——降序,使用nulls last
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容

  • 主流关系型数据库 关系型数据库存储数据的特点 结构化查询语言: 数据类型: select * from emp; ...
    陈先森mansplain阅读 676评论 0 0
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,712评论 0 2
  • 查询是数据的一个重要操作。用户发送查询请求,经编译软件变异成二进制文件供服务器查询,后返回查询结果集给用户,查询会...
    产品小正阅读 1,377评论 0 2
  • 创建一份有效作业的四个步骤: 1、确定你想要学生完成什么。 2、用一句话表达一项具体任务。...
    熠悦之阅阅读 100评论 0 0
  • 别人的生活,你怎么敢去打扰 一个句号总要大闹一场 别人的话语你怎么不信, 明明是你的问题,却还在怀疑 说好的理由是...
    导演张升志阅读 217评论 0 0