博客
关于我
MySQL学习-MySQL条件查询
阅读量:792 次
发布时间:2023-02-12

本文共 3752 字,大约阅读时间需要 12 分钟。

MySQL条件查询

操作的表

以下是操作的表结构:

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 1980-12-17 800.00 NULL 20
7499 ALLEN SALESMAN 7698 1981-02-20 1600.00 300 30
7521 WARD SALESMAN 7698 1981-02-22 1250.00 500 30
7566 JONES MANAGER 7839 1981-04-02 2975.00 NULL 20
7654 MARTIN SALESMAN 7698 1981-09-28 1250.00 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 2850.00 NULL 30
7782 CLARK MANAGER 7839 1981-06-09 2450.00 NULL 10
7788 SCOTT ANALYST 7566 1987-04-19 3000.00 NULL 20
7839 KING PRESIDENT NULL 1981-11-17 5000.00 NULL 10
7844 TURNER SALESMAN 7698 1981-09-08 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-05-23 1100.00 NULL 20
7900 JAMES CLERK 7698 1981-12-03 950.00 NULL 30
7902 FORD ANALYST 7566 1981-12-03 3000.00 NULL 20
7934 MILLER CLERK 7782 1982-01-23 1300.00 NULL 10

每个字段的字段名分别为:员工编号、员工姓名、员工职位、员工上级领导编号、员工雇佣日期,员工薪水、员工津贴、员工部门编号。


条件查询概述

语法格式

SELECT column_name, column_name ... FROM table_name WHERE condition;

执行顺序:先from,然后where,最后select

