本文將詳細介紹mysql關於記錄的增刪改查
INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE} ({expr|DEFAULT},...),(...),...
首先,創建一個簡單的數據表
如果省略col_name,則意味著所有的字段按照順序依次賦值。因為id字段是自動編號的,該字段可以賦值為NULL或DEFAULT
通過逗號分隔,可以一次性寫入多條記錄;而且,值可以使用表達式表示
數據庫並沒有布爾類型BOOLEAN,如果聲明類型為BOOLEAN,則會被轉換為TINYINT類型,true轉換為1,false轉換為0
方法二
INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},...
與第一種方法的區別在於,此方法可以使用子查詢(SubQuery),以及一次性只能插入一條記錄
方法三
INSERT [INTO] tb1_name [(col_name,...)] SELECT ...
此方法可以將查詢結果插入到指定數據表
UPDATE [LOW_PRIORITY][IGNORE] table_reference SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...[WHERE where_condition]
可以一次更新多條記錄;當省略WHERE條件時,所有記錄的值將會更新
下面將所有人的年齡都增加5歲
下面將所有人的年齡更新為原有年齡減去其id值,將所有人的性別改成0
下面將所有id值為偶數的人的年齡加10歲
DELETE FROM tbl_name [WHERE where_condition]
[注意]刪除某條記錄後,再插入一條新的記錄,自動編號不會補到刪除記錄的編號上,而是基於原有記錄最大編號繼續增加
SELECT select_expr [,select_expr...] [ FROM tbl_references [WHERE where_condition] [GROUP BY {col_name | position} [ASC | DESC],...] [HAVING where_condition] [ORDER BY {col_name | expo | position} [ASC | DESC],...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] ]
查詢表達式的每個表達式表示想要查找的一列,必須有至少一個。多個列之間以英文逗號分開
查詢表達式的順序可以和原表中字段的順序不一致
在使用多表連接時,可能會出現不同的表中存在名稱相同的字段,如果直接寫字段,分不清到底是哪張數據表的字段。在字段名前加上數據表可以分辨出隸屬於哪張數據表
星號*號表示所有的列。tbl_name.*可以表示命名表的所有列
查詢表達式可以使用[AS] alias_name為其賦予別名,別名可用於GROUP BY, ORDER BY, HAVING字句
[注意]在使用查詢表達式設置別名查詢,AS可以使用,也可以不使用。但如果不使用,可能會出現二義性情況
SELECT id username FROM users;
mysql會把上面的語句解析為username作為id的別名
[GROUP BY {col_name | position} [ASC | DESC],...]
查詢結果分組(GROUP BY)的參數中,ASC是升序,是默認的;DESC是降序
col_name代表字段名,position以數字代表位置,如1代表SELECT語句中第一次出現的字段
分組條件
[HAVING where_condition]
在設置分組(HAVING)時,一定要保證分組條件(where_condition)要麼是聚合函數(max,min,avg,count,sum),要麼其中的字段必須是SELECT中的一個查詢字段,否則會報錯
分組排序
[ORDER BY {col_name | expo | position} [ASC | DESC],...]
可以使用分組排序(order by)對查詢結果進行排序
同時可以用幾個條件來排序,按輸入順序來進行優先級的選擇
限制結果
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
限制查詢結果(LIMIT)默認情況下,返回所有查找到的結果
如果LIMIT後面只有一個數字,表示從第一條開始返回,並返回相應數字個數的記錄
SELECT語句默認從0開始編號,如果想從第三條開始返回,則需要offset參數和row_count參數一起使用
【補充】
INSERT [INTO] tbl_name [(col_name,...] SELECT ...
與一開始介紹的插入記錄的方法不同,現在這種方法可以將查找的結果存儲到指定的數據表