Mysql 基础 (2) | 青训营笔记

82 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

过滤数据

使用 where 子句

select col from table where col = xxx;

where 子句 放在 from 子句后面。

order by 子句应该放在 from 子句后面。

where 子句的操作符

= < > >= <= <> between

不等于号 有两种 != <>

字符串值必须加上 引号

between 的用法是 between 2 and 10,and 是一个关键字

空值检测

NULL 是一种特殊的值,与0、空格、空字符串都不同

检测 null 必须使用 is null 子句

select col from table where col2 is null

组合 where 子句

为了进行更强的过滤控制,Mysql 允许给出多个 where 子句。这些子句以两种方式使用: AND 子句的方式或OR子句的方式使用。

AND 操作符

只有满足 and 连接的所有 where 子句条件的数据才会返回

Select prod_id,prod_price,prod_name 
from products
where vend_id = 1003 AND  prod_price <= 10;

OR 操作符

满足任一条件的数据都会返回

Select prod_id,prod_price,prod_name 
from products
where vend_id = 1003 OR  vend_id = 1002;

计算次序

AND 优先级比 OR 更高,因此最好通过添加 ()来保证运算顺序符合结果

Select vend_id,prod_id,prod_price,prod_name 
from products
where (vend_id = 1003 or  vend_id = 1002) AND prod_price >=1;

IN 操作符

where prod_id in (1002,1003);

IN 必须后面跟着一个括号,其作用与 between 不同,其含义是 col 的值必须是在括号中的取值!而不是一个范围

IN 的优点

  • 计算的次序更容易管理
  • 比起 OR 使用更长的合法选项清单更直观
  • 速度比 OR 操作一般要快
  • 可以包含其他 SELECT 语句,从而更动态地建立语句

NOT 操作符

select vend_id,prod_name,prod_price
from products
where vend_id not between 1001 and 1002
order by vend_id,prod_name;

用于否定跟在它之后的条件,支持使用 NOT 和 IN、BETWEEN 和 EXISTS 一起使用。

LIKE 操作符

这些操作符是针对已知值进行过滤的

用于在 WHERE 子句中搜索列中的指定模式。

其格式如下:

SELECT *column_name(s)*\
FROM *table_name*\
WHERE *column_name* LIKE *pattern*;