MySQL面试题 2024 金九银十 最新 C# 高级 资深 DB 八股文

最新mysql八股文 chatgpt 都能回答的问题,就没必要螺丝是往那边扭了。

目录

一、数据库知识(通用)篇

1. 说说 drop truncate delete 区别
2. 说说主键、外键、超键、候选键
3.varchar char 的使用场景 ?
4. 什么叫视图?游标是什么?
5. 说说 like % - 的区别
6. 为什么用自增列作为主键?
7. 说说非关系型数据库和关系型数据库区别,优势比较 ?
8. 说说存储过程的优缺点?
9. 什么是最左前缀原则?
10. 什么是表空间( Tablespace )?
11. 什么是索引优化器( Index Optimizer )?
12. 什么是范式( Normalization )?
13. 什么是反范式( Denormalization )?
14. 什么是数据库索引的优点?
15. 什么是 ACID 属性?
16. 视图的优缺点有哪些?
17. 触发器的作用是什么?
18. 什么是存储过程?用什么来调用?
19. 说说存储过程与函数的区别
20. 什么是临时表,临时表什么时候删除 ?
21. 什么是数据库范式,根据某个场景设计数据表 ?
22. 什么是 内连接、外连接、交叉连接、笛卡尔积等 ?
23.SQL 语言分类
24. 说说 count(*) count(1) count(column) 的区别
25. 什么是索引?
26. 索引的作用?它的优点缺点是什么?
27. 说说聚集索引和非聚集索引区别 ?
28. 索引的优缺点有哪些?
29. 什么样的字段适合建索引?
30. 说说 MySQL B+Tree 索引和 Hash 索引的区别 ?
31. 说说 B 树和 B+ 树的区别
32. 为什么说 B+ B 树更适合实际应用中操作系统的文件索引和数据库索引?

二、数据库MySql基础篇

1. 如何进行 MySQL 数据库的性能监控和调优?
2. 什么是 MySQL ?它的主要特点是什么?
3. 函数的分类?经常使用的函数有哪些?
4. 分组查询需要注意条件?
5. 如何优化 MySQL 的查询性能?
6. 如何处理 MySQL 中的慢查询?
7. MySQL 中,如何进行用户管理和权限控制?
8.limit 使用方法?
9. 如何增加删除修改表结构
10. 如何开启 MySQL 服务 , 关闭 My 服务
11. 检测端口是否运行
12.mysql 常见数据类型?
13. 如何为 MySQL 设置密码或者修改密码。
14. 如何登陆 MySQL 数据库。
15. 查看当前数据库的字符集
16. 如何查看当前数据库版本
17. 如何 查看当前登录的用户。
18. 查看 T1 数据库中有哪儿些表
19. 创建 GBK 字符集的数据库 oldboy ,并查看已建库完整语句
20. 创建用户 oldboy ,使之可以管理数据库 oldboy
21. 查看创建的用户 oldboy 拥有哪些权限 22. 查看当前数据库里有哪些用户
23. 如何进入 oldboy 数据库
24. 请写一个脚本: 创建一个 innodb GBK test ,字段 id int(4) name varchar(16)
25. 查看建表结构及表结构的 SQL 语句
26. 请使用脚本查询一条数据:插入一条数据 “1,oldboy”
27. 再批量插入 2 行数据 “2, 老男孩 “3,oldboyedu”
28. 查询名字为 oldboy 的记录
29. 把数据 id 等于 1 的名字 oldboy 更改为 oldgirl
30. 在字段 name 前插入 age 字段,类型 tinyint(2)
31. 不退出数据库 , 完成备份 oldboy 数据库
32. 删除 test 表中的所有数据,并查看

三、数据库MySql

1.Mysql 数据库表类型有哪些?
2. 说一下 MySQL 的行锁和表锁?
3.MySQL 怎么恢复半个月前的数据?
4. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此
id 是几?
5.MySQL 的内连接、左连接、右连接有什么区别?
6.MySQL 问题排查都有哪些手段?
7. 如何做 MySQL 的性能优化?
8.MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年 , 怎么优化?
9.MySQL 的默认事务隔离级别是 ?
10.MySQL 由哪些部分组成 , 分别用来做什么?
11. 怎么验证 MySQL 的索引是否满足需求?
12. 请你介绍一下 mysql MVCC 机制
13. 常用的 Mysql 复制架构有哪些?
14. 请你介绍一下 mysql 的主从复制?
15.Mysql 的存储引擎 ,myisam innodb 的区别?
16. 请问 MySQL 的端口号是多少,如何修改这个端口号
17.Mysql 如何为表字段添加索引?
18. 说说自己对于 MySQL 常见的两种存储引擎: MyISAM InnoDB 的理解?

答案

一、数据库知识(通用)篇

