mysql使用过程中的几个细节注意点
由于博主目前在數(shù)據(jù)部門工作,接觸最多的關(guān)系型數(shù)據(jù)庫就是mysql,因?yàn)闃I(yè)務(wù)部門的數(shù)據(jù)一般都是存儲在mysql,而最終數(shù)據(jù)需要在大數(shù)據(jù)平臺上管理,所以中間過程少不了ETL,以及給數(shù)據(jù)分析BI人員提供數(shù)據(jù),這樣就會導(dǎo)致寫很多的sql,關(guān)于sql,博主也是半路出家,野路子,所以難免會犯錯誤,下面整理幾個細(xì)節(jié),最近體會到的。
1. UNION關(guān)鍵字
MySQL UNION 操作符用于連接兩個以上的 SELECT 語句的結(jié)果組合到一個結(jié)果集合中。多個 SELECT 語句會刪除重復(fù)的數(shù)據(jù)。
下面要重點(diǎn)注意UNION后面的關(guān)鍵字DISTINCT和ALL,使用不同,獲取的數(shù)據(jù)也不同,細(xì)節(jié)。
語法
SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions];參數(shù)
expression1, expression2, ... expression_n: 要檢索的列。
tables: 要檢索的數(shù)據(jù)表。
WHERE conditions: 可選, 檢索條件。
DISTINCT: 可選,刪除結(jié)果集中重復(fù)的數(shù)據(jù)。默認(rèn)情況下 UNION 操作符已經(jīng)刪除了重復(fù)數(shù)據(jù),所以 DISTINCT 修飾符對結(jié)果沒啥影響。
ALL: 可選,返回所有結(jié)果集,包含重復(fù)數(shù)據(jù)。
2.NULL 值處理
MySQL 使用 SQL SELECT 命令及 WHERE 子句來讀取數(shù)據(jù)表中的數(shù)據(jù),但是當(dāng)提供的查詢條件字段為 NULL 時,該命令可能就無法正常工作。
特別注意,NULL的比較不能使用= NULL 或 != NULL
為了處理這種情況,MySQL提供了三大運(yùn)算符:
- IS NULL: 當(dāng)列的值是 NULL,此運(yùn)算符返回 true。
- IS NOT NULL: 當(dāng)列的值不為 NULL, 運(yùn)算符返回 true。
- <=>:?比較操作符(不同于=運(yùn)算符),當(dāng)比較的的兩個值為 NULL 時返回 true。
關(guān)于 NULL 的條件比較運(yùn)算是比較特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
在 MySQL 中,NULL 值與任何其它值的比較(即使是 NULL)永遠(yuǎn)返回 false,即 NULL = NULL 返回false 。
MySQL 中處理 NULL 使用 IS NULL 和 IS NOT NULL 運(yùn)算符。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的mysql使用过程中的几个细节注意点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R 缺失值处理
- 下一篇: mysql中ifnull和hive中if