技能二 数据库(MySQL)(20%,≈16 分)
🟡 进阶 | 专业综合操作技能卷(80 分)· 判断/单选/填空/综合
S2.1 E-R 图设计 ★★★
- E-R 图三要素:矩形=实体集(名词:学生、课程);椭圆=属性;菱形=联系(动词:选课)
- 联系类型与绘制:1:1(一个人—一个身份证)、1:n(班级—学生)、m:n(学生—课程,联系自身可带属性如"成绩");m:n 联系需单独建表(关系模式落地)
- 设计步骤:需求→识别实体→确定属性→确定联系类型→画图→转关系模式
S2.2 数据类型与建库建表 ★★★
常用数据类型:INT / BIGINT 整数;DECIMAL(M,D) 定点小数(金额);CHAR(n) 定长 / VARCHAR(n) 变长字符串★(CHAR 固定 n 字节补空格、VARCHAR 按实际存+长度信息——对比高频);DATE(yyyy-mm-dd)/ DATETIME(日期时间)/ TIMESTAMP;TEXT 大文本;BLOB 二进制
DDL 语句(关键字填空高频):
CREATE DATABASE school; -- 建库
USE school; -- 选择库
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键、自动递增
name VARCHAR(20) NOT NULL, -- 非空
sex CHAR(2) DEFAULT '男', -- 默认值
class_id INT,
UNIQUE(name), -- 唯一
FOREIGN KEY(class_id) REFERENCES class(id) -- 外键
);
ALTER TABLE student ADD email VARCHAR(50); -- 加列(2024 真题:ADD)
ALTER TABLE student MODIFY name VARCHAR(30); -- 改类型
ALTER TABLE student CHANGE oldname newname INT; -- 改列名+类型
ALTER TABLE student DROP COLUMN email; -- 删列
DROP TABLE student; -- 删表
DROP DATABASE school; -- 删库
- 约束★★★:PRIMARY KEY 主键(唯一+非空,一张表一个)、FOREIGN KEY 外键(参照完整性,指向另一表主键)、NOT NULL、UNIQUE、DEFAULT、CHECK
S2.3 DML 数据操纵 ★★★
INSERT INTO student(id,name) VALUES(1,'张三'); -- 插入(可多行 VALUES(...),(...))
UPDATE student SET name='李四' WHERE id=1; -- 改(WHERE 缺失=全表改 ⚠)
DELETE FROM student WHERE id=1; -- 删(无 WHERE=全表删)
-- TRUNCATE TABLE student; -- 清空全表(快、不可回滚、不触发 WHERE;DELETE 可带条件、可回滚)★对比
S2.4 DQL 查询 ★★★(重点中的重点)
SELECT [DISTINCT] name, sex [AS 别名]
FROM student
WHERE age BETWEEN 18 AND 20
OR name LIKE '张%' -- %任意多字符 _单个字符
AND class_id IN (1,2)
AND email IS NULL -- 空判断(不能 = NULL ⚠)
GROUP BY class_id
HAVING COUNT(*) >= 2 -- 分组后条件(WHERE 里不能写聚合函数 ⚠)
ORDER BY age DESC, name ASC -- DESC 降 / ASC 升
LIMIT 3; -- 取前 N 条
- 书写顺序与执行顺序:书写 FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT;执行 WHERE → GROUP → HAVING → SELECT → ORDER
- 聚合函数★★★:COUNT(*) 计数 / SUM 求和 / AVG 平均 / MAX / MIN(忽略 NULL;
COUNT(列)不计 NULL)——"统计数量用 COUNT 不用 SUM"(2024 真题) - 多表连接★★:内连接 INNER JOIN ... ON(取交集匹配行)、左连接 LEFT JOIN(左表全保留、右表无匹配补 NULL)、右连接 RIGHT JOIN;自连接;三表连接
A JOIN B ON ... JOIN C ON ... - 子查询(嵌套):
WHERE id IN (SELECT ...)、WHERE score > (SELECT AVG(score) FROM sc);EXISTS
S2.5 视图和索引 ★★
CREATE VIEW v_stu AS SELECT s.name, c.title FROM student s JOIN class c ON ...; -- 建视图
CREATE INDEX idx_name ON student(name); -- 建索引
- 视图:虚拟表(不存数据、存查询定义);作用:简化查询、安全(限制可见列)、逻辑独立性;可像表一样 SELECT(部分可更新)
- 索引:像书的目录,加快查询速度;代价:占存储空间、降低增删改速度(每次写都要维护索引);主键自动建索引;B+ 树结构〔概念〕