數據庫基本語法使用

SELECT語句

  • SELECT 列名 FROM 表明; 單行檢索,多行檢索
  • SELECT DATABASE(); 顯示當前使用數據庫
  • 檢索不同的行:SELECT DISTINCT 列名 FROM 表明; 只返回不同的值
  • 限制結果:SELECT 列名 FROM 表明 LIMIT 限制的行數;
    • 指定開始行數和行數:`SELECT 列名 FROM 表明 LIMIT 5,5;
      • LIMIT 5 OFFSET 5;`
  • 使用完全限定的表明:SELECT products.pro_name FROM 表明;

排序檢索數據:使用ORDER BY語句

  • 排序數據:SELECT prod_name FROM products ORDER BY prod_name;
  • 按多個列排序:SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price,prod_name;
    • 注意:在多行排序中,是按照指定的行書順序進行排序的,如上,先是以價格排序,然後在價格相同的數據中再以姓名排序。如果價格都不相同則就不會以姓名排序。
  • 指定排序方向(DESC關鍵字):SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC; 按照價格以降序的方式排序產品
  • ASC是默認升序的關鍵字
  • ORDER BY子句位置:要保證ORDER BY位於FROM子句之後。如果使用LIMIT,它必須位於ORDER BY之後。

過濾數據:使用WHERE語句

  • 數據根據WHERE子句中指定搜索條件進行過濾,WHERE子句在表明(FROM子句)之後給出:SELECT prod_name,prod_price FROM products WHERE prod_price=2.50;
  • WHERE子句操作符:=,<>,!=,<,<=,>,>=,BETWEEN
    • BETWEEN匹配範圍中所有的值,包括指定開始值和結束值
      -SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
  • 空值檢查:
    • NULL 無值(no value):SELECT prod_name FROM products WHERE prod_price IS NULL;
  • WHERE子句的位置:在同時只用ORDER BY和WHERE子句時,應該讓ORDER BY位於WHERE之後,否則就會產生錯誤

數據過濾

組合WHERE語句

  • AND操作符
  • OR操作符
    • 注意:當使用AND和OR的聯合查詢時,要考慮到操作符優先級問題,使用圓括號明確的分組相應操作符
  • IN操作符:IN在WHERE子句中用來指定要匹配值的清單的關鍵字,功能與OR相當
  • NOT操作符:一般情況下與IN,BETWEEN,EXISTS子句配合使用,相當於否定跟在它後面的條件。
    • SELECT prod_name,prod_price FROM products WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name;

通配符進行過濾

  • LIKE操作符:模糊查詢
    • 百分號(%)通配符:搜索模式中給定位置的0個,1個或多個字符
      • 注意:‘%’不能匹配用值NULL作爲產品名的行,在匹配時是默認不區分大小寫的
    • 下劃線(_)通配符:只匹配單個字符
  • 注意:不要過度的使用通配符,在確定要使用通配符的時候,除非絕對必要,否則不要將它們用在搜索模式的開始處,將通配符置於搜索模式的開始處,搜索的效率是很慢的

使用正則表達式進行搜索、

  • REGEXP :regesxp
    • 進行OR匹配:搜索兩個串之一,使用 ‘ | ’
      -SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;
    • 匹配幾個字符之一:可以指定一組用[ 和 ]括起來的字符來完成。
      • SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name
        • 正則表達式[123] Ton。[123]定義一組字符,其含義是匹配1或2或3。可以理解成[1|2|3] Ton
        • 字腹肌和也可以被否定,即,它們將匹配除指定字符外的任何東西。否定一個字符集只需喲在集合開始的地方放置一個 ^ 即可。就比如:[^123] 匹配出這些字符外的任何東西
    • 範圍匹配:[0-9],[a-z] 匹配任意數字和字符串,定義一個範圍
      • SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;
    • 匹配特殊字符:要匹配特殊字符,必須使用\轉義字符作爲前導。\- 表示查找 -,\.表示查找 .
      • SELECT prod_name FROM products WHERE prod_name REGEXP '\\.' ORDER BY prod_name;
    • 匹配字符類
      字符集
說明
[:alnum:] 任意字母和數字(同[a-zA-Z0-9]
[:alpha:] 任意字母(同[a-zA-Z]
[:blank:] 空格和製表(同[\\t])
[:cntrl:] ASCⅡ控制符(ASCⅡ 0到31和127)
[:digit:] 任意數字(同[0-9]
[:graph:] 與[:print:]相同,但不包括空格
[:lower:] 任意小寫字母(同[a-z]
[:print:] 任意可打印字符
[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在內的任意空白字符(同[\\f\\n\\r\\t\\v]
[:upper:] 任意大寫字母(同[A-Z]
[:xdigit:] 任意十六進制數字(同[a-fA-F0-9]
  • 匹配多個實例
    重複元字符
元字符 說明
* 0個或多個匹配
+ 1個或多個匹配(等於{1,})
0個或1個匹配(等於{0,1})
{n} 指定數目匹配
{n,} 不少於指定數目匹配
{n,m} 匹配數目的範圍(m不超過255)

範例

  • SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name
    • 注意:sticks? 會匹配到stick與sticks(s後的?使s可選,因爲?匹配它前面的任何字符的0次或1次出現)。
  • SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}' ORDER BY prod_name;
    • [:digit:] 匹配任意數字,所以會查找到一個數字的集合。{4}表示要求它前面的字符(任意數字)出現4次,所以就會查找到存在4個數字字符的集合,如1000,8563,7354。也可以用[0-9][0-9][0-9][0-9]來替代上邊的查詢語句,其效果是一樣的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章