【计算机基础速成】第一课:MySQL 与 SQL 基础

5 小时前(已编辑)
2

【计算机基础速成】第一课:MySQL 与 SQL 基础

1. 这节课学什么

这一课的目标不是让你立刻成为数据库高手,而是先具备后端实习面试中最基础、最常见的一层能力:

  • 知道数据库、表、字段分别是什么
  • 知道 MySQL 和 SQL 分别是什么
  • 会写基础查询语句
  • 能回答几道最常见的数据库入门面试题

学完这一课,你至少要做到:

  • 能说清楚 MySQL 是什么
  • 能说清楚 SQL 是什么
  • 能写 select / where / order by / group by / join
  • 能回答 drop、delete、truncate 的区别
  • 能回答 wherehaving 的区别
  • 能回答 left joininner join 的区别

2. 先建立最小认知

2.1 什么是数据库

一句话理解

数据库就是一个专门用来“存数据、查数据、管理数据”的系统。

更适合面试的说法

数据库是按照一定数据模型组织、存储和管理数据的软件系统,它可以帮助我们高效地完成数据的增删改查,并保证数据的一致性和可靠性。

举个例子

假设你做一个校园二手交易平台:

  • 用户信息要存起来
  • 商品信息要存起来
  • 订单信息要存起来

这些信息不能随便放在文本文件里,因为不方便查询,也不方便多人同时访问,所以通常要放进数据库里。


2.2 什么是 MySQL

一句话理解

MySQL 是一种常用的关系型数据库管理系统。

面试答法

MySQL 是一个开源的关系型数据库管理系统,数据通常以表的形式存储,广泛应用于 Web 后端开发中,适合处理结构化数据。

关键词解释

  • 关系型:数据之间有明确结构和关系,通常按“表”的形式组织
  • 数据库管理系统:不仅能存数据,还能管理数据、控制权限、支持事务、支持并发访问

2.3 什么是 SQL

一句话理解

SQL 是和数据库打交道的语言。

面试答法

SQL 全称是 Structured Query Language,也就是结构化查询语言。我们可以通过 SQL 对关系型数据库中的数据进行定义、查询、修改和控制。

你可以这样记

  • MySQL 是“数据库软件”
  • SQL 是“操作数据库的语言”

它们的关系有点像:

  • Java 是一种编程语言
  • JVM 是运行 Java 程序的环境

这里只是类比理解,不需要纠结完全对应。


3. 数据库里的基本单位

3.1 数据库、表、字段、记录

可以把它们理解成下面这样:

概念通俗理解例子
数据库一个大仓库school_trade
仓库里的一类数据user 表、product
字段表中的某一列idnameprice
记录表中的某一行一个具体用户、一件具体商品

举例

user 表:

idnameagecity
1Alice20Beijing
2Bob21Shanghai

这里:

  • user 是表名
  • id、name、age、city 是字段
  • 每一行是一条记录

3.2 主键是什么

一句话理解

主键就是用来唯一标识一条记录的字段。

面试答法

主键是表中用于唯一标识每一行数据的字段或字段组合,它的值不能重复,也不能为 NULL

例子

在用户表里,id 通常就是主键,因为每个用户都应该有唯一编号。


4. SQL 的基本分类

面试里经常会问 SQL 有哪些分类,你记住最常见的四类就够了。

Mermaid Loading...
分类全称作用常见语句
DDLData Definition Language定义数据库对象createalterdrop
DMLData Manipulation Language操作数据insertupdatedelete
DQLData Query Language查询数据select
DCLData Control Language控制权限grantrevoke

面试答法

SQL 常见可以分为 DDL、DML、DQL、DCL。DDL 主要负责定义表结构,DML 负责增删改数据,DQL 主要是查询,DCL 主要和权限控制有关。


5. 最重要的 SQL 语句

下面这些是你必须会的。

Mermaid Loading...

为了方便演示,我们假设有两张表:

student

idnameageclass_idscore
1Tom1910190
2Lily2010295
3Jack1910188

class

idclass_name
101Class-A
102Class-B

5.1 select

作用

查询数据。

示例

select * from student;

表示查询 student 表中的所有字段。

select name, age from student;

表示只查询 nameage 两列。

面试提醒

  • * 虽然方便,但线上开发里通常不推荐乱用
  • 因为会增加不必要的数据传输,也不够清晰

5.2 where

作用

给查询加条件。

示例

select * from student where age = 19;

查询年龄等于 19 的学生。

select * from student where score > 90;

查询分数大于 90 的学生。

常用条件

  • =
  • >
  • <
  • >=
  • <=
  • !=
  • and
  • or
  • in
  • between ... and ...
  • like

示例

select * from student where name like 'T%';

查询名字以 T 开头的学生。


5.3 order by

作用

排序。

示例

select * from student order by score desc;

按分数从高到低排序。

select * from student order by age asc;

按年龄从低到高排序。

关键词

  • asc:升序,默认
  • desc:降序

5.4 聚合函数

聚合函数是面试和写 SQL 时非常常见的。

函数作用
count()统计数量
sum()求和
avg()求平均值
max()最大值
min()最小值

示例

select count(*) from student;

统计学生总数。

select avg(score) from student;

统计平均分。


5.5 group by

作用

分组统计。

示例

select class_id, count(*) 
from student
group by class_id;

