4、MySQL查询(控制行)

1、概要

在之前的简单查询中,是将所有的记录进行显示,但是现在可以对显示的记录进行过滤的操作,而这就属于限定查询的工作了,限定查询就是在之前语法的基础上增加了一个WHERE子句,用于指定限定条件

在使用 WHERE 子句操作的时候可以进行条件的判断,而对于条件的判断主要有以下几类操作

  1. 关系运算
    >、<、=、>=、<=、!=(<>)
    
  2. 范围判断
    BETWEEN AND
    
  3. 判断是否为空
    IS NULL
    IS NOT NULL
    
  4. 指定范围的判断
     IN 
     NOT IN
    
  5. 模糊查询
    LIKE
    NOT LIKE
    

2、语法格式

SELECT [DISTINCT] * | 列名 [别名] ,列名 [别名] , --3、 控制要显示的数据列
FROM 表名称 [别名]  --1、 确定数据来源
[WHERE 条件(s)] ; -- 2、 根据判断条件选择参与的数据行

3、限定操作符

3.1、关系运算(>、<、>=、<=、<>、!=)

3.1.1、等于(=)、不等于(!=或者<>)

  1. 查询出所有职位是办事员的雇员信息
    1.错误的写法
      SELECT * 
      FROM emp 
      WHERE job='clerk'(所有的数据都是区分大小写的)
    2.正确的写法
      SELECT * 
      FROM emp 
      WHERE job='CLERK'
    
  2. 查出员工工资不等于1500的员工信息
    SELECT *
    FROM  EMP
    WHERE sal !=1500;
    
  3. 查询所有职位不是销售人员的信息
    SELECT * 
    FROM emp 
    WHERE job<>'SALESMAN' ;
    

3.1.2、小于<、小于等于 <=

  1. 查询出基本工资不大于1500
    SELECT * 
    FROM emp 
    WHERE sal <= 1500;
    

3.1.3、大于>、 大于等于>=

  1. 找出奖金高于工资的员工
    SELECT * 
    FROM  empWHERE comm>sal;
    
  2. 找出工资大于或等于3000的员工
    SELECT ename ,sal 
    FROM emp
    WHERE sal>=3000;
    
  3. 查询81年以后入职的员工所有信息
    # Navicat中的写法:
    SELECT *  
    FROM EMP 
    WHERE HIREDATE > date '1981-01-1'
    # 或者
    SELECT * 
    FROM EMP
    WHERE HIREDATE > '1-1月-81';
    

3.2、逻辑运算(AND OR)

  1. 说明
    在使用where 语句的时候可能会存在编写多个条件的情况,那这个时候就必须使用逻辑运算符了
  2. 语法格式
    AND:条件 AND 条件 AND 条件; 所有条件都要同时满足
    OR:条件 OR 条件 OR 条件;所有条件只要有一个满足即可
    
  3. 示例代码
    1、查询工资在1500~3000之间的全部雇员信息
    SELECT * 
    FROM emp
    WHERE sal
    >=1500 AND sal<=3000;
    
    2、查询出职位是办事员(job='CLERK'),或者是销售人员(job='SALESMAN')的全部信息
    SELECT * 
    FROM emp
    WHERE job='CLERK' OR job='SALESMAN';
    
    3、查询出职位是办事员(job='CLERK'),或者是销售人员(job='SALESMAN')的全部信息,并且要求这些雇员的工资大于1200
    SELECT * 
    FROM emp
    WHERE (job='CLERK' OR job='SALESMAN') AND sal>1200;
    

3.3、范围判断(BETWEEN AND)

  1. 说明
    表示的是一个范围的判断过程
  2. 语法格式
    BETWEEN 最小值 AND 最大值”,
    
  3. 示例代码
    1、查出工资在1000~2000之间的员工
    SELECT * 
    FROM emp
    WHERE sal BETWEEN  1000 AND 2000;
    
    2、查出在1985年1月20至1987年5月20之间入职的员工
    SELECT * 
    FROM emp
    WHERE hiredate BETWEEN  '20-1月 -85' AND '20-5月 -87';
    SELECT *
    FROM emp
    WHERE hiredate 
    BETWEEN  '1985-01-01' 
    AND  '1987-05-20';
    

