文章目錄
一、插入數據
1.代碼實現
- 不指定具體的字段名:
INSERT [INTO] tbl_name VALUES|VALUE(值...)
- 列出指定字段:
INSERT [INTO] tbl_name(字段名稱1...) VALUES|VALUE(值1....)
- 同時插入多條記錄:
INSERT [INTO] tb_name[(字段名稱..)] VLUES(值..)(值..)
- 通過SET形式插入記錄:
INSERT [INTO] tbl_name SET字段名稱=值...
- 將查詢結果插入到表中:
INSERT [INTO] tbl_name[(字段名稱...)] SELECT 字段名稱 FROM tbl_name [WHERE條件]
2.測試代碼
- 測試單次插入記錄
CREATE TABLE IF NOT EXISTS user(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE,
password CHAR(32) NOT NULL,
email VARCHAR(50) NOT NULL DEFAULT '[email protected]',
age TINYINT UNSIGNED DEFAULT 18
);
INSERT INTO user VALUES(1,'KING','KING','[email protected]',20);
INSERT user VALUE(2,'QUEEN','QUEEN','[email protected]',30);
INSERT INTO user VALUES(null,'KIN','KING','[email protected]',20);
INSERT user(username,password) VALUES('A','AAA');
INSERT user(password,username) VALUES('BBB','B');
INSERT user(username,id,password,email,age) VALUES('C',55,'CCC','[email protected]',DEFAULT);
結果:
mysql> SELECT*FROM user;
+----+----------+----------+------------------+------+
| id | username | password | email | age |
+----+----------+----------+------------------+------+
| 1 | KING | KING | [email protected] | 20 |
| 2 | QUEEN | QUEEN | [email protected] | 30 |
| 3 | KIN | KING | [email protected] | 20 |
| 4 | A | AAA | [email protected] | 18 |
| 5 | B | BBB | [email protected] | 18 |
| 55 | C | CCC | [email protected] | 18 |
+----+----------+----------+------------------+------+
6 rows in set (0.00 sec)
- 一次插入多條記錄
- INSERT user VALUES(6,'D','DDD','[email protected]',35),
(8,'E','EEE','[email protected]',9),
(18,'F','FFF','[email protected]',32);
- 通過INSERT SET形式插入記錄
INSERT INTO user SET id=98,username='test',password='this is a test',email='[email protected]',
age=48;
INSERT user SET username='maizi',password='maizixueyuan' ;
- 將查詢結果插入到表中
CREATE TABLE IF NOT EXISTS testUser(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE
);
INSERT testUser SELECT id,username FROM user;
字段數目不匹配
INSERT testUser SELECT * FROM user;
TRUNCATE testUser;
INSERT testUser(username) SELECT username FROM user;
二、更新數據
1.代碼實現
UPDATE tbl_name SET 字段名稱=值,… [WHERE條件][ORDER BY字段名稱][LIMIT限制條數]
2.測試更新
- 將用戶表中所有的用戶年齡更新爲5
UPDATE user SET age=5;
mysql> SELECT*FROM user;
+----+----------+----------+------------------+------+
| id | username | password | email | age |
+----+----------+----------+------------------+------+
| 1 | KING | KING | [email protected] | 5 |
| 2 | QUEEN | QUEEN | [email protected] | 5 |
| 3 | KIN | KING | [email protected] | 5 |
| 4 | A | AAA | [email protected] | 5 |
| 5 | B | BBB | [email protected] | 5 |
| 55 | C | CCC | [email protected] | 5 |
+----+----------+----------+------------------+------+
6 rows in set (0.00 sec)
UPDATE user SET age=20,email='[email protected]';
- 加入WHERE條件進行更新
UPDATE user SET password='king123',email='[email protected]',age=99 WHERE id=1;
UPDATE user SET age=age-5 WHERE id>=3;
UPDATE user SET age=DEFAULT WHERE username='A';
三、刪除數據
1.代碼實現
DELETE FROM tbl_ name [WHERE條件][ORDER BY字段名稱:][LIMIT限制條數]
#徹底清空數據表
TRUNCATE [TABLE] tbl name
2.測試刪除
- 刪除testUser表中的記錄
DELETE FROM testUser ;
- 刪除user表中id爲1的用戶
DELETE FROM user WHERE id=1;
- 徹底清空user表
TRUNCATE TABLE user;
3.DELETE 與 TURNCATE的區別
-
truncate語句
刪除表中的數據後,向表中添加記錄時,自動增加字段的默認初始值重新從1開始,而使用delete語句,刪除表中所有記錄後,向表中添加記錄時,自動增加字段的值,爲刪除時該字段的最大值加1,也就是在原來的基礎上遞增。 -
delete語句
每刪除一條記錄,都會在日誌中記錄,而使用truncate語句,不會在日誌中記錄刪除的內容,因此,truncate語句的執行效率比delete語句高。