日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql怎么滤空_《MySQL 入门教程》第 08 篇 过滤条件

發布時間:2025/5/22 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql怎么滤空_《MySQL 入门教程》第 08 篇 过滤条件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章來源:《MySQL 入門教程》第 08 篇 過濾條件

原文作者:不剪發的Tony老師

來源平臺:CSDN

上一篇我們學習了如何使用 SELECT 和 FROM 查詢表中的數據。很多時候,我們并不需要查看全部數據,更多的則是滿足指定條件的數據;此時,我們就需要利用 WHERE 子句來實現數據的過濾。

8.1 簡單條件

MySQL 中的 WHERE 子句可以用于指定一個查詢條件,只有滿足條件的數據才會返回。指定 WHERE 子句的語法如下:

SELECT col1, col2, ...

FROM table_name

WHERE conditions;

其中,conditions 是一個邏輯表達式,它的結果可能為 TRUE(1)、FALSE(0)或者 UNKNOWN(NULL)。對于表中的數據行,只有表達式為 TRUE 的才會返回。例如,以下查詢只返回月薪大于 10000 的員工姓名:

select emp_name, salary

from employee

where salary > 10000;

emp_name|salary |

---------|--------|

劉備 |30000.00|

關羽 |26000.00|

張飛 |24000.00|

諸葛亮 |25000.00|

孫尚香 |12000.00|

趙云 |15000.00|在 SQL 定義中,WHERE 子句也被稱為謂詞(predicate)。

以上示例中的大于號(>)是一個比較運算符,用于判斷 salary 是否大于 10000。