统计每个班有多少学生。

select class_id, avg(score)
from student
group by class_id;

统计每个班的平均分。

你要知道

group by 常和聚合函数一起使用。


5.6 having

作用

对分组后的结果再做条件筛选。

示例

select class_id, avg(score) as avg_score
from student
group by class_id
having avg(score) > 90;

查询平均分大于 90 的班级。

wherehaving 的区别

项目wherehaving
过滤时机分组前分组后
能否配合聚合函数一般不直接用于聚合结果过滤可以

面试答法

where 是对原始数据进行过滤,having 是对分组之后的结果进行过滤,所以当我们要根据聚合结果筛选时,通常使用 having


5.7 join

作用

把多张表的数据按某种关系拼起来查。

这在实际后端开发里非常常见。

Mermaid Loading...

5.7.1 inner join

一句话理解

只保留两张表都能匹配上的数据。

示例

select s.name, c.class_name
from student s
inner join class c
on s.class_id = c.id;

表示查询学生姓名及其所在班级名称。


5.7.2 left join

一句话理解

以左表为主,左表数据全保留,右表匹配不上就补 NULL

示例

select s.name, c.class_name
from student s
left join class c
on s.class_id = c.id;

面试答法

inner join 只返回两张表中关联成功的数据,left join 会保留左表的全部记录,即使右表没有匹配项,也会返回结果,只不过右表字段为 NULL

Mermaid Loading...

6. deletetruncatedrop 的区别

这是经典面试题。

语句作用对象删除内容是否保留表结构
delete表中的数据删除部分或全部数据保留
truncate表中的全部数据快速清空整张表保留
drop整张表删除表和数据不保留

更容易记的理解

  • delete:删数据,表还在
  • truncate:清空整张表,表还在
  • drop:把表整个删掉

面试答法

delete 是按行删除数据,可以带 where 条件;truncate 是快速清空整张表,通常不能回滚到逐行删除那种细粒度;drop 是把表结构和表中的数据一起删除。

注意

不同数据库、不同事务配置下细节可能略有差异,但你现在先掌握面试里的主流答法即可。


7. 本课最常见面试题

7.1 MySQL 和 SQL 有什么区别

标准回答

MySQL 是一个关系型数据库管理系统,而 SQL 是操作关系型数据库的语言。简单来说,MySQL 是数据库软件,SQL 是用来操作这个软件中数据的语言。


7.2 数据库、表、字段、记录分别是什么

标准回答

数据库是存放数据的整体容器,表是数据库中某一类数据的组织形式,字段是表中的列,记录是表中的一行具体数据。


7.3 wherehaving 有什么区别

标准回答

where 是在分组前对原始数据进行过滤,having 是在 group by 之后对分组结果进行过滤。如果条件涉及聚合结果,一般要用 having


7.4 left joininner join 的区别

标准回答

inner join 只返回两张表中能够匹配上的记录;left join 会保留左表所有记录,右表匹配不到的部分用 NULL 补充。


7.5 deletetruncatedrop 的区别

标准回答

delete 删除表中的数据,通常可以带条件;truncate 是快速清空整张表的数据,但保留表结构;drop 是连表结构带数据一起删除。


8. 你在面试里该怎么说

如果面试官问得比较基础,你可以用下面这种表达模板:

MySQL 是一种关系型数据库,数据通常按表来组织。
我们平时通过 SQL 来对数据库进行增删改查。
比如最常用的查询语句是 select,条件筛选会用 where,
分组统计会用 group by,如果要对分组后的结果筛选会用 having。
多表查询时常见的是 join,比如 inner join 和 left join。

这个回答不深,但很稳,适合你现在这个阶段。


9. 本课最小记忆卡片

卡片 1

  • 数据库:存储和管理数据的系统
  • MySQL:关系型数据库管理系统
  • SQL:操作关系型数据库的语言

卡片 2

  • select:查
  • insert:增
  • update:改
  • delete:删

卡片 3

  • where:分组前过滤
  • having:分组后过滤

卡片 4

  • inner join:只保留匹配成功的数据
  • left join:保留左表全部数据

卡片 5

  • delete:删数据
  • truncate:清空表数据
  • drop:删表

10. 课后练习

10.1 口头复述题

你要尝试不看讲义,自己回答下面问题:

  1. 什么是 MySQL,什么是 SQL?
  2. 数据库、表、字段、记录分别是什么?
  3. wherehaving 的区别是什么?
  4. left joininner join 的区别是什么?
  5. deletetruncatedrop 的区别是什么?

10.2 SQL 小练习

假设有一张 employee 表:

idnameagedeptsalary
1Amy23dev8000
2Bob25test7000
3Carl24dev9000
4Diana26hr6500

请你尝试写出下面 SQL:

  1. 查询所有员工信息
  2. 查询年龄大于 24 的员工
  3. 查询开发部门的员工姓名和工资
  4. 按工资从高到低排序
  5. 统计每个部门的人数
  6. 查询平均工资大于 7500 的部门

10.3 今日最低完成标准

如果你时间很紧,今天至少完成下面三件事:

  1. 把本课最小记忆卡片背下来
  2. 能口头回答 5 道基础题
  3. 能手写 6 条基础 SQL

11. 下一课预告

第二课:SQL 进阶查询 + join 高频题专项训练

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...