美文网首页
表数据查询WHERE

表数据查询WHERE

作者: 杜大个 | 来源:发表于2018-09-06 08:53 被阅读0次

过滤数据

如何筛选数据? 如何使用SELECT语句的WHERE子句指定搜索条件

常见的基本查询语句:

SELECT语句是最常用的查询语句,它的使用方式有些复杂,但功能是相当强大的。SELECT语句的基本语法如下: select selection_list //要查询的内容,选择哪些列

from 数据表名 //指定数据表

where //查询时需要满足的条件,行必须满足的条件

group by grouping_columns //如何对结果进行分组

order by sorting_cloumns //如何对结果进行排序

having secondary_constraint //查询时满足的第二条件

limit count //限定输出的查询结果

使用WHERE子句: 数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。

在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出,如下所示:

SELECT 字段名 FROM 表名 WHERE 条件;

为什么要进行数据的筛选,数据筛选的必要性? SQL过滤与应用过滤 数据也可以在应用层过滤。为了这个目 的,SQL的SELECT语句检索出超过实际所需的数据,然后客户 机代码对返回数据进行循环,以提取出需要的行。 通常,这种实现并不令人满意。因此,对数据库进行了优化, 以便快速有效地对数据进行过滤。因为我们在客户机应用(或开发语言)处理数据库的工作将会极大地影响应用的性能,并且使所创建 的应用完全不具备可伸缩性。此外,如果在客户机上过滤数据, 服务器不得不通过网络发送多余的数据,这将导致网络带宽的 浪费。

DeepinScrot-5748

这个例子采用了简单的相等测试j仅仅是对单个值进行过滤:它检查一个列是否具有指定的值,据此进行过滤。但是SQL允许做的事情不仅仅是相等测试。

= 等于

select name from customers where name='李逵';

<> 不等于

select name from customers where name<>'李逵';

!= 不等于

select name from customers where name!='李逵';

< 小于 (一般情况下后面会跟数字)

select name from customers where name<'李逵';

select * from customers where userid<10014;

<= 小于等于

select * from customers where userid<=10014;

> 大于

select * from customers where userid>10014;

>= 大于等于

select * from customers where userid>=10014;

BETWEEN .. AND ..在指定的两个值之间

select name from customers where userid between 10010 and 10014; 注意:在使用BETWEEN时,必须指定两个值,所需范围的低端值和高端值。这两个值必须用AND关键字分隔。BETWEEN匹配范围中所有的值,包括指定的开始值和结束值.

空值检查(IS NULL)

在创建表时,表设计人员可以指定其中的列是否可以不包含值。在 一个列不包含值时,称其为包含空值NULL。 NULL 无值(no value),它与字段包含0、空字符串或仅仅包含 空格不同。

SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句。其语法如下:

SELECT 列 FROM students WHERE 列 IS NULL;

DeepinScrot-3908

组合WHERE子句

AND操作符

为了通过不止一个列进行过滤,可使用AND操作符给WHERE子句附加条件。下面的代码给出了一个例子: SELECT 列,列 FROM students WHERE 条件1 and 条件2;

SELECT name,adress FROM customers WHERE userid<=10015 AND adress='北京市'

DeepinScrot-4603

OR操作符

OR操作符与AND操作符不同,它指示MySQL检索匹配任一条件的行。

SELECT 列,列 FROM students WHERE 条件1 OR 条件2;

DeepinScrot-5201

注意:计算次序 WHERE可包含任意数目的AND和OR操作符。允许两者结合以进行复杂 和高级的过滤。 例如:SELECT name,age,weight FROM students WHERE height = 170 or height = 180 and age < 19 ; 当SQL看到上述WHERE子句时,它理解为由身高180的任何 年龄小于19的同学,或者身高等于170的任何同学,实际的情况是这样的。换句话说,由于AND在计算次序中优先级更高,操作符被错误地组合了。

那如何才能够按照真实的sql语义来筛选呢? 此问题的解决方法是使用圆括号明确地分组相应的操作符。请看下 面的SELECT语句及输出: SELECT name,age,weight FROM students WHERE (height = 170 or height = 180) and age < 19 ;

这条SELECT语句与前一条的唯一差别是,这条语句中,前两个 条件用圆括号括了起来。因为圆括号具有较AND或OR操作符高 的计算次序,DBMS首先过滤圆括号内的OR条件,然后在结合后面条件进行筛选.

总结: 在WHERE子句中使用圆括号 任何时候使用具有AND和OR操作 符的WHERE子句,都应该使用圆括号明确地分组操作符。不要 过分依赖默认计算次序,即使它确实是你想要的东西也是如 此。使用圆括号没有什么坏处,它能消除歧义。

IN操作符

圆括号在WHERE子句中还有另外一种用法。IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。下面的例子说明了这个操作符 格式如下: SELECT 列 FROM 表名 WHERE 列 IN(列值,列值);

SELECT name FROM customers WHERE userid IN(10011,10013);

DeepinScrot-2122

NOT操作符

WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。

SELECT name FROM customers WHERE userid NOT IN(10011,10013);

DeepinScrot-2322

解释一下这条sql语句的含义

SELECT * FROM customers WHERE NOT age=20;

相关文章

  • Day3 高级查询

    一、连接查询 1.接连查询: 同时查询多个表中的数据SELECT * FROM 表名1,表名2... WHERE ...

  • mysql where like 字句

    1、使用where ...like..查询指定数据 题目:查询students表中name="ton"的数据,此时...

  • ClickHouse 21.7.3.14-2(十) 查询优化

    单表查询 Prewhere 替代 where Prewhere 和 where 语句的作用相同,用来过滤数据。不同...

  • 表数据查询WHERE

    过滤数据 如何筛选数据? 如何使用SELECT语句的WHERE子句指定搜索条件 常见的基本查询语句: SELECT...

  • FMDB基于FMDatabaseQueue封装

    创建数据库和数据表的工具类 插入数据 更新数据 删除 、更新 都需要指定查询条件即:WHERE id = ? 查询

  • mysql数据库基础

    对数据的增删改查 数据查询 SELECT 列名 FROM 表名 [WHERE --> GROUP BY -->HA...

  • MySQL学习笔记(三)修改操作、查询数据表

    操作数据表中的记录 插入操作 单表更新 单表删除 查询记录 where 条件表达式: 查询结果分组 GROUP B...

  • MYSQL最全的基础语法及练习

    阅读路线: 创建数据库 删除数据库 选择数据库 创建数据表 删除数据表 插入数据 查询数据 WHERE子句 UPD...

  • MySQL高级数据查询

    查询数据 基本语法 select 字段列表/* from 表名 [where条件] 完整语法 select [se...

  • Mysql——查询

    创建表 插入数据 where 条件判断符 查询价格小于10.2的水果 IN查询 查询指定范围内的条件记录,将所有的...

网友评论

      本文标题:表数据查询WHERE

      本文链接:https://www.haomeiwen.com/subject/mzstgftx.html