陕西金顶建设公司网站,建设通网站免费注册,如何优化网络,电子商务网站开发的说法过滤数据
本文将讲授如何使用SELECT语句的WHERE子句指定搜索条件。
WHERE子句
数据库表一般包含大量的数据#xff0c;很少需要检索表中所有行。通常只会根据特定操作或需要提取表数据的子集。只检索所需数据需要指定搜索条件#xff08;search criteria#xff09;…过滤数据
本文将讲授如何使用SELECT语句的WHERE子句指定搜索条件。
WHERE子句
数据库表一般包含大量的数据很少需要检索表中所有行。通常只会根据特定操作或需要提取表数据的子集。只检索所需数据需要指定搜索条件search criteria搜索条件也称为过滤条件filter condition 。
在SELECT语句中数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名FROM子句之后给出如下所示
【示例】找出employees表中员工id为100的员工的所有信息
SELECT *
FROM employees
WHERE employee_id 100;运行结果
MySQL在执行匹配时默认不区分大小写。
在同时使用ORDER BY和WHERE子句时应该让ORDER BY位于WHERE之后否则将会产生错误后面还会学习其它的子句在全部学完之后我会总结一下每个子句的先后顺序。
WHERE子句操作符
上面例子中我们使用等号对条件进行相等比较where子句还为我们提供了其它的操作符让我们能够更加灵活地操作筛选的条件。下表给出这些操作符以及对应的含义
操作符说明等于不等于!不等于小于小于等于大于大于等于BETWEEN A AND B在 A 和 B 之间
【示例】找出employees表中部门iddepartment_id小于等于40的所有员工数据
SELECT *
FROM employees
WHERE department_id 40;运行结果 【示例】找出employees表中job_id不是ST_CLERK的所有员工数据
SELECT *
FROM employees
WHERE job_id ! st_clerk;如果匹配的是字符串类型则需要加引号单引号和双引号都可以 和 ! 都可以表示‘不等于’我更习惯使用! 因为在其他的一些语言中Javapython中它也表示不等于。
【示例】找出employees表中员工id在100和110之间的员工的所有信息
SELECT *
FROM employees
WHERE employee_id BETWEEN 100 AND 110;运行结果 空值检查
在创建表时表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时称其为包含空值NULL。
NULL 无值no value它与字段包含0、空字符串或仅仅包含空格不同。
SELECT语句有一个特殊的WHERE子句可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句。其用法如下
【示例】查询employees表中manager_id 为 NULL的条目信息
SELECT *
FROM employees
WHERE manager_id IS NULL;运行结果
IS NOT NULL则可以实现相反的效果NOT操作符的具体含义我会在下面讲解
组合子句
为了进行更强的过滤控制MySQL允许给出多个WHERE子句。这些子句可以两种方式使用以AND子句的方式或OR子句的方式使用。
AND操作符
为了通过不止一个列进行过滤可使用AND操作符给WHERE子句附加条件。
【示例】查找employees表中first_name为David且last_name为Austin的条目信息
SELECT *
FROM employees
WHERE first_name david AND last_name austin;运行结果 OR操作符
OR操作符指示MySQL检索匹配任一条件的行。
【示例】查找employees表中first_name为David或first_name为John的条目信息
SELECT *
FROM employees
WHERE first_name david OR first_name john;运行结果 计算次序
WHERE可包含任意数目的AND和OR操作符。允许两者结合以进行复杂和高级的过滤。但是组合AND和OR带来了一个的问题。SQL像多数语言一样在处理OR操作符前优先处理AND操作符。换句话说由于AND在计算次序中优先级更高写多个操作符的话可能会被错误地组合了。
此问题的解决方法是使用圆括号明确地分组相应的操作符。
【示例】查找employees表中first_name为David或John且salary大于9000的条目信息
SELECT *
FROM employees
WHERE (first_name david OR first_name john) AND salary 9000;运行结果 IN操作符
圆括号在WHERE子句中还有另外一种用法。IN操作符用来指定条件范围范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单全都括在圆括号中。
【示例】查找employees表中salary为22002400和3300的条目信息
SELECT *
FROM employees
WHERE salary IN (2200,2400,3300);运行结果 IN操作符和OR连接多个子句的功能类似但选择使用它的优点如下
在使用长的合法选项清单时IN操作符的语法更清楚且更直观。在使用IN时计算的次序更容易管理因为使用的操作符更少。IN操作符一般比OR操作符清单执行更快。IN的最大优点是可以包含其他SELECT语句使得能够更动态地建立WHERE子句。后续文章将对此进行详细介绍。
NOT操作符
WHERE子句中的NOT操作符有且只有一个功能那就是否定它之后所跟的任何条件。
【示例】查找employees表中commission_pct字段不为空的条目信息
SELECT *
FROM employees
WHERE commission_pct IS NOT NULL;