語法格式: select * | 字段列表 from 表1, 表2 where 表達式 group by ... having ... order by ... limit .. # 查詢全部字段 select * from 表名; # 查詢單個字段 select 列名 from 表名; # 查詢多個字段 select 列名1, 列名2, ... from 表名; # 查詢指定記錄 select 列名 from 表名 where 查詢條件; # 帶IN關鍵字查詢 select s_id, f_name, f_price from fruits where s_id IN (100, 110); # NOT 關鍵字檢索不在條件範圍內的條件。 select s_id, f_name, f_price from fruits where s_id NOT IN (100, 110); # between and select s_id, f_name, f_price from fruits where s_id between 100 and 110; # like select f_id, f_name from fruits where f_name like 'b%'; %:匹配多個字符 _:匹配任意單個字符 # 查詢空值 select f_id, f_name from fruits where f_name is null; # 帶and的多條件查詢 select f_id, f_name from fruits where f_id='100' and f_name='apple'; # 帶OR的多條件查詢 select f_id, f_name from fruits where s_id=100 or s_id=101; # 查詢結果 去重 select distinct 字段名 from 表名; # 對查詢結果排序 select 字段名 from 表名 order by 字段名; # 多列排序 select 列名 from 表名 order by 字段名1, 字段名2; # 指定排序方向 DESC 降序、ASC 升序 select 列名 from 表名 order by 字段名1, 字段名2 DESC; # 分組查詢 GROUP BY 字段 HAVING 條件表達式 # 在 group by 子句中使用 WITH ROLLUP 在查詢出的分組記錄以後增長一條記錄,該記錄計算查詢出的全部記錄的總和,即統計記錄數量。 例:GROUP BY s_id WITH ROLLUP # GROUP BY 和 ORDER BY 一塊兒使用 # 使用 LIMIT 限制查詢結果的數量 LIMIT 行數
使用聚合函數查詢正則表達式
鏈接查詢app
# 內鏈接查詢 INNER JOIN select 列名1, 列名2, ... from 表1 inner join 表1 ON 條件; # 外鏈接查詢 左鏈接 LEFT JOIN:返回包括左表中的全部記錄和右表中鏈接字段相等的記錄。 右鏈接 RIGHT JOIN:返回包括右表中的全部記錄和左表中鏈接字段相等的記錄。 # 複合條件鏈接查詢
子查詢函數
# ANY 只要num1 大於 num2 的任何一個值,即符合查詢條件 select num1 from tb1 where num1 > ANY (select num2 from tb2); # ALL num1 比 num2 全部值都大的值,即符合查詢條件 select num1 from tb1 where num1 > ALL (select num2 from tb2); # EXISTS EXISTS 關鍵字後面的參數是一個任意的子查詢,系統對子查詢進行運算以判斷它是否返回行,若是至少返回一行,那麼EXISTS的結果爲 true,此時外層查詢語句將進行查詢,反之,結果爲false,此時外層語句將不進行查詢。 # 帶IN關鍵字的子查詢 IN關鍵字進行子查詢時,內層查詢語句僅返回一個數據列,這個數據列的值將提供給外層查詢語句進行比較操做。
合併查詢數據 UNIONui
利用UNION關鍵字,能夠給出多條SELECT語句,並將它們的結果組合成單個結果集。
合併時,兩個表對應的列數和數據類型必須相同。各個SELECT語句之間使用UNION或UNION ALL 關鍵字分割。
UNION不使用ALL,執行的時候刪除重複的記錄,全部返回的行都是惟一的;使用關鍵字ALL的做用是不刪除重複行也不對結果自動排序。
基本語法格式以下:
SELECT column , ... FROM table1
UNION [ALL]
SELECT column , ... FROM table2;
爲表和字段取別名spa
# 爲表名取別名 表名 AS 表別名 # 爲字段名取別名 列名 AS 列別名
使用正則表達式查詢code
MySQL中使用REGEXP關鍵字指定正則表達式的字符匹配模式。
# 查詢以特定字符或字符串開頭的記錄 ^ select * from fruits where f_name REGEXP '^b'; # 查詢以特定字符或字符串結尾的記錄 select * from fruits where f_name regexp 'y$'; # 用符號 '.' 來替代字符串中的任意一個字符 select * from fruits where f_name regexp 'a.g'; # 使用 * 和 + 來匹配多個字符 * 匹配任意屢次,包括0次。+ 匹配前面的字符至少出現一次。 # 匹配指定的字符串 只要這個字符串在查詢中便可,如要匹配多個字符串之間使用分隔符 | 。 select * from fruits where f_name regexp 'on|ap'; # 匹配指定字符中的任意一個 方括號 [] 制動一個字符集合,只匹配其中任何一個字符,即爲所查找的文本。 # 查找f_name 字段中包含字母 o 或者 t 的記錄 select * from fruits where f_name regexp '[ot]'; # 匹配指定字符之外的字符 [^字符集合] 匹配不在指定集合中的任何字符。 查詢f_name 字段包含字母a~e和數字1~2之外的字符的記錄 select * from fruits where f_id regexp '[a-e1-2]'; # 使用 {n,} 或者 {n, m} 來指定字符串連續出現的次數 {n,} 表示至少匹配n次前面的字符;{n, m} 表示匹配前面的字符串很多於n次,很少於m次。 select * from fruits where f_name regexp 'x{2,}';
2.1 爲表的全部字段插入數據regexp
INSERT INTO table_name (column_list) VALUES (values_list); 注意:使用該語句時 字段列和數據值的數量必須相同。 1、向表中全部字段插值的方法有兩種:一種是指定全部的字段名,另外一種是徹底不指定字段名。 2、INSERT 語句後面的列名順序能夠不是表定義時的順序。即插入數據時,不須要按照表定義的順序插入,只要保證值的順序與列字段的順序相同就能夠。 三、使用INSERT插入數據時,容許列名稱列表爲空,此時,列表中須要爲表的每個字段指定值,兵器人值的順序必須和數據表中的阻判定義時的順序相同。
2.2 爲表的指定字段插入數據blog
爲表的指定字段插入數據,就是在INSERT語句中只向部分字段中插入值,而其餘字段爲表定義時的默認值。
2.3 同時插入多條記錄排序
INSERT 語句能夠同時向數據表中插入多條記錄,插入時指定多個值列表,每一個值列表之間用逗號隔開,基本語法以下:
INSERT INTO table_name (column_list) VALUES (values_list1), (values_list2), ...;
2.4 將查詢結果插入到表中字符串
基本語法格式以下:
INSERT INTO table_name1 (column_list1)
SELECT (column_list2) FROM table_name2 WHERE (condition);
注意:column_list1 與 column_list2 列表中的字段個數相同,數據類型相同。
# 基本語法結構以下: UPDATE table_name SET column_name1=value1, column_name2=value2, ..., column_namen=valuen WHERE (condition); 例: UPDATE person SET age=15, name='hyp' WHERE id=11;
# 基本語法格式以下: DELETE FROM table_name [WHERE <condition>]; 例:DELETE FROM person where id=10; # 刪除多條記錄 DELETE FROM person WHERE age between 19 and 22; # 刪除person表中全部數據, 但表還存在 DELETE FROM person;