Dawn's Blogs

分享技术 记录成长

0%

MySQL基础 (12) DML- 增删改数据

插入数据

VALUES

  • 没有指明添加字段,一定按照声明字段的先后顺序添加
1
2
INSERT INTO emp1
VALUES (1, 'Tom', '2000.12.21', 3400);
  • 指明要添加的字段
1
2
INSERT INTO emp1 (id, hire_date, salary, `name`)
VALUES (2, '1999-09-09', 4000, 'Jerry');
  • 一次添加多个记录
1
2
3
4
INSERT INTO emp1 (id, hire_date, salary, `name`)
VALUES
(3, '1999-06-17', 8000, 'Dawn'),
(4, '1999-05-02', 7000, 'Rain');

将查询结果插入到表中

1
2
3
4
INSERT INTO emp1 (id, `name`, salary, hire_date)
SELECT employee_id, last_name, salary, hire_date
FROM employees
WHERE department_id IN (60, 70);

注意:确保要添加数据的字段长度不能低于查询的字段长度

更新数据

UPDATE table_name SET 修改字段 WHERE 过滤条件

1
2
3
UPDATE emp1
SET hire_date = CURDATE(), salary = 6000
WHERE id = 2;

删除数据

DELETE FROM table_name WHERE 过滤条件

1
2
DELETE FROM emp1
WHERE id = 1;

小结:

DML操作默认情况下,执行完自动COMMIT。

如果希望执行完以后不自动提交数据,则需要使用SET autocommit = FALSE

MySQL 8新特性:计算列

计算列,就是某一列的值是通过别的列计算来的

CREATE TABLEALTER TABLE中都支持添加计算列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE test1(
a INT,
b INT,
# c为计算列
c INT GENERATED ALWAYS AS (a + b) VIRTUAL
);

INSERT INTO test1 (a, b)
VALUES (10, 20);

SELECT * FROM test1; # c被自动计算为10+20=30
+------+------+------+
| a | b | c |
+------+------+------+
| 10 | 20 | 30 |
+------+------+------+