SQL之过滤数据~

对数据进行过滤

使用WHERE子句~

WHERE子句应该在(FROM子句)之后给出。

当同时使用ORDER BYWHERE 子句时,应该让 ORDER BY 位于 WHERE 之后。

输入▼

#从books表中检索author和price这俩列,但只返回price为24.99的行

SELECT author,price
FROM books
WHERE price = 24.99;

WHERE 子句操作符

操作符 说明
= 等于
<> 或 != 不等于
< 小于
<= 小于等于
!< 不小于
> 大于
>= 大于等于
!> 不大于
BETWEEN 在指定的两个值之间
IS NULL 为NULL值

WHERE 子句的组合过滤

通过引入逻辑操作符达到WHERE的组合使用。

逻辑操作符:

  • AND
  • OR

AND 只有左边情况满足才会看右边是否会满足

OR 在第一个条件满足时,不管第二个条件是否满足,相应的行都会被检索出

不存在括号的多个 ANDOR 组合使用时,根据优先级,将先组合 AND,后组合 OR

输入▼

#从books表中检索author和price这俩列,但只返回price大于24.99且author等于Thomas Down的行

SELECT author,price
FROM books
WHERE  author = Thomas Down OR author = Thomas Schenk AND price > 24;

#SQL将理解成作者是 Thomas Schenk且价格大于24的,或者author是 Thomas Down的行

IN 操作符:

IN操作符用来指定条件范围,对范围内的每个条件都进行匹配。

IN功能类似OR

输入▼

#从books表中检索author和price这俩列,
#但只返回author等于Thomas Schenk或者Thomas Down的行

SELECT author,price
FROM books
WHERE  author IN('Thomas Schenk','Thomas Schenk');

IN优点:

  • IN操作语法更清楚直观
  • 存在AND和OR操作符组合是使用IN将使得求职顺序更好进行管理
  • IN一般比OR操作快
  • IN中还可以包含其他的 SELECT 语句。

NOT操作符

功能是否定其后跟的任何条件。NOT关键字一般都是和其他操作符一起使用的。

NOT关键字可以加在要过滤的列前,而不仅是跟在其后

输入▼

#从books表中检索author和price这俩列,但只返回price不为24.99的行

SELECT author,price
FROM books
WHERE NOT price = 24.99;

NOT优势:

  • 在复杂的语句中,NOT可以非常简单的找出与条件不匹配的行

用通配符过滤数据

通配符是用来匹配值的一部分的特殊字符。

通配符

  • 百分号(%)通配符
  • 下划线(_)通配符
  • 方括号([])通配符

搜索模式是由字面值、通配符或两者组合而构成的搜索条件。

使用通配符的技巧:

  • 请勿过度使用通配符。~~开销大
  • 确实需要使用通配符时尽量不要把他们用在搜索模式的开始处,因为这样是最慢的
  • 必须仔细观察通配符的位置,避免出现奇怪的返回结果

LIKE操作符

%通配符

匹配任何东西(一个或多个字符),除了 NULL ~

输入▼

# 从books表中检索author和price这俩列,
# 搜索模式是'C++%'。及检索以C++开头的词。%告诉DBMS接受C++之后的任意字符,不管有多少个
# 只返回满足上诉搜索条件的行

SELECT author,price
FROM books
WHERE title LIKE 'C++%';

输入▼

# 从books表中检索author和price这俩列,
# 搜索模式是'%C++%'。及检索包含了 C++ 的词。%告诉DBMS接受C++之前和之后的任意字符,不管有多少个
# 只返回满足上诉搜索条件的行

SELECT author,price
FROM books
WHERE title LIKE '%C++%';
_通配符

只匹配任何的单个字符~

输入▼

# 从books表中检索author和price这俩列,
# 搜索模式是'_ C++'。及检索以C++j结尾。_告诉DBMS接受C++之前的一个字符
# 只返回满足上诉搜索条件的行

SELECT author,price
FROM books
WHERE title LIKE '_ C++';
[]通配符

该通配符用来指定一个字符集,它必须匹配指定位置(通配符位置)的一个字符。


# 从books表中检索author和price这俩列,
# 搜索模式是''[US]%''
# [US]匹配方括号中任意一个字符,但只能是匹配单个字符
# [US]之后的%则意味着匹配第一个字符之后的任意数量的字符
# 只返回满足上诉搜索条件的行

SELECT author,price
FROM books
WHERE title LIKE '[US]%';
# 返回所有以字符U或者S开头的字符串

猜你喜欢

转载自blog.csdn.net/hacker_Dem_br/article/details/86501296