存儲在系統中的資料是資料庫管理系統(DBMS)的核心,資料庫被設計用來管理資料的存儲、通路和維護資料的完整性。MySQL中提供豐富的資料管理語句,包括插入資料的INSERT、更新資料的UPDATE以及删除資料的DELETE語句。
7.1、插入資料
為表的所有字段插入資料
使用基本的INSERT語句插入資料,要求指定表名稱和插入到新紀錄中的值,其基本文法為:
1
<code>INSERT</code> <code>INTO</code> <code>tbl_name (column_list) </code><code>VALUES</code> <code>(value_list)</code>
在插入資料前,首先建立一張表:
2
3
4
5
6
7
8
9
<code>mysql> </code><code>CREATE</code> <code>TABLE</code> <code>person</code>
<code> </code><code>-> (</code>
<code> </code><code>-> id </code><code>INT</code> <code>UNSIGNED </code><code>NOT</code> <code>NULL</code> <code>AUTO_INCREMENT,</code>
<code> </code><code>-> </code><code>name</code> <code>CHAR</code><code>(40) </code><code>NOT</code> <code>NULL</code> <code>DEFAULT</code> <code>''</code><code>,</code>
<code> </code><code>-> age </code><code>INT</code> <code>NOT</code> <code>NULL</code> <code>DEFAULT</code> <code>0,</code>
<code> </code><code>-> info </code><code>CHAR</code><code>(50) </code><code>NULL</code><code>,</code>
<code> </code><code>-> </code><code>PRIMARY</code> <code>KEY</code> <code>(id)</code>
<code> </code><code>-> );</code>
<code>Query OK, 0 </code><code>rows</code> <code>affected (0.03 sec)</code>
在person表中,插入一條新記錄,id值為1,name值為Green,age值為21,info值為Lawyer
10
11
<code>mysql> </code><code>INSERT</code> <code>INTO</code> <code>person (id ,</code><code>name</code><code>, age , info)</code>
<code> </code><code>-> </code><code>VALUES</code> <code>(1,</code><code>'Green'</code><code>, 21, </code><code>'Lawyer'</code><code>);</code>
<code>Query OK, 1 row affected (0.02 sec)</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person;</code>
<code>+</code><code>----+-------+-----+--------+</code>
<code>| id | </code><code>name</code> <code>| age | info |</code>
<code>| 1 | Green | 21 | Lawyer |</code>
<code>1 row </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>
在person表中,插入一條新記錄,id值為2,name值為Suse,age值為22,info值為dancer
12
<code>mysql> </code><code>INSERT</code> <code>INTO</code> <code>person (age ,</code><code>name</code><code>, id , info)</code>
<code> </code><code>-> </code><code>VALUES</code> <code>(22, </code><code>'Suse'</code><code>, 2, </code><code>'dancer'</code><code>);</code>
<code>| 2 | Suse | 22 | dancer |</code>
<code>2 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
為表的指定字段插入資料
在person表中,插入一條新記錄,name值為Willam,age值為20,info值為sports man
13
<code>mysql> </code><code>INSERT</code> <code>INTO</code> <code>person (</code><code>name</code><code>, age,info)</code>
<code> </code><code>-> </code><code>VALUES</code><code>(</code><code>'Willam'</code><code>, 20, </code><code>'sports man'</code><code>);</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person; </code>
<code>+</code><code>----+--------+-----+------------+</code>
<code>| id | </code><code>name</code> <code>| age | info |</code>
<code>| 1 | Green | 21 | Lawyer |</code>
<code>| 2 | Suse | 22 | dancer |</code>
<code>| 3 | Willam | 20 | sports man |</code>
<code>3 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
在person表中,插入一條新記錄,name值為laura,age值為25
<code>mysql> </code><code>INSERT</code> <code>INTO</code> <code>person (</code><code>name</code><code>, age ) </code><code>VALUES</code> <code>(</code><code>'Laura'</code><code>, 25);</code>
<code>Query OK, 1 row affected (0.01 sec)</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person; </code>
<code>| 4 | Laura | 25 | </code><code>NULL</code> <code>|</code>
<code>4 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
可以發現id字段在插入資料後,沒有指派時自動增加,在這裡id字段為表的主鍵,不能為空,紫銅會自動為字段插入自增的序列值。
同時插入多條記錄
INSERT語句可以同時相資料表中插入多條記錄,插入時指定多個值清單,每個值清單之間用逗号分隔開,基本文法為:
<code>INSERT</code> <code>INTO</code> <code>tbl_name (column_list) </code>
<code> </code><code>VALUES</code> <code>(value_list1), (value_list2),(value_list3);</code>
在person表中,在name、age和info字段指定插入值,同時插入3條新記錄
14
15
16
17
18
19
20
<code>mysql> </code><code>INSERT</code> <code>INTO</code> <code>person(</code><code>name</code><code>, age, info)</code>
<code> </code><code>-> </code><code>VALUES</code> <code>(</code><code>'Evans'</code><code>,27, </code><code>'secretary'</code><code>),</code>
<code> </code><code>-> (</code><code>'Dale'</code><code>,22, </code><code>'cook'</code><code>),</code>
<code> </code><code>-> (</code><code>'Edison'</code><code>,28, </code><code>'singer'</code><code>);</code>
<code>Query OK, 3 </code><code>rows</code> <code>affected (0.02 sec)</code>
<code>Records: 3 Duplicates: 0 Warnings: 0</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person; </code>
<code>| 5 | Evans | 27 | secretary |</code>
<code>| 6 | Dale | 22 | cook |</code>
<code>| 7 | Edison | 28 | singer |</code>
<code>7 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
在person表中,不指定插入清單,同時插入2條新記錄
21
<code>mysql> </code><code>INSERT</code> <code>INTO</code> <code>person</code>
<code> </code><code>-> </code><code>VALUES</code> <code>(9,</code><code>'Harry'</code><code>,21, </code><code>'magician'</code><code>),</code>
<code> </code><code>-> (</code><code>NULL</code><code>,</code><code>'Harriet'</code><code>,19, </code><code>'pianist'</code><code>);</code>
<code>Query OK, 2 </code><code>rows</code> <code>affected (0.02 sec)</code>
<code>Records: 2 Duplicates: 0 Warnings: 0</code>
<code>+</code><code>----+---------+-----+------------+</code>
<code>| id | </code><code>name</code> <code>| age | info |</code>
<code>| 1 | Green | 21 | Lawyer |</code>
<code>| 2 | Suse | 22 | dancer |</code>
<code>| 3 | Willam | 20 | sports man |</code>
<code>| 4 | Laura | 25 | </code><code>NULL</code> <code>|</code>
<code>| 5 | Evans | 27 | secretary |</code>
<code>| 6 | Dale | 22 | cook |</code>
<code>| 7 | Edison | 28 | singer |</code>
<code>| 9 | Harry | 21 | magician |</code>
<code>| 10 | Harriet | 19 | pianist |</code>
<code>9 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
将查詢結果插入資料
INSERT語句用來給資料表插入記錄時,指定插入記錄的列值。INSERT還可以将SELECT語句查詢的結果插入到清單中,其基本文法為:
<code>INSERT</code> <code>INTO</code> <code>tbl_name1 (column_list1) </code>
<code> </code><code>SELECT</code> <code>(column_list2) </code><code>FROM</code> <code>table_name2 </code><code>WHERE</code> <code>(condition)</code>
從person_old表中查詢所有的記錄,并将其插入到person表中
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<code>首先,建立一個名為person_old的資料表,其表結構與person結構相同</code>
<code>mysql> </code><code>CREATE</code> <code>TABLE</code> <code>person_old</code>
<code>Query OK, 0 </code><code>rows</code> <code>affected (0.11 sec)</code>
<code>向person_old表中添加兩條記錄</code>
<code>mysql> </code><code>INSERT</code> <code>INTO</code> <code>person_old</code>
<code> </code><code>-> </code><code>VALUES</code> <code>(11,</code><code>'Harry'</code><code>,20, </code><code>'student'</code><code>), (12,</code><code>'Beckham'</code><code>,31, </code><code>'police'</code><code>);</code>
<code>Query OK, 2 </code><code>rows</code> <code>affected (0.20 sec)</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person_old;</code>
<code>+</code><code>----+---------+-----+---------+</code>
<code>| id | </code><code>name</code> <code>| age | info |</code>
<code>| 11 | Harry | 20 | student |</code>
<code>| 12 | Beckham | 31 | police |</code>
<code>插入資料到person表中</code>
<code>mysql> </code><code>INSERT</code> <code>INTO</code> <code>person(id, </code><code>name</code><code>, age, info)</code>
<code> </code><code>-> </code><code>SELECT</code> <code>id, </code><code>name</code><code>, age, info </code><code>FROM</code> <code>person_old;</code>
<code>Query OK, 2 </code><code>rows</code> <code>affected (0.01 sec)</code>
<code>| 11 | Harry | 20 | student |</code>
<code>| 12 | Beckham | 31 | police |</code>
<code>11 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
7.2、更新資料
表中有資料之後,可以對資料進行更新,其基本文法為:
<code>UPDATE</code> <code>table_name</code>
<code> </code><code>SET</code> <code>col_name1=value1,col_name2=value2,...,</code>
<code> </code><code>WHERE</code> <code>where_condition</code>
在person表中,更新id值為11的記錄,将age字段值改為15,将name字段值改為LiMing
<code>mysql> </code><code>UPDATE</code> <code>person </code><code>SET</code> <code>age = 15, </code><code>name</code><code>=</code><code>'LiMing'</code> <code>WHERE</code> <code>id = 11;</code>
<code>Rows</code> <code>matched: 1 Changed: 1 Warnings: 0</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person </code><code>WHERE</code> <code>id=11;</code>
<code>+</code><code>----+--------+-----+---------+</code>
<code>| id | </code><code>name</code> <code>| age | info |</code>
<code>| 11 | LiMing | 15 | student |</code>
在person表中,更新age值為19~22的記錄,将info字段值都改為student
<code>mysql> </code><code>UPDATE</code> <code>person </code><code>SET</code> <code>info=</code><code>'student'</code> <code>WHERE</code> <code>age </code><code>BETWEEN</code> <code>19 </code><code>AND</code> <code>22; </code>
<code>Query OK, 6 </code><code>rows</code> <code>affected (0.02 sec)</code>
<code>Rows</code> <code>matched: 6 Changed: 6 Warnings: 0</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person </code><code>WHERE</code> <code>age </code><code>BETWEEN</code> <code>19 </code><code>AND</code> <code>22; </code>
<code>| 1 | Green | 21 | student |</code>
<code>| 2 | Suse | 22 | student |</code>
<code>| 3 | Willam | 20 | student |</code>
<code>| 6 | Dale | 22 | student |</code>
<code>| 9 | Harry | 21 | student |</code>
<code>| 10 | Harriet | 19 | student |</code>
<code>6 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
7.3、删除資料
從資料表中删除資料使用DELETE語句,其基本文法為:
<code>DELETE</code> <code>FROMN table_name [</code><code>WHERE</code> <code><condition>]</code>
在person表中,删除id等于11的記錄
<code>執行删除操作前,使用</code><code>SELECT</code><code>語句檢視目前id=11的記錄</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person </code><code>WHERE</code> <code>id=11;</code>
<code>使用</code><code>DELETE</code><code>語句删除該記錄</code>
<code>mysql> </code><code>DELETE</code> <code>FROM</code> <code>person </code><code>WHERE</code> <code>id = 11;</code>
<code>語句執行完畢,檢視執行結果:</code>
<code>Empty </code><code>set</code> <code>(0.00 sec)</code>
在person表中,使用DELETE語句同時删除多條記錄,删除age字段在19-22的記錄
<code>執行删除操作前,使用</code><code>SELECT</code><code>語句檢視目前的資料</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person </code><code>WHERE</code> <code>age </code><code>BETWEEN</code> <code>19 </code><code>AND</code> <code>22;</code>
<code>DELETE</code><code>删除這些記錄</code>
<code>mysql> </code><code>DELETE</code> <code>FROM</code> <code>person </code><code>WHERE</code> <code>age </code><code>BETWEEN</code> <code>19 </code><code>AND</code> <code>22;</code>
<code>Query OK, 6 </code><code>rows</code> <code>affected (0.01 sec)</code>
<code>檢視執行結果</code>
删除person表中所有記錄,SQL語句如下
<code>執行删除操作前,使用</code><code>SELECT</code><code>語句檢視目前的資料:</code>
<code> </code><code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person;</code>
<code>+</code><code>----+---------+-----+-----------+</code>
<code>| id | </code><code>name</code> <code>| age | info |</code>
<code>| 4 | Laura | 25 | </code><code>NULL</code> <code>|</code>
<code>| 5 | Evans | 27 | secretary |</code>
<code>| 7 | Edison | 28 | singer |</code>
<code>| 12 | Beckham | 31 | police |</code>
<code>執行</code><code>DELETE</code><code>語句删除這4條記錄</code>
<code>mysql> </code><code>DELETE</code> <code>FROM</code> <code>person;</code>
<code>Query OK, 4 </code><code>rows</code> <code>affected (0.01 sec)</code>
<code>檢視執行結果:</code>
<code>mysql> </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>person;</code>
如果想删除表中的所有記錄,還可以使用TRUNCATE TABLE語句,TRUNCATE将直接删除原來的表并重新建立一個表,其文法結構為TRUNCATE TABLE table_name。TRUNCATE直接删除表而不是删除記錄,是以執行速度比DELETE快。
本文轉自 夢想成大牛 51CTO部落格,原文連結:http://blog.51cto.com/yinsuifeng/1953245,如需轉載請自行聯系原作者