把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

浅谈SQL应用考试,临时抱佛脚篇

说到SQL,相信大家第一反应就是,好难,看不懂,有现成的命令可以搜,不会用,等等等等各种自我劝退。
其实,在这里我告诉你,莫慌,我也没那么精通。只是恰好相比你们有一些自己的理解。

简单说说sql逻辑,正如下面的流程图,sql是有逻辑的,理解了逻辑,记住特定名词,稍稍练手,很快就理解,相信我,sql不难。

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

上面的单词都认识吧?
不认识?那请移步隔壁B站学习小学英语,这篇教程不适合你。
如果指望抽象的概念我直接给你模板,那你现在就可以换文章了,因为你看了也理解不了,换个题目你就不会了。

现在请记住上面的逻辑,我一点一点讲给你听。

SELECT   列
FROM     表
WHERE    条件
GROUP BY 分组
HAVING   过滤
ORDER BY 排序

部分翻译过来就是下面这样

SELECT 查询
FROM   从哪里
WHERE  筛选条件

剩下的请自行理解。
先筛选数据,再分组聚合,最后排序输出,这是数据库的底层操作逻辑。

好现在基本名词你应该已经记下来了,接下来的概念会很抽象,不过没关系,带上你的脑袋瓜,把记住的名词带入案例,你很快就明白是什么意思了。

  1. 查数据(SELECT)
-- 基础查询
SELECT 姓名, 成绩 FROM 学生表 WHERE 年龄 > 18;
(查询姓名,成绩,从学生表里筛选年龄>18)直译
-- 排序
SELECT * FROM 成绩表 ORDER BY 分数 DESC;
(从成绩表查询排序后降序排列的分数)转译
-- 分组统计
SELECT 课程, AVG(成绩) FROM 成绩表 GROUP BY 课程;
(查询课程,成绩从成绩表分组的课程里)
-- 多表联查
SELECT s.姓名, c.课程名 
FROM 学生表 s 
JOIN 选课表 c ON s.学号 = c.学号;

口诀:SELECT列 FROM表 WHERE条件 GROUP BY分组 HAVING过滤 ORDER BY排序
2. 增删改数据

-- 插入单条
INSERT INTO 学生表 (学号, 姓名) VALUES (1, '张三');
-- 更新数据
UPDATE 成绩表 SET 分数=90 WHERE 学号=1;
-- 删除数据
DELETE FROM 学生表 WHERE 年龄 < 18;

注意:UPDATE和DELETE必须加WHERE,否则全表操作!
3. 事务控制

BEGIN;  -- 开始事务
UPDATE 账户 SET 余额=余额-100 WHERE 姓名='A';
UPDATE 账户 SET 余额=余额+100 WHERE 姓名='B';
COMMIT;  -- 提交事务(成功)
-- 出错时用 ROLLBACK; 回滚

考点:事务的ACID特性(原子性、一致性、隔离性、持久性)

三、考试高频题型
题型1:多表联查
例题:查学生姓名及其选修的课程名

SELECT s.姓名, c.课程名
FROM 学生表 s
INNER JOIN 选课表 c ON s.学号 = c.学号;

关键:JOIN类型(INNER/LEFT/RIGHT)

题型2:分组统计
例题:统计每门课的平均分,只显示平均分>80的课程

SELECT 课程, AVG(成绩) AS 平均分 
FROM 成绩表 
GROUP BY 课程 
HAVING AVG(成绩) > 80;

注意:WHERE过滤行,HAVING过滤分组后的结果

题型3:子查询
例题:查成绩高于平均分的学生

SELECT 姓名, 成绩 
FROM 学生表 
WHERE 成绩 > (SELECT AVG(成绩) FROM 学生表);

考点:子查询在WHERE或FROM中的使用

四、必背函数与语法

聚合函数

COUNT():计数(COUNT(*)统计所有行)
SUM():求和、AVG():平均值、MAX()/MIN():极值

日期函数

YEAR(日期):提取年份
DATEDIFF(结束日期, 开始日期):计算天数差

字符串函数

CONCAT():拼接字符串
SUBSTRING():截取子串

五、考试避坑指南

主键约束:唯一且非空,常用于标识记录(如学号)。
外键约束:确保关联数据存在(如班级ID必须存在于班级表)。
索引优化:在WHERE或JOIN条件列建索引,加速查询
事务回滚:批量操作时用BEGIN...COMMIT,出错时ROLLBACK保数据安全。

六、快速练习建议

基础题:用SELECT查年龄>20的学生姓名。
联表题:查学生及其所在班级名称(需两表关联)。
统计题:计算每门课的最高分、最低分、平均分。
事务题:模拟转账操作(A扣100,B加100)。

如果上述你还是无法理解并练习后脑子一片空白的话,有一个方法,相信你的记性不错。

Mysql 基础语法
库 表 列 字段
创建数据库
Creat database company
创建表

create table persons(
id int primary key,
name varchar(10),
age int,
height float,
hobby char(10),
address varchar(12)
)default charset=utf8;

插入一条数据
insert into persons values(1,'哈喽',18,181.2,'跑步,瑜伽','上海')
插入多行数据
insert into persons values(1,'哈喽',18,181.2,'跑步,瑜伽','上海'),(2,'张三',25,180.2,'篮球','南京')
查询表里所有内容
Select * from persons;
修改员工信息
update persons set address='合肥',hobby='象棋' where id =1;
删除个人信息
delete from persons where id=3 and address='南京';

其他的只需要类比替换关键词即可。

此方法只适用于紧急速记应付临时考试,切勿面试时照本宣科,完全来不及甚至答非所问被面试淘汰。

posted @ 2025-09-28 15:07  Abu's-blog  阅读(30)  评论(0)    收藏  举报