技能二 数据库(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+ 树结构〔概念〕