數據庫Ⅳ——數據的操作

一、插入數據

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語句高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章