0
0
0
第4-5章重点梳理:SQL语言全题型攻略
文章摘要
|
第 4–5 章重点梳理:SQL 语言全题型攻略
SQL 是《数据库及其应用》分值最重的板块,综合应用题必考,选择填空也常年出现。这一篇把考试会考到的 SQL 全题型列成清单,配标准写法,照着练即可。
一、数据定义(DDL)——建库建表
建表题通常要求带完整性约束,四个得分点必须写全:
CREATE TABLE Student (
Sno CHAR(9) PRIMARY KEY, -- 实体完整性:主码
Sname VARCHAR(20) NOT NULL, -- 非空
Ssex CHAR(2) DEFAULT '男',
Sage SMALLINT CHECK (Sage BETWEEN 15 AND 45), -- 用户定义完整性
Sdept VARCHAR(20)
);
CREATE TABLE SC (
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno, Cno), -- 主码为属性组
FOREIGN KEY (Sno) REFERENCES Student(Sno), -- 参照完整性
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
- 实体完整性:主码唯一且非空(PRIMARY KEY);
- 参照完整性:外码取值必须参照存在或为空(FOREIGN KEY ... REFERENCES);
- 用户定义完整性:NOT NULL、UNIQUE、CHECK、DEFAULT。
- 删表用
DROP TABLE;修改表结构用ALTER TABLE ... ADD/DROP/ALTER COLUMN。
二、数据查询(DQL)——SELECT 的固定考法
标准模板:SELECT 列 FROM 表 WHERE 行条件 GROUP BY 分组 HAVING 组条件 ORDER BY 排序。
考法 1:单表条件查询(送分题)
SELECT Sname, Sage FROM Student WHERE Sdept = '计算机' AND Sage > 20;
模糊匹配用 LIKE:WHERE Sname LIKE '张%'(% 任意多个字符,_ 单个字符)。
考法 2:排序与去重
SELECT DISTINCT Grade FROM SC ORDER BY Grade DESC;
考法 3:分组统计(高频)
常用聚合函数:COUNT、SUM、AVG、MAX、MIN。
SELECT Sno, COUNT(Cno) AS 选课门数, AVG(Grade) AS 平均分
FROM SC
GROUP BY Sno
HAVING COUNT(Cno) >= 3;
注意 WHERE 与 HAVING 的区别(选择题必考):WHERE 在分组前筛行,不能使用聚合函数;HAVING 在分组后筛组,可以使用聚合函数。
考法 4:多表连接
SELECT Student.Sno, Sname, Cno, Grade
FROM Student JOIN SC ON Student.Sno = SC.Sno
WHERE SC.Cno = 'C01';
两表连接按外码等值连接;三表以上(如 Student-SC-Course)逐层 JOIN,从真题里挑两道三表题练熟即可。
考法 5:嵌套查询(拉分点)
-- 查询选修了"C01"课程的学生姓名(IN 形式)
SELECT Sname FROM Student
WHERE Sno IN (SELECT Sno FROM SC WHERE Cno = 'C01');
-- 比较形式(子查询结果单值)
SELECT Sname FROM Student
WHERE Sage < (SELECT AVG(Sage) FROM Student);
EXISTS(存在量词)形式考得少,理解"内层有结果则外层保留"即可。
三、数据更新(DML)
INSERT INTO Student(Sno, Sname, Sdept) VALUES('2026001', '张三', '计算机');
UPDATE SC SET Grade = Grade + 5 WHERE Cno = 'C01';
DELETE FROM SC WHERE Grade < 60 AND Cno = 'C02';
四、视图与索引(第 5 章,选择/简答为主)
CREATE VIEW v_cs AS SELECT Sno, Sname FROM Student WHERE Sdept='计算机';
DROP VIEW v_cs;
CREATE INDEX idx_sname ON Student(Sname);
视图简答高频点:视图是虚表(不实际存储数据,数据仍在基本表中);作用包括简化查询、提供逻辑独立性、对用户隐藏数据(安全性)。索引作用:加快查询速度,代价是占用存储并降低更新效率。
五、SQL 题考试提醒
- 大小写不敏感,但关键字建议全大写,卷面更清晰;
- 题目给定的表名、列名必须照抄,写错列名一分不得;
- 分组题先在心里分清"查的是学生还是课程",别把 GROUP BY 的列写错;
- 多表查询忘写连接条件是第一大失分原因,写完 JOIN 检查 ON。
下一篇进入第 6 章规范化理论。
