### MySQL常考面试题知识点详解 #### 一、MySQL基础知识 **1.1 SQL语句类型** - **DDL (Data Definition Language)**:用于定义数据库结构,例如创建表、删除表等。 - **DML (Data Manipulation Language)**:用于操纵数据库中的数据,包括插入、更新和删除操作。 - **DQL (Data Query Language)**:主要用于查询数据,最常用的命令是SELECT。 - **DCL (Data Control Language)**:用于控制数据库用户权限。 **1.2 SQL关键字与固定搭配** - **SELECT**:用于从数据库中检索数据。 - **FROM**:指定数据来自哪个表。 - **WHERE**:对记录进行筛选,只显示满足条件的记录。 - **GROUP BY**:将数据分组。 - **HAVING**:对分组后的结果进一步筛选。 - **ORDER BY**:对结果集进行排序。 - **LIMIT**:限制返回的行数。 #### 二、练习题目解析 **2.1 学生表Student** - **表结构**: `CREATE TABLE Student (SId varchar(10), Sname varchar(10), Sage datetime, Ssex varchar(10));` - **字段说明**: - `SId`:学生编号。 - `Sname`:学生姓名。 - `Sage`:出生年月。 - `Ssex`:学生性别。 - **插入数据**: - 插入了13条数据,每条数据包含了学生的编号、姓名、出生年月和性别。 **2.2 科目表Course** - **表结构**: `CREATE TABLE Course (CId varchar(10), Cname nvarchar(10), TId varchar(10));` - **字段说明**: - `CId`:课程编号。 - `Cname`:课程名称。 - `TId`:教师编号。 - **插入数据**: - 插入了3条数据,分别代表了语文、数学和英语这三门课程以及对应的教师编号。 **2.3 教师表Teacher** - **表结构**: `CREATE TABLE Teacher (TId varchar(10), Tname varchar(10));` - **字段说明**: - `TId`:教师编号。 - `Tname`:教师姓名。 - **插入数据**: - 插入了3条数据,分别为“张三”、“李四”和“王五”。 **2.4 成绩表SC** - **表结构**: `CREATE TABLE SC (SId varchar(10), CId varchar(10), score decimal(18,1));` - **字段说明**: - `SId`:学生编号。 - `CId`:课程编号。 - `score`:分数。 - **插入数据**: - 插入了多条数据,表示不同学生在不同课程上的得分情况。 #### 三、经典面试题目示例 **3.1 查询所有学生的姓名和年龄** ```sql SELECT Sname, YEAR(CURDATE()) - YEAR(Sage) AS Age FROM Student; ``` **3.2 查询所有学生的姓名、所选课程的名称及分数** ```sql SELECT S.Sname, C.Cname, SC.score FROM Student S JOIN SC ON S.SId = SC.SId JOIN Course C ON SC.CId = C.CId; ``` **3.3 查询每个学生的总分** ```sql SELECT S.Sname, SUM(SC.score) AS TotalScore FROM Student S JOIN SC ON S.SId = SC.SId GROUP BY S.SId, S.Sname; ``` **3.4 查询分数最高的学生姓名和分数** ```sql SELECT S.Sname, MAX(SC.score) AS HighestScore FROM Student S JOIN SC ON S.SId = SC.SId GROUP BY S.SId, S.Sname ORDER BY HighestScore DESC LIMIT 1; ``` **3.5 查询没有选修“语文”课程的学生姓名** ```sql SELECT S.Sname FROM Student S LEFT JOIN SC ON S.SId = SC.SId LEFT JOIN Course C ON SC.CId = C.CId AND C.Cname = '语文' WHERE C.Cname IS NULL; ``` #### 四、解题思路 1. **理解题意**:首先需要明确题目要求,确定需要查询或操作的数据范围。 2. **分析表结构**:了解各个表之间的关系,尤其是外键关系。 3. **使用适当的关键字**:根据需求选择合适的SQL关键字和函数,如JOIN、GROUP BY等。 4. **优化查询**:考虑使用索引、减少子查询等手段提高查询效率。 5. **验证结果**:确保查询结果符合预期,必要时可以使用测试数据验证。 以上就是基于给定的练习题目的MySQL面试题知识点详解,希望对初学者有所帮助。通过这些练习,可以更好地掌握MySQL的基础知识和常用操作技巧。
- 粉丝: 5
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C#ASP.NET程序软件销售网站源码数据库 SQL2008源码类型 WebForm
- 浅谈食盐与人体健康.docx
- jsppspsppspspspspspsps
- Python毕业设计基于知识图谱和生成式AI的智能食谱推荐系统源码.zip
- 基于 SpringBoot 开发网上蛋糕售卖店管理系统:从需求剖析到上线运营全解析
- mysql补充知识(查缺补漏)
- 基于 SpringBoot + Vue 的个人驾校预约管理系统:驾考预约数字化转型的创新引擎
- sql数据库,辅助完成jsp页面效果
- 基于 WEB 与 SpringBoot 的牙科诊所管理系统:打造数字化口腔医疗服务新范式
- 使用 ansys Fluent 进行羽毛球仿真