1.说说droptruncate delete区别

最基本:
1) drop 直接删掉表。
2) truncate 删除表中数据,再插入时自增长 id 又从 1 开始。
3) delete 删除表中数据,可以加 where 字句。
1 DELETE 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在
日志中保存以便进行进行回滚操作。 TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的
删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发
器。执行速度快。
2 ) 表和索引所占空间。当表被 TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,而
DELETE 操作不会减少表或索引所占用的空间。 drop 语句将表所占用的空间全释放掉。
3 ) 一般而言, drop > truncate > delete
4 ) 应用范围。 TRUNCATE 只能对 TABLE DELETE 可以是 table view
5 TRUNCATE DELETE 只删除数据,而 DROP 则删除整个表(结构和数据)。
6 truncate 与不带 where delete :只删除数据,而不删除表的结构(定义) drop 语句将删除表的
结构被依赖的约束( constrain), 触发器( trigger) 索引( index); 依赖于该表的存储过程 / 函数将被保留, 但其状态会变为: invalid
7 delete 语句为 DML data maintain Language), 这个操作会被放到 rollback segment , 事务提交
后才生效。如果有相应的 tigger, 执行的时候将被触发。
8 truncate drop DLL data define language), 操作立即生效,原数据不放到 rollback segment
中,不能回滚。
9 ) 在没有备份情况下,谨慎使用 drop truncate 。要删除部分数据行采用 delete 且注意结合 where
来约束影响范围。回滚段要足够大。要删除表用 drop; 若想保留表而将表中数据删除,如果与事务无关,
truncate 即可实现。如果和事务有关,或老师想触发 trigger, 还是用 delete
10 Truncate table 表名 速度快 , 而且效率高 , 因为 :?truncate table 在功能上与不带 WHERE 子句的
DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE DELETE 速度快,且使用的系统
和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
11 TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所
用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE 。如果要删除表定义及其数
据,请使用 DROP TABLE 语句。
12 ) 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE ,而应使用不带 WHERE 子句
DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

2.说说主键、外键、超键、候选键

超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属
性组合在一起也可以作为一个超键。超键包含候选键和主键。
候选键:是最小超键,即没有冗余元素的超键。
主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个
主键,且主键的取值不能缺失,即不能为空值( Null )。
外键:在一个表中存在的另一个表的主键称此表的外键。

3.varcharchar的使用场景?

1.char 的长度是不可变的,而 varchar 的长度是可变的。
定义一个 char[10] varchar[10]
如果存进去的是 ‘csdn’, 那么 char 所占的长度依然为 10 ,除了字符 ‘csdn’ 外,后面跟六个空格, varchar
立马把长度变为 4 了,取数据的时候, char 类型的要用 trim() 去掉多余的空格,而 varchar 是不需要的。
2.char 的存取速度还是要比 varchar 要快得多,因为其长度固定,方便程序的存储与查找。
char 也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是
以空间换取时间效率。
varchar 是以空间效率为首位。
3.char 的存储方式是:对英文字符( ASCII )占用 1 个字节,对一个汉字占用两个字节。
varchar 的存储方式是:对每个英文字符占用 2 个字节,汉字也占用 2 个字节。
4. 两者的存储数据都非 unicode 的字符数据。

4.什么叫视图?游标是什么?

视图:
是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表
或者多个表的行或列的子集。对视图的修改会影响基本表。它使得我们获取数据更容易,相比多表查 询。
游标:
是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前 行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游 标显得十分重要。

5.说说like %-的区别

通配符的分类
% 百分号通配符 : 表示任何字符出现任意次数 ( 可以是 0 ).
下划线通配符 : 表示只能匹配单个字符 , 不能多也不能少 , 就是一个字符 .
like 操作符 : LIKE 作用是指示 mysql 后面的搜索模式是利用通配符而不是直接相等匹配进行比较 .
注意 : 如果在使用 like 操作符时 , 后面的没有使用通用匹配符效果是和 = 一致的 ,SELECT * FROM products
WHERE products.prod_name like '1000'; 只能匹配的结果为 1000, 而不能匹配像 JetPack 1000 这样的结果 .
% 通配符使用 : 匹配以 "yves" 开头的记录 :( 包括记录 "yves") SELECT FROM products WHERE
products.prod_name like 'yves%';
匹配包含 "yves" 的记录 ( 包括记录 "yves") SELECT FROM products WHERE products.prod_name like
'%yves%';
匹配以 "yves" 结尾的记录 ( 包括记录 "yves", 不包括记录 "yves ", 也就是 yves 后面有空格的记录 , 这里需要注意 )
SELECT * FROM products WHERE products.prod_name like '%yves';
通配符使用 : SELECT FROM products WHERE products.prod_name like '
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云草桑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值