05 MySQL之查詢、插入、更新與刪除

01-查詢數據

語法格式:
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,}';

02-插入數據

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 列表中的字段個數相同,數據類型相同。

03-更新數據

# 基本語法結構以下:
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;

04-刪除數據

# 基本語法格式以下:
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;
相關文章
相關標籤/搜索