当前位置: 首页 > article >正文

MySQL关卡任务书

基础任务

1. MySQL中char和varchar的区别,varchar(100)中的一百的含义,能存放多少汉字?

CHAR类型用于固定长度的字符串。当存储数据时,会自动填充到指定长度,即使实际内容没有达到该长度。
VARCHAR类型用于可变长度的字符串。它只使用实际需要的空间,外加1或2字节来记录长度(取决于最大长度)。
VARCHAR(100)中的100表示可以存储的最大字符数。如果是以UTF-8编码存储汉字,一个汉字通常占用3个字节,因此最多可以存储约33个汉字(具体数量还取决于汉字的实际编码)。

2. MySQL:左查询的特点,左右查询的区别

左连接(LEFT JOIN)返回所有左表中的记录,即使在右表中没有匹配。结果集中的右表字段将包含NULL。
右连接(RIGHT JOIN)与左连接相反,返回所有右表中的记录,即使在左表中没有匹配。

3. MySQL的约束有哪些?分别有什么作用?

主键(Primary Key): 确保每行数据的唯一性。
外键(Foreign Key): 建立表之间的链接,确保引用完整性。
唯一(Unique): 确保列中的所有值都是唯一的。
检查(Check): 限制列中允许的值范围。
非空(Not Null): 确保列不能有NULL值。
默认(Default): 当没有为列指定值时,给定默认值。

4. WHERE和HAVING的区别

WHERE子句用于从表中选取行,条件在数据聚合前应用于单个行。
HAVING子句用于过滤聚合后的结果集,通常与GROUP BY一起使用。

5. MySQL中分页如何实现?

使用LIMIT关键字,格式为:SELECT * FROM table LIMIT start, count; 其中start是从第几条开始(从0开始计数),count是要获取的记录数。

6. 数据库中, drop、delete与truncate的区别?

DROP删除整个表,包括其结构。
DELETE用于删除表中的行,可以根据条件删除。
TRUNCATE快速清空表的所有数据,但保留表结构。

7. 数据库索引是什么,有什么作用?

索引是一种特殊的数据结构,帮助数据库系统快速查找数据。它可以大大加快查询速度,但也可能增加写入操作的时间。

8. 如何判断一个SQL有没有做索引?

可以通过执行EXPLAIN命令查看SQL执行计划,分析是否有使用索引。

9. 数据库事务是什么,事务的四大特征有哪些?

事务是一组操作,这些操作作为一个整体被提交或回滚。四大特征为原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

10. 事务并发操作会产生什么问题,事务的隔离级别是什么,MySQL默认的隔离级别是?

并发问题包括脏读、不可重复读、幻读等。
隔离级别有读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)、序列化(Serializable)。
MySQL的默认隔离级别是可重复读(Repeatable Read)。

11. 请阐述数据库设计的范式是什么,有哪些范式,我们日常开发中要,这些范式是否都要遵循?

范式是为了减少数据冗余和提高数据一致性而设计的规则。
第一范式(1NF): 消除重复的组。
第二范式(2NF): 在满足第一范式的基础上,消除非主属性对键的部分函数依赖。
第三范式(3NF): 在满足第二范式的基础上,消除非主属性对键的传递函数依赖。
BC范式(BCNF): 更进一步地消除某些类型的函数依赖。
实际开发中不一定严格遵循所有范式,有时为了性能考虑会进行适当的反范式设计。

12. 表和表存在哪些关联关系,针对这些关系,我们如何设计表?

一对一、一对多、多对多。
一对一通常通过外键建立;一对多在“多”的一方设置外键;多对多需要创建一个关联表。

13. MySQL的存储过程是什么,有什么作用?

存储过程是一组预编译的SQL语句,作为单一的处理单元存储在数据库中。
它们可以提高应用性能,简化复杂的业务逻辑,并增强安全性。

14. 写SQL语句,查询班里170以上男生的人数大于5的班级及其人数
    SELECT class, COUNT(*) AS num_of_students
    FROM students
    WHERE gender = '男' AND height > 170
    GROUP BY class
    HAVING COUNT(*) > 5;
15. 场景题:游戏背包的里面的物品,设计数据库表格

可以设计两个表:players和 items,以及一个关联表player_items来记录玩家拥有的物品。
players表可以包含玩家ID、名称等信息。
items表可以包含物品ID、名称、描述等。
player_items表可以包含玩家ID、物品ID、数量等字段。

进阶任务

1. InnoDB的索引结构

InnoDB主要使用B树索引来组织数据。主键索引是聚簇索引,其他索引是非聚簇索引。

2. 索引的数据结构是什么?

最常见的索引数据结构是B树(B-Tree)和哈希表。B树适合范围查询,哈希表适合等值查询。

3. 什么时候索引失效,为什么失效?

当查询条件不是索引列时,或者使用了函数或表达式时,索引可能会失效。
此外,如果表的数据分布非常不均匀,也可能导致索引选择性差,从而不使用索引。

4. 什么是索引回表,如何避免?

索引回表是指先通过辅助索引找到主键值,再通过主键值回到聚簇索引中查找完整记录的过程。
避免方法包括使用覆盖索引,即索引包含了查询所需的所有列,从而无需回表。

5. 数据库优化方式?

优化SQL语句,如避免使用SELECT * ,合理使用索引。
对表进行分区,减少I/O操作。
适当调整数据库配置参数。
定期分析和优化表,如使用ANALYZE TABLE命令。
使用缓存技术减少数据库负载。


http://www.kler.cn/a/321274.html

相关文章:

  • 【MySQL 保姆级教学】事务的自动提交和手动提交(重点)--上(13)
  • react 受控组件和非受控组件
  • 会话信息处理: HttpSession、token序列化、收集登录设备信息、基于`spring-session-data-redis`实现session共享。
  • 大模型时代,呼叫中心的呼入机器人系统如何建设?
  • Java算法OJ(7)随机快速排序
  • 前端请求后端php接口跨域 cors问题
  • 单样本Cellchat(V2)细胞通讯分析学习和整理
  • 2.2 HuggingFists中的编程语言
  • [NewStarCTF 2023 公开赛道]Begin of PHP1
  • Qt | Linux+QFileSystemWatcher文件夹和文件监视(例如监视U盘挂载目录)
  • 计算机毕业设计之:云中e百货微信小程序设计与实现(源码+文档+定制)
  • 力扣9.25
  • 微信小程序开发第五课
  • LSI SAS 9361-8i和SAS3008 12 gb / s PCIe 3.0 RAID 阵列卡配置
  • Codeforces Round 592 (Div. 2) C题 The Football Season(Exgcd)
  • AI大模型横评-9月Update(O1,Grok2,Qwen,Step-2)
  • 计算机毕业设计 基于Python的医疗预约与诊断系统 Django+Vue 前后端分离 附源码 讲解 文档
  • 编译 FFmpeg 以支持 AV1 编解码器以及其他硬件加速选项(如 NVENC、VAAPI 等)
  • 谷歌深度学习研究揭示OpenAI O1模型优化策略:比规模更重要的计算效率
  • Java中的锁总结
  • Qt信号说明
  • 【Linux】项目自动化构建工具-make/Makefile 详解
  • Linux系统之部署web-resume静态个人简历网页
  • 时序,这很Transformer!颠覆传统,实现了性能的全面超越!
  • Vue3+Element-UI Plus登录静态页
  • vite ts vue中配置@路径别名报错标红