1. 什么是聚合函数,常见的聚合函数有哪些?
什么是聚合函数?
聚合函数(Aggregate Function) 是 SQL 中用于对一组值进行计算并返回一个单一值的函数。它们通常与 GROUP BY 子句一起使用,用来对数据进行分类汇总。
聚合函数最常见的用途包括:
求和
平均值
统计数量
最大值/最小值
统计不同值的数量等
常见的聚合函数(以 MySQL 为例)
2. 解释查询语句中的关键字分别有什么作用,FROM、JOIN、WHERE、GROUP BY、ORDER BY、HAVING、SELECT、DISTINCT、LIMIT。
3. 什么是窗口函数,有哪些使用场景
窗口函数(Window Function) 是一种在 SQL 中用于对一组相关行进行计算的函数,与传统的聚合函数不同的是:
它不会将多行数据合并为一行,而是为每一行返回一个结果。
这种函数非常适合在不丢失原始数据的情况下进行分组统计、排名、累计计算等操作。
4. 什么是内连接、左连接、右连接、全连接,MySQL不支持哪个
5. 什么是子查询/嵌套查询
子查询 vs 连接查询(JOIN)
6. mysql中的一对一,多对一,多对多的关系如何设计
7. 学生与学籍号,学生与班级,学生与老师,应该如何设计其表关系(一对一、多对一、多对多),给出建表语句,并对每一行内容进行说明。
一个学生只能有一个学籍号,并且是独有的。
一个班级能有多个学生。
一个老师能有多个学生,一个学生能有多个老师。
8. 比如在学生与学籍号中,外键应该放在哪个表中,为什么
学籍号,因为一个学生只能有一个学籍号。
9. mysql支持哪些外键级联操作,分别有什么作用
10. 什么是中间表/关联表,有什么使用场景
什么是中间表 / 关联表?
中间表(也叫关联表) 是用于实现 多对多(Many-to-Many)关系 的一种数据库结构。
它本身不存储实际业务数据,仅用于记录两个或多个表之间的 关联关系。
中间表的结构特点
通常由两个或多个外键组成;
每个外键分别指向一张主表的主键;
可以设置联合主键(Composite Primary Key)或使用自增主键 + 唯一索引;
不包含额外的业务字段(也可以有,如“创建时间”、“状态”等);
11. 如何设计一个表,比如设计一个学生选课系统。那么最少需要创建几个表,每个表中最少几个字段,分别用于记录什么内容。给出完整的建表命令。
设计说明:
学生表(students):存储学生的基本信息,其中
student_id是主键,确保每个学生都有唯一的标识。课程表(courses):存储课程的基本信息,其中
course_id是主键,确保每门课程都有唯一的标识。选课记录表(enrollments):存储学生选课的具体信息,其中
enrollment_id是主键,student_id和course_id是外键,分别关联到学生表和课程表,以确保数据完整性。
1. 学生表 students
student_id:学生的唯一标识(主键)。name:学生的姓名。email:学生的邮箱。
CREATE TABLE students (
student_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE
);2. 课程表 courses
course_id:课程的唯一标识(主键)。course_name:课程的名称。instructor:授课教师的姓名。
CREATE TABLE courses (
course_id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(100) NOT NULL,
instructor VARCHAR(100)
);3. 选课记录表 enrollments
enrollment_id:选课记录的唯一标识(主键)。student_id:关联学生表的外键。course_id:关联课程表的外键。enrollment_date:选课的时间。
CREATE TABLE enrollments (
enrollment_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
enrollment_date DATE,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);