• SQL WHERE筛选表中的行记录


    在本教程中,您将学习如何使用SQL WHERE子句根据指定的条件筛选表中的行记录。

    1. SQL WHERE子句简介

    要从表中选择某些行,请在SELECT语句中使用WHERE子句。 以下说明了SELECT语句中WHERE子句的语法:

    SELECT 
        column1, column2, ...
    FROM
        table
    WHERE
        condition;
    

    WHERE子句紧跟在FROM子句之后出现。 WHERE子句包含一个或多个逻辑表达式,用于计算表中的每一行。 如果条件计算为true,则满足条件的行记录将包含在结果集中; 否则,它将被排除在外。

    请注意,SQL具有三值逻辑,即TRUEFALSEUNKNOWN。 这意味着如果某行导致条件计算为FALSENULL,则不会返回该行。

    请注意,WHERE子句后面的逻辑表达式也称为谓词。 可以使用各种运算符来形成WHERE子句中使用的行选择条件。更多教程请访问http://www.manongzj.com

    下表显示了SQL比较运算符

    编号运算符含义
    1 = 等于
    2 <>!= 不等于
    3 < 小于
    4 > 大于
    5 <= 小于或等于
    6 >= 大于或等于

    要形成一个简单的表达式,可以使用上面的一个运算符和两个操作数,这两个操作数可以是一侧的列名,另一侧是文字值,例如:

    salary > 1000
    

    表示:“工资是否大于1000?”。或者可以在运算符的两侧使用列名称,例如:

    min_salary < max_salary
    

    这个表达式提出了另一个问题:“最低工资是否低于最高薪水?”。
    在表达式中使用的文字值可以是数字,字符,日期和时间,具体取决于使用的格式:

    • 数字:使用可以是整数或小数的数字而不使用任何格式,例如:100,200.5
    • 字符:使用由单引号或双引号括起的字符,例如:'100''John Dan'
    • 日期:使用数据库存储的格式。 它取决于数据库系统,例如,MySQL使用'yyyy-mm-dd'格式来存储日期数据。
    • 时间:使用数据库系统用于存储时间的格式。 例如,MySQL使用'HH:MM:SS'来存储时间数据。

    SELECT语句外,还可以在UPDATEDELETE语句中使用WHERE子句指定要更新或删除的行。

    2. SQL WHERE示例

    我们将使用employees表来演示如何使用WHERE子句从表中选择数据。

    mysql> desc employees;
    +---------------+--------------+------+-----+---------+----------------+
    | Field         | Type         | Null | Key | Default | Extra          |
    +---------------+--------------+------+-----+---------+----------------+
    | employee_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
    | first_name    | varchar(20)  | YES  |     | NULL    |                |
    | last_name     | varchar(25)  | NO   |     | NULL    |                |
    | email         | varchar(100) | NO   |     | NULL    |                |
    | phone_number  | varchar(20)  | YES  |     | NULL    |                |
    | hire_date     | date         | NO   |     | NULL    |                |
    | job_id        | int(11)      | NO   | MUL | NULL    |                |
    | salary        | decimal(8,2) | NO   |     | NULL    |                |
    | manager_id    | int(11)      | YES  | MUL | NULL    |                |
    | department_id | int(11)      | YES  | MUL | NULL    |                |
    +---------------+--------------+------+-----+---------+----------------+
    10 rows in set
    

    带有数字比较示例的SQL WHERE子句

    以下查询查找薪水大于14000的员工,并根据薪水按降序对结果集进行排序。

    SELECT
        employee_id, first_name, last_name, salary
    FROM
        employees
    WHERE
        salary > 14000
    ORDER BY
        salary DESC;
    

    执行上面示例代码,得到以下结果 -

    以下查询查找在部门ID为5中工作的所有员工。

    SELECT
        employee_id, first_name, last_name, department_id
    FROM
        employees
    WHERE
        department_id = 5
    ORDER BY
        first_name;
    

    执行上面示例代码,得到以下结果 -

    带有字符示例的SQL WHERE子句

    SQL不区分大小写。 但是,当涉及比较中的值时,它区分大小写。 例如,以下查询查找姓氏(last_name)为Zhang的员工。

    SELECT
        employee_id, first_name, last_name
    FROM
        employees
    WHERE
        last_name = 'Zhang';
    

    执行上面示例代码,得到以下结果 -

    mysql> SELECT
        employee_id, first_name, last_name
    FROM
        employees
    WHERE
        last_name = 'Zhang';
    +-------------+------------+-----------+
    | employee_id | first_name | last_name |
    +-------------+------------+-----------+
    |         116 | Shelli     | Zhang     |
    |         117 | Sigal      | Zhang     |
    |         118 | Guy        | Zhang     |
    |         119 | Karen      | Zhang     |
    +-------------+------------+-----------+
    4 rows in set
    

    但是,如果查询值是:ZHangzhang,则不会返回任何行记录。

    带有日期示例的SQL WHERE子句

    要获得1999年1月1日之后加入公司的所有员工,请使用以下查询:

    SELECT
        employee_id, first_name, last_name, hire_date
    FROM
        employees
    WHERE
        hire_date >= '1999-01-01'
    ORDER BY
        hire_date DESC;
    

    执行上面示例代码,得到以下结果 -

    如果想查询1999年加入公司的员工,可以通过以下几种方式实现:

    • 使用YEAR函数从hire_date列获取年份数据,并使用等于(=)运算符来形成表达式。
    • 使用AND运算符使用两个表达式。
    • 使用BETWEEN运算符。

    以下语句说明了如何使用第一种方式:

    SELECT
        employee_id, first_name, last_name, hire_date
    FROM
        employees
    WHERE
        YEAR (hire_date) = 1999
    ORDER BY
        hire_date DESC;
    

    执行上面示例代码,得到以下结果 -

    在本教程中,我们向您展示了如何使用SQL WHERE子句根据指定的条件过滤数据。

  • 相关阅读:
    android 2.3 bug android 4.x bug
    设计高性能CSS3动画的几个要素
    开启硬件加速 解决页面闪白 保证动画流畅
    取消input在ios下,输入的时候英文首字母的默认大写 android 上去掉语音输入按钮
    JS中的类型检测
    CSS的一点知识
    HTML Canvas
    HTML DOM Table 对象
    只是有所了解的语言
    骑士巡游问题
  • 原文地址:https://www.cnblogs.com/myhomepages/p/15826228.html
Copyright © 2020-2023  润新知