示例

  • 查询工资等于5000的员工姓名:

    SELECT ename, sal FROM emp WHERE sal = 5000;

    结果如下:| ename | sal ||---------|-------|| KING | 5000.00 |

  • 查询SMITH的工资:

    SELECT sal FROM emp WHERE ename = 'SMITH';

    结果如下:| sal ||-------|| 800.00 |

  • 找出工资高于3000的员工:

    SELECT ename, sal FROM emp WHERE sal > 3000;

    结果如下:| ename | sal ||---------|--------|| KING | 5000.00 |

  • 找出工资在1100和3000之间的员工(包括1100和3000):

    SELECT ename, sal FROM emp WHERE sal BETWEEN 1100 AND 3000;

    结果如下:| ename | sal ||---------|--------|| JONES | 2975.00 || WARD | 1250.00 || MARTIN | 1250.00 || BLAKE | 2850.00 || SCOTT | 3000.00 || ALLEN | 1600.00 || FORD | 3000.00 |

  • 找出哪些人津贴为NULL:

    SELECT ename, sal, comm FROM emp WHERE comm IS NULL;

    结果如下:| ename | sal | comm ||---------|--------|-------|| SMITH | 800.00 | NULL || JONES | 2975.00 | NULL || BLAKE | 2850.00 | NULL || CLARK | 2450.00 | NULL || SCOTT | 3000.00 | NULL || KING | 5000.00 | NULL || ADAMS | 1100.00 | NULL || JAMES | 950.00 | NULL || FORD | 3000.00 | NULL || MILLER | 1300.00 | NULL |

  • 找出哪些人津贴不为NULL:

    SELECT ename, sal, comm FROM emp WHERE comm IS NOT NULL;

    结果如下:| ename | sal | comm ||---------|--------|-------|| ALLEN | 1600.00 | 300.00 || WARD | 1250.00 | 500.00 || MARTIN | 1250.00 | 1400.00 || TURNER | 1500.00 | 0.00 |

  • 找出工作岗位是MANAGER和SALESMAN的员工:

    SELECT ename, job FROM emp WHERE job = 'MANAGER' OR job = 'SALESMAN';

    结果如下:| ename | job ||---------|----------|| JONES | MANAGER || WARD | SALESMAN || MARTIN | SALESMAN || BLAKE | MANAGER || CLARK | MANAGER || TURNER | SALESMAN |

  • 找出薪资大于1000的并且部门编号是20或30部门的员工:

    SELECT ename, sal, deptno FROM emp WHERE sal > 1000 AND (deptno = '20' OR deptno = '30');

    结果如下:| ename | sal | deptno ||---------|--------|--------|| ALLEN | 1600.00 | 30 || WARD | 1250.00 | 30 || JONES | 2975.00 | 20 || MARTIN | 1250.00 | 30 || BLAKE | 2850.00 | 30 || SCOTT | 3000.00 | 20 || FORD | 3000.00 | 20 |

  • 找出工作岗位是MANAGER或SALESMAN的员工(使用IN关键字):

    SELECT ename, job FROM emp WHERE job IN ('MANAGER', 'SALESMAN');

    结果如下:| ename | job ||---------|----------|| JONES | MANAGER || WARD | SALESMAN || MARTIN | SALESMAN || BLAKE | MANAGER || CLARK | MANAGER || TURNER | SALESMAN |

  • 找出工资在800和5000之间的员工:

    SELECT ename, sal FROM emp WHERE sal IN (800, 5000);

    结果如下:| ename | sal ||---------|--------|| SMITH | 800.00 || KING | 5000.00 |


  • 模糊查询(LIKE)

    示例

  • 找出名字中含有O的员工:

    SELECT ename FROM emp WHERE ename LIKE '%O%';

    结果如下:| ename ||---------|| JONES || SCOTT || FORD |

  • 找出第二个字母是A的员工:

    SELECT ename FROM emp WHERE ename LIKE '_A%';

    结果如下:| ename ||---------|| WARD || MARTIN || JAMES |

  • 找出名字中有下划线的员工:

    SELECT name FROM t_user WHERE name LIKE '%_%';

    结果如下:| name ||----------|| WANG_WU |

  • 找出名字中最后一个字母是T的员工:

    SELECT ename FROM emp WHERE ename LIKE '%T';

    结果如下:| ename ||---------|| SCOTT |


  • 注意事项

  • BETWEENIN关键字在使用时必须遵循左小右大的原则。
  • IS NULLIS NOT NULL用于判断字段是否为NULL
  • ANDOR的优先级由括号决定,括号外的AND优先于括号内的OR
  • LIKE用于模糊查询,%表示任意多个字符,_表示任意一个字符。
  • 转载地址:http://orbfk.baihongyu.com/

    你可能感兴趣的文章
    Mysql学习总结(41)——MySql数据库基本语句再体会
    查看>>
    Mysql学习总结(42)——MySql常用脚本大全
    查看>>
    Mysql学习总结(43)——MySQL主从复制详细配置
    查看>>
    Mysql学习总结(44)——Linux下如何实现mysql数据库每天自动备份定时备份
    查看>>
    Mysql学习总结(45)——Mysql视图和事务
    查看>>
    Mysql学习总结(46)——8种常被忽视的SQL错误用法
    查看>>
    Mysql学习总结(48)——MySql的日志与备份还原
    查看>>
    Mysql学习总结(49)——从开发规范、选型、拆分到减压
    查看>>
    Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
    查看>>
    Mysql学习总结(50)——Oracle,mysql和SQL Server的区别
    查看>>
    Mysql学习总结(51)——Linux主机Mysql数据库自动备份
    查看>>
    Mysql学习总结(52)——最全面的MySQL 索引详解
    查看>>
    Mysql学习总结(53)——使用MySql开发的Java开发者规范
    查看>>
    Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
    查看>>
    Mysql学习总结(55)——MySQL 语句大全再温习
    查看>>
    Mysql学习总结(56)——MySQL用户管理和权限设置
    查看>>
    Mysql学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
    查看>>
    Mysql学习总结(58)——深入理解Mysql的四种隔离级别
    查看>>
    Mysql学习总结(59)——数据库分库分表策略总结
    查看>>
    Mysql学习总结(5)——MySql常用函数大全讲解
    查看>>