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

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_studentsFROM studentsWHERE gender = '男' AND height > 170GROUP BY classHAVING 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命令。
使用缓存技术减少数据库负载。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在 Flutter 开发中如何选择状态管理:Provider 和 GetX 比较
  • notepad++的json查看
  • 【通俗易懂】知识图谱增强 RAG 思路 和 实现方案
  • HTTP中的301、302实现重定向
  • css禁止图片保存,CSS中的图片保存方法
  • 9月22日正式签约,树莓集团落子海南!
  • Spring MVC 全局异常 总结
  • 力扣题解1014
  • C语言从头学62——学习头文件stdlib.h(一)
  • 加固与脱壳01 - 环境搭建
  • async await执行顺序
  • 11周年 | 初心不改,焕新前行,奔赴下一个10年!
  • Unity Debug时出现请选择unity实例
  • 【软考】计算机系统硬件基本组成
  • Axure大屏可视化模板:跨领域数据分析平台原型案例
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • ECS应用管理最佳实践
  • ES10 特性的完整指南
  • FastReport在线报表设计器工作原理
  • Git初体验
  • JS基础之数据类型、对象、原型、原型链、继承
  • js如何打印object对象
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Netty源码解析1-Buffer
  • orm2 中文文档 3.1 模型属性
  • python学习笔记 - ThreadLocal
  • Python学习之路16-使用API
  • Redis的resp协议
  • Spring核心 Bean的高级装配
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 仿天猫超市收藏抛物线动画工具库
  • 分布式事物理论与实践
  • 深度学习入门:10门免费线上课程推荐
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用agvtool更改app version/build
  • 数组的操作
  • 微信支付JSAPI,实测!终极方案
  • 小程序开发之路(一)
  • ​Linux·i2c驱动架构​
  • ​VRRP 虚拟路由冗余协议(华为)
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #if #elif #endif
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (20050108)又读《平凡的世界》
  • (javaweb)Http协议
  • (Qt) 默认QtWidget应用包含什么?
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (一)认识微服务