SQL学习-增删改数据
本文介绍
SQL
语句的增删改数据,包括INSERT
、UPDATE
和DELETE
语句,用于向表中插入、更新和删除数据。供自己以后查漏补缺,也欢迎同道朋友交流学习。
引言
上一章介绍的 SELECT
语句用于从表中检索数据,本章将介绍 INSERT
、UPDATE
和 DELETE
语句,用于向表中插入、更新和删除数据。
检索数据有很多复杂情况,相对的增删改反而简单的多。
数据表准备
新建一个employees
表结构,包含id
, name
, department
, 和salary
列。
sql
-- 员工表
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL, -- 姓名
department VARCHAR(255) NOT NULL, -- 部门
salary FLOAT -- 收入
);
插入数据
插入数据
是向数据库表添加新记录的过程。
插入完整的行
插入完整的行,你需要为表中的每个列
提供值,包括那些不允许为 NULL
的列。
sql
-- 插入完整的行数据:不根据列名插入数据
-- 缺点是必须按照表结构的顺序插入数据,不够灵活。如果后面表结构修改了,就不能使用了。
INSERT INTO employees
VALUES
(1, '张三', '销售', 5000),
(2, '李四', '前端', 6000),
(3, '王五', '后端', 7000);
执行结果如下:
插入行的一部分
插入行的一部分
意味着你只为表中的部分列
提供值,通常是那些允许为 NULL 的列或者有默认值的列。
sql
-- 插入部分行数据:根据列名插入数据
-- 优点是可以只插入部分列的数据,不需要插入所有列的数据,也不需要按照表结构的顺序插入数据。
INSERT INTO employees (name, department, salary)
VALUES
('赵六', '产品', 8000),
('钱七', '测试', 9000);
执行结果如下:
插入某些查询的结果
通过SELECT
语句查询到的结果插入到表中。下面我用上一篇的 orders
表为例:
sql
-- 插入某些查询的结果
INSERT INTO employees (name, department, salary)
SELECT
o.customer_name,
'销售',
2000
FROM
orders o
WHERE
NOT EXISTS (SELECT 1 FROM employees e WHERE e.name = o.customer_name);
执行结果如下:
更新数据
更新部分行
更新部分行
意味着你只修改表中某些列的值。
sql
-- 给前端涨薪20%
UPDATE employees
SET salary = salary * 1.2
WHERE department = '前端';
执行结果如下:
更新所有行
更新所有行
意味着你修改表中每一行的某些列的值。
sql
-- 给所有员工涨薪10%
UPDATE employees
SET salary = salary * 1.1;
执行结果如下:
删除数据
删除部分行
删除部分行
意味着你根据某些条件删除表中的行。
sql
-- 开除工资大于5000的员工
DELETE FROM employees WHERE salary > 5000;
删除所有行
删除所有行
意味着你删除表中的所有数据,但表结构保持不变。
sql
-- 删除所有数据
DELETE FROM employees;
-- 清空所以数据
TRUNCATE TABLE employees;