3.4、判断是否为空(IS [NOT] NULL)

  1. 查询出所有领取奖金的雇员信息
    SELECT * 
    FROM emp
    WHERE comm IS NOT NULL;
    SELECT * 
    FROM emp
    WHERE NOT comm IS NULL;
    
  2. 查询出所有不领取奖金的雇员
    SELECT * 
    FROM emp
    WHERE comm IS NULL
    

3.5、指定范围的判断([NOT] IN)

  1. 说明
    IN操作符表示的是指定一个查询的范围
  2. 语法格式
    字段 IN (数值,数值,…)
    
  3. 示例代码
    1、查询出雇员编号是7369、7566、7799的雇员信息
    SELECT * 
    FROM emp
    WHERE empno=7369 OR empno=7566 OR empno=7799
    
    SELECT * 
    FROM emp
    WHERE empno IN (7369,7566,7799);
    
    2、查询出姓名为 SMITH,ALLEN,KING的雇员信息
    SELECT * 
    FROM emp 
    WHERE ename in ('SMITH','ALLEN', 'KING');
    
    3、查询出雇员编号不是7369、7566、7799的雇员信息
    SELECT * 
    FROM emp
    WHERE not empno IN (7369,7566,7799);
    
  4. 注意事项
    关于NOT IN的问题
    如果现在使用了IN操作符,查询的范围之中存在了null,不影响查询;
    SELECT * FROM emp WHERE empno IN(7369,7566,null);
    empno in (7369,7566,null)可以等价于empno=7369 or empno=7566 or empno=null,
    如果现在使用的是NOT IN操作符,如果查询范围之中有了null则表示的就是查询全部数据但实际上不返回任何数据。SELECT * FROM emp WHERE empno NOT IN(7369,7566,null);
    empno not in (7369,7566,null)可以等价于not(7566=7369 or 7566=7566 or empno=null)
    或empno!=7566 and empno!=7566 and empno=null。
    为什么都是or拼接,in可以而not in不可以呢,可以把not in理解为后面的and表达式就知道了,因为empno=null为null,
    也就相当于false,导致整个表达式为false,无论传何值都为false,自然无法返回数据
    

3.6、模糊查询

  1. 说明
    LIKE子句的功能是提供了模糊查找的操作,程序里出现的搜索操作,都属于LIKE子句的实现,但是要想使用LIKE子句则必须认识两个匹配符号
    匹配单个字符:_   --匹配任意一个字符
    匹配任意多个字符:%   --匹配 0 个、1 个或多个任意字符
    
  2. 语法
    字段 LIKE 关键字
    
  3. 示例代码
    1、查询出雇员第二个字母为“L”的雇员信息
    select * 
    from emp 
    WHERE ename like '_L%';
    
    2、查询出雇员姓名以字母“S”开头的雇员信息
    SELECT * 
    FROM emp 
    WHERE ename like 'S%'
    
    3、查询出雇员姓名包含字母“S”的雇员信息
    SELECT * 
    FROM emp 
    WHERE ename like '%S%'
    
    4、查询入职年份为81年的雇员信息
    SELECT * 
    FROM emp 
    WHERE hiredate like '%81'
    
    5、查询工资值中包含数字5的雇员信息
    SELECT * 
    FROM emp 
    WHERE sal like '%5%'
    
    6、查询所有员工中ename 包含数字1 ,或者入职日期中包含数字1或者工资中含有数字5
    SELECT * 
    FROM emp 
    WHERE ename LIKE '%1%' OR hiredate LIKE '%1%' OR sal LIKE '%5%'
    
  4. 查询名为SCOTT 的员工的所有信息
    select * from emp where ename = 'SCOTT';
    等同于 select * from emp where ename like 'SCOTT';
    

3.7、总结

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

推荐阅读更多精彩内容