關於SQL易忘的十五個知識點

主要記錄SQL尤其是MySQL中,一些看了就忘,需要經常查的小知識點~

1. 下劃線_通配符與百分號%通配符的區別

下劃線的用途與%一樣,但是%能匹配0個字符不一樣,_總是匹配一個字符,不能多也不能少。
在這裏插入圖片描述

2. 匹配不區分大小寫

通過使用BINARY可以區分,如:

WHERE prod_name REGEXP BINARY 'JetPack .000'

3. MySQL正則表達式

正則表達式的作用是匹配文本,將一個模式(正則表達式)與一個文本串進行比較。MySQL
用WHERE子句對正則表達式提供了初步的支持,允許你指定正則表達式,過濾SELECT檢索出的數據。

4. LIKE和REGEXP的區別

LIKE匹配整個列。如果被匹配的文本在列值中出現,LIKE將不會找到它,相應的行也不被返回(除非使用通配符)。而REGEXP在列值內進行匹配,如果被匹配的文本在列值中出現,REGEXP將會找到它,相應的行將被返回。這是一個非常重要的差別。

5. 匹配

匹配字符
在這裏插入圖片描述
匹配特殊字符
爲了匹配特殊字符,必須用\爲前導。\-表示查找-,\.表示查找.。這種處理就是所謂的轉義(escaping),正則表達式內具有特殊意義的所有字符都必須以這種方式轉義。這包括.、|、[]以及迄今爲止使用過的其他特殊字符。
\也用來引用元字符(具有特殊含義的字符)。
在這裏插入圖片描述
例:
在這裏插入圖片描述
定位符
在這裏插入圖片描述
例:
在這裏插入圖片描述
注:^的雙重用途
^有兩種用法。在集合中(用[和]定義),用它來否定該集合,否則,用來指串的開始處。

6. 文本處理函數

在這裏插入圖片描述
SOUNDEX是一個將任何文本串轉換爲描述其語音表示的字母數字模式的算法。使用Soundex()函數進行搜索,它匹配所有發音類似於Y.Lie的聯繫名:
在這裏插入圖片描述
拼接:將值聯結到一起構成單個值。
解決辦法是把兩個列拼接起來。在MySQL的SELECT語句中,可使用Concat()函數來拼接兩個列。

SELECT Concat(ven_name, '(', vend_country, ')')

7. 日期和時間處理函數

在這裏插入圖片描述
在這裏插入圖片描述

8. 數值處理函數

在這裏插入圖片描述

9. 聚集函數

在這裏插入圖片描述
其中,在用於文本數據時,如果數據按相應的列排序,則MAX()返回最後一行,MIN()返回第一行。
COUNT()函數有兩種使用方式。使用COUNT(*)對錶中行的數目進行計數,不管表列中包含的是空值(NULL)還是非空值。使用COUNT(column)對特定列中具有值的行進行計數,忽略NULL值。

10. HAVING和WHERE的區別

“Where” 是一個約束聲明,使用Where來約束來之數據庫的數據,Where是在結果返回之前起作用的,且Where中不能使用聚合函數。
“Having”是一個過濾聲明,是在查詢返回結果集以後對查詢結果進行的過濾操作,在Having中可以使用聚合函數。
在這裏插入圖片描述

11. 組合查詢UNION

UNION 返回匹配行,不保留重複行
UNION ALL 返回匹配行,包括重複行

UNION中的每個查詢必須包含相同的列、表達式或聚集函數(不過各個列不需要以相同的次序列出)。
在用UNION組合查詢時,只能使用一條ORDER BY子句,它必須出現在最後一條SELECT語句之後。對於結果集,不存在用一種方式排序一部分,而又用另一種方式排序另一部分的情況,因此不允許使用多條ORDER BY子句。

12. 全文本搜索

在這裏插入圖片描述
查詢擴展
在這裏插入圖片描述
表中的行越多(這些行中的文本就越多),使用查詢擴展返回的結果越好。

布爾文本搜索
在這裏插入圖片描述
在這裏插入圖片描述
在布爾方式中,不按等級值降序排序返回的行。

13. 數據插入

插入一行
在這裏插入圖片描述
插入多行
在這裏插入圖片描述
插入檢索出的數據
在這裏插入圖片描述

14. 更新數據、刪除數據

#更新多個列
UPDATE customers
SET cust_name = 'The Fudds',
	cust_email = '[email protected]'
WHERE cust_id = 10005 ;     #不要省略WHERE子句

#刪除某個列的值
UPDATE customers
SET cust_email = NULL    #其中NULL用來去除cust_email列中的值。
WHERE cust_id = 10005 ; 

#刪除數據
DELETE FROM customers
WHERE cust_id = 10005 ;
#DELETE不需要列名或通配符。DELETE刪除整行而不是刪除列,但DELETE不刪除表本身。爲了刪除指定的列,請使用UPDATE語句。

15. 主鍵、索引和外鍵

主鍵的作用:

  • 惟一地標識一行。
  • 作爲一個可以被外鍵有效引用的對象。

索引:索引分爲主鍵索引、唯一索引、普通索引、全文索引、組合索引等

  • 主鍵索引(PRIMARY KEY):不可以爲空可以做外鍵,一張表中只能有一個主鍵索引。
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
  • 唯一索引(UNIQUE):被索引的數據列不允許包含重複的值,但允許有空值。
ALTER TABLE `table_name` ADD UNIQUE (`column`)
  • 普通索引(INDEX):用來加速數據訪問速度而建立的索引。多建立在經常出現在查詢條件的字段和經常用於排序的字段。被索引的數據列允許包含重複的值。
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
  • 全文索引(FULLTEXT):僅可用於 MyISAM 表,針對較大的數據,生成全文索引很耗時好空間。
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
  • 組合索引:爲了更多的提高mysql效率可建立組合索引,遵循”最左前綴“原則。
 ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` ) 

主鍵和索引:主鍵是爲了標識數據庫記錄唯一性,不允許記錄重複,且鍵值不能爲空,主也是一個特殊索引。數據表中只允許有一個主鍵,但是可以有多個索引。

外鍵:
在這裏插入圖片描述

參考資料

《MySQL必知必會》Ben Forta 著,劉曉霞 鐘鳴 譯
SQL教程 廖雪峯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章