除了大于號之外,MySQL 還支持以下比較運算符:等于(=)、不等于(<> 或者 !=)、大于等于(>=)、小于(

select emp_name, hire_date

from employee

where emp_name = '張飛';

emp_name|hire_date |

---------|----------|

張飛 |2000-01-01|

另外,BETWEEN 運算符可以用于判斷數據是否位于某個范圍之內。例如,以下查詢返回 2002 年入職的員工:

select emp_name, hire_date

from employee

where hire_date between '2002-01-01' and '2002-12-31';

emp_name|hire_date |

----------|----------|

孫尚香 |2002-08-08|

孫丫鬟 |2002-08-08|

BETWEEN 運算符包含了兩端的值,所以上面的示例查詢的是 2002 年入職的員工。

除此之外,IN 運算符可以用于判斷數據是否位于某個列表之中。例如,以下查詢返回了編號為 1、2 或者 3 的員工:

select emp_name, hire_date

from employee

where emp_id IN (1, 2, 3);

emp_name|hire_date |

---------|----------|

劉備 |2000-01-01|

關羽 |2000-01-01|

張飛 |2000-01-01|

BETWEEN 運算符包含了兩端的值,所以上面的示例查詢的是 2002 年入職的員工。

除此之外,IN 運算符可以用于判斷數據是否位于某個列表之中。例如,以下查詢返回了編號為 1、2 或者 3 的員工:

select emp_name, hire_date

from employee

where emp_id IN (1, 2, 3);

emp_name|hire_date |

---------|----------|

劉備 |2000-01-01|

關羽 |2000-01-01|

張飛 |2000-01-01|

只要數據和 IN 列表中的任意值相等,就表示滿足條件。IN 運算符中除了直接給出列表之外,還可以使用子查詢返回一個結果集,這種用法我們在后面的子查詢中進行演示。

8.2 空值判斷

在數據庫中,空值(NULL )表示缺失或者未知的數據,它不等于 0 或者空字符串。對于空值的判斷,不能使用普通的等于或者不等于,而需要使用特殊的 IS NULL 和 IS NOT NULL 運算符。例如:

select null is null, null = 0, null = null, null != null;

null is null|null = 0|null = null|null != null|

------------|--------|-----------|------------|

1| | | |

只有 null is null 的結果為 True(MySQL 使用 1 表示 True,0 表示 False);null = 0 的結果是未知(Unknown),因為未知數據和 0 比較的結果也是未知;null = null 和 null != null 的結果都是未知。

以下查詢返回了沒有上級領導的員工:

select emp_name, manager

from employee

where manager is null;

emp_name|manager|

---------|-------|

劉備 | |

如果想要查詢存在上級領導的員工,可以使用 IS NOT NULL 運算符:

select emp_name, manager

from employee

where manager is not null;

除了 IS [NOT] NULL 運算符之外,MySQL 還提供了一個空值判斷的函數:ISNULL(expr)。如果 expr 為空值,該函數返回 1;否則,返回 0。例如:

SELECT isnull(0), isnull(null);

isnull(0)|isnull(null)|

---------|------------|

0| 1|

另外,MySQL 還提供了一個支持 NULL 值的比較運算符:<=>。例如:

select 0 <=> 0, null <=> null, 0 <=> null;

0 <=> 0|NULL <=> NULL|0 <=> NULL|

-------|-------------|----------|

1| 1| 0|

對于非空的數據,<=> 相當于普通的 = 運算符;對于兩個 NULL 值,返回 1;對于一個 NULL 值,返回 0。MySQL 中的 <=> 運算符等價于 SQL 標準中的 IS NOT DISTINCT FROM 運算符。

8.3 復合條件

除了使用單個查詢條件之外,MySQL 還支持利用邏輯運算符將多個查詢條件進行組合:AND,邏輯與運算符。當兩個表達式的值都為真時結果才為真;

OR,邏輯或運算符。只要有一個表達式的值為真結果就為真;

NOT,邏輯非運算符。如果表達式的值為真,結果為假;如果表達式的值為假,結果為真;如果表達式的值為 NULL,結果為 NOT NULL;

XOR,邏輯異或運算符。只要有一個表達式的值為 NULL,結果就為 NULL;如果一個表達式的值為假,另一個表達式為真,結果就為真;否則結果為假。

以下查詢返回了 2011 年之后入職的女性員工:

select emp_name, sex, hire_date

from employee

where sex = '女'

and hire_date >= '2011-01-01';

emp_name |sex |hire_date |

---------|----|----------|

趙氏 |女 |2011-11-10|

以下查詢返回了所有女性員工以及 2011 年之后入職的員工:

select emp_name, sex, hire_date

from employee

where sex = '女'

or hire_date >= '2011-01-01';

emp_name |sex |hire_date |

----------|----|----------|

孫尚香 |女 |2002-08-08|

孫丫鬟 |女 |2002-08-08|

關平 |男 |2011-07-24|

趙氏 |女 |2011-11-10|

關興 |男 |2011-07-30|

...

以下查詢返回了不是 2002 年入職的員工:

select emp_name, hire_date

from employee

where hire_date not between '2002-01-01' and '2002-12-31';

emp_name|hire_date |

---------|----------|

劉備 |2000-01-01|

關羽 |2000-01-01|

張飛 |2000-01-01|

諸葛亮 |2006-03-15|

黃忠 |2008-10-25|

NOT 運算符可以對其他運算符的結果取反,例如,NOT IN 運算符返回不在列表中的數據。

對于邏輯運算符,MySQL 使用短路運算(short-circuit)。只要左邊的表達式可以決定最終的結果,就不會計算右邊的表達式。例如:

select 1 = 0 and 1 / 0;

1 = 0 and 1 / 0|

---------------|

0|

因為 1 = 0 的結果為 False,AND 運算符的結果肯定就是 False;所以不會計算 1 / 0,也就不會返回除零錯誤。

8.4 排除重復值

DISTINCT 是一個特殊的運算符,可以排除查詢結果中的重復記錄:

SELECT [ALL | DISTINCT] col1, col2, ...

FROM table_name;

ALL 表示返回全部結果,DISTINCT 表示返回字段組合結果中的不同值。默認選項為 ALL。

例如:

select sex

from employee;

sex|

----|

男 |

男 |

男 |

男 |

男 |

男 |

...

select distinct sex

from employee;

sex|

----|

男 |

女 |

對于 DISTINCT 而言,所有的 NULL 值都相同。例如:

select distinct bonus

from employee;

bonus |

--------|

10000.00|

8000.00|

|

5000.00|

6000.00|

2000.00|

1500.00|

很多員工的 bonus 都為空,但是查詢結果中只返回了一個 NULL 值。DISTINCTROW 是 DISTINCT 的同義詞。

如果你在學習過程中遇到任何問題,歡迎留言提問,不用客氣!

總結

以上是生活随笔為你收集整理的mysql怎么滤空_《MySQL 入门教程》第 08 篇 过滤条件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。