MySQL(05)—数据处理之增删改
数据处理之增删改
1. 数据操纵语言
- DML(Data Manipulation Language — 数据操纵语言)可以在下列条件下执行
- 向表中插入数据
- 修改现存数据
- 删除现存数据
- 事务是由完成若干项工作的DML语言组成的
2. 插入数据
INSERT语句语法
一次向表中插入一条数据
1 | INSERT INTO table [(column [, column...])] |
为每一列添加一个新值,按列的默认顺序列出各个列的值。在INSERT子句中随意列出列名和他们的值,字符和日期型数据应包含在单引号中
1
2
3
4
5INSERT INTO
employees(employee_id,last_name,email,hiredate,job_id)
VALUES (300,'Tom','tom@126.com',str_to_date('2021-3-21','%Y-%m-%d'),'SA_REP');
[2021-08-19 17:56:28] 1 row affected in 14 ms向表中插入空值
隐式方式:在列名表中省略该值
1
2
3
4insert into departments (department_id,department_name)
values(280,'Sel');
[2021-08-19 18:03:01] 1 row affected in 11 ms显示方式:在VALUES子句集中指定空值
1
2
3
4insert into departments
values(290,'Fri',null,null);
[2021-08-19 18:04:56] 1 row affected in 18 ms插入指定的值
NOW()函数:记录当前系统的日期和时间
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18insert into employees(employee_id,
first_name,
last_name,
email,
phone_number,
hiredate,
job_id,
salary,
commission_pct,
manager_id,
department_id)
values(207,
'Louis', 'Popp',
'LPOPP', '515.124.4567',
NOW(), 'AC_ACCOUNT', 6900,
NULL, 205, 100);
[2021-08-19 20:25:18] 1 row affected in 18 ms从其他表中拷贝数据
在INSERT语句中加入子查询
1
2
3
4
5myemployees> insert into employees_test
select *
from employees
where department_id = 110
[2021-08-20 10:04:48] 2 rows affected in 12 ms不必书写 VALUES 子句,子查询中的值列表应与 INSERT 子句中的列名对应
3. 更新数据
UPDATE语句语法
1 | UPDATE table |
可以一次更新多条数据。如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT = FALSE;
使用WHERE子句指定需要更新的数据
1
2
3
4
5update employees
set department_id = 70
where employee_id = 113;
[2021-08-20 10:10:44] 1 row affected in 0 ms如果省略 WHERE 子句,则表中的所有数据都将被更新
4. 删除数据
DELETE语句语法
1 | DELETE FROM table |
使用WHERE子句删除指定的记录
1
2
3
4DELETE FROM departments
WHERE department_name = 'Finance';
[2021-08-20 10:15:32] completed in 5 ms如果省略 WHERE 子句,则表中的全部数据将被删除