0
0
0

第4-5章重点梳理:SQL语言全题型攻略

2026-10-19
文章摘要
|

第 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 题考试提醒

  1. 大小写不敏感,但关键字建议全大写,卷面更清晰;
  2. 题目给定的表名、列名必须照抄,写错列名一分不得;
  3. 分组题先在心里分清"查的是学生还是课程",别把 GROUP BY 的列写错;
  4. 多表查询忘写连接条件是第一大失分原因,写完 JOIN 检查 ON。

下一篇进入第 6 章规范化理论。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论

欢迎来到我的博客!