数据的增删改

第七章:数据维护(增删改查)

💡 本章是MySQL实际操作的核心,涵盖DML(数据操纵语言)的所有内容:INSERT、DELETE、UPDATE、SELECT

7.1 概述

image-cb8e9a4a
操作 语句 说明
INSERT 向表中插入新数据
DELETE 从表中删除数据
UPDATE 修改表中已有数据
SELECT 查询表中数据

7.2 INSERT 插入数据

7.2.1 按列名插入(一一对应式)

INSERT INTO 选课成绩(学号, 课程编号)
VALUES ('U201701002', '2017-2018');

7.2.2 不指定列名插入

-- 教师表有七个属性
INSERT INTO 教师
VALUES ('T013', '徐强', '男', '1993-07-01', '助教', '02', '19920701');
-- 必须按顺序插入七个数据

⚠️ 注意:不指定列名时,VALUES 中的值必须与表结构中的列顺序完全一致!

7.2.3 一次插入多条记录

-- MySQL 支持一次插入多行(比逐条插入效率高!)
INSERT INTO 选课成绩(学号, 课程编号) VALUES
    ('U201701002', '2017-2018-2-B009'),
    ('U201701003', '2017-2018-2-B009'),
    ('U201701001', '2017-2018-2-B009');
数据库 多行插入方式
SQL Server 需要多条 INSERT 语句
MySQL 一条语句可插入多行,用逗号分隔,效率更高

7.2.4 对已存在的列补充数据

-- ✗ 错误用法:INSERT 无法单独更新某列
INSERT INTO 教师(籍贯) VALUES ('江西上饶');

-- ✓ 正确用法:使用 UPDATE 语句
UPDATE 教师 SET 籍贯 = '江西抚州' WHERE 姓名 = '徐强';

7.2.5 NULL 值的插入

-- 直接写 NULL(不加引号)
INSERT INTO 教师 VALUES ('T018', '小宇', '男', '助教', '02', NULL, '山东德州');

-- 验证真正的 NULL
SELECT * FROM 教师 WHERE 密码 IS NULL;     -- ✓ 正确:查找真正的空值
SELECT * FROM 教师 WHERE 密码 = 'NULL';    -- ✗ 这是查找字符串 'NULL'

💡 此空非彼空!

含义
NULL 真正的空值,表示"未知"或"不存在"
'NULL' 字符串,内容是四个字母 N-U-L-L
'' 空字符串,长度为0的字符串

判断空值只能用 IS NULL,不能用 = NULL

7.2.6 INSERT 与图形化工具的选择

场景 推荐方式
少量数据 MySQL Workbench 手动编辑
批量数据 INSERT INTO ... VALUES 多行插入
大量数据 LOAD DATA INFILE 导入文件

7.3 DELETE 删除数据

7.3.1 删除表中全部数据

DELETE FROM 表名;

-- 或者使用 TRUNCATE(更快,但不可回滚)
TRUNCATE TABLE 表名;

7.3.2 删除特定数据

-- 使用 WHERE 条件
DELETE FROM 学院 WHERE LENGTH(学院电话) < 8;

-- 删除指定记录
DELETE FROM 教师 WHERE 教师编号 = 'T013';

7.3.3 DELETE vs DROP vs TRUNCATE

操作 作用 保留结构 可加WHERE 可回滚
DELETE FROM 表名 删除数据
TRUNCATE TABLE 表名 清空数据
DROP TABLE 表名 删除整个表

💡 记忆技巧:记录用 DELETE,其他用 DROP

7.4 UPDATE 修改数据

7.4.1 修改指定数据

-- 通过编号修改
UPDATE 教师 SET 性别 = '女' WHERE 教师编号 = 'T013';

-- 通过姓名修改(只要能确定记录即可)
UPDATE 教师 SET 性别 = '男' WHERE 姓名 = '徐强';

7.4.2 对一组数据进行有规律的修改

-- 所有成绩打九折
UPDATE 选课成绩 SET 成绩 = 成绩 * 0.9;

-- 查看修改结果
SELECT * FROM 选课成绩;

7.4.3 挑选某些数据进行修改

-- 把长度小于等于8的学院电话前面加上027
-- MySQL 使用 CONCAT() 进行字符串连接
UPDATE 学院
SET 学院电话 = CONCAT('027-', 学院电话)
WHERE LENGTH(学院电话) <= 8;
数据库 字符串连接方式
SQL Server '027-' + 学院电话
MySQL CONCAT('027-', 学院电话)

⚠️ MySQL 的 + 只用于数值运算,字符串连接必须用 CONCAT()

7.4.4 修改多个字段

UPDATE 教师
SET 性别 = '男',
    职称 = '讲师',
    籍贯 = '江西南昌'
WHERE 姓名 = '徐强';

⬅️ 数据表的修改与删除 🏠 00-数据库 ➡️ 单表与条件查询