栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java面试之Mysql相关

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java面试之Mysql相关

本章主要总结一些mysql相关的面试题,废话不多说,开搞

  1. 数据库三大范式?列不可拆;非主键完全依赖主键,而非部分主键;非主键只依赖于主键;
  2. mysql权限表有哪些?user,db,table,column,(从用户向下细分),host则是结合db对用户分权限
  3. binlog有有几种录入格式?statement,row,mixed,statement记录较为粗略节约性能,row更细致但耗费性能,mixed就是折中两者
  4. mysql数据类型,整数:tiny,small,medium,普通,bigint五种,分别是12348字节;实数:float,double,decimal;字符串:varchar,char,blob,text;枚举:enum,把不重复而且不常用的数据存为一个集合;日期:datetime,timestamp等,如果存微秒可以用bigint
  5. 索引相关?索引就相当于书的目录,可以提高查找速度,这是其优点,缺点就是需要改数据时加以动态维护,并且耗费空间
  6. 创建索引的原则:(1)适合的情况:查询操作多的字段,有外键的字段(2)不适合的情况:字段区分度要高,比如性别,只有男女未知,区分度低不必索引;查询不多的字段不索引,bit,image,text不索引;更新频繁的字段不索引;索引可以改旧的就不要建新的
  7. 索引使用场景?where,orderby,join alter table 表名 add index(字段名)
  8. 数据库特性:acid,atom原子性,consistency,一致性,i,isolation隔离性,d,durable,持久性
  9. mysql分页:limit:第一种a,b,意思是从第a到a+b条,第二种:a,-1,意思是a到最后一条数据;第三种,a,意思是前a条数据
  10. 字段为什么要求定义为not null?null会占用更多空间
  11. 分表:垂直分表:把一个表的字段分开多个表,其中字段除了共有主键,其他的都不重复
  12. 水平分表:不拆字段,只把数据分开
  13. 数据表损坏的修复方式:myisamchk
  14. 几种复杂语法:join,分left,right,inner,full几种join,mysql中不支持full outer,即全外连接
  15. 几种join,left就是左表全部和右表符合的数据,right就是右表全部和左表符合的数据,inner就是左右交集,full就是两表全部数据,重复的只会显示一编,这一点同并集交集的概念类似
  16. 什么是视图?视图的优缺点?
    视图就是一种虚拟表,使用视图可以隔离对表的操作,提高安全性,可以提高数据的逻辑独立性,但是对视图的查询需要转化为对表的查询,费时间,其次修改视图还要涉及到改表,一些复杂的表难以修改
  17. 什么是游标?
    一种类似指针的东西,可以遍历数据库的查询结果,在其中获取想要的结果,这比直接查数据库好很多
  18. SQL语句主要分为哪几类
    数据定义语言DDL,create,dropalter
    数据查询语言DQL,select
    数据操作语言DML,insert,update,delete
    数据控制语言DCL,grant,revoke(撤销),commit,rollback
  19. 数据库事务
    数据库中最基本的操作,不可再分割,例如转账,a转一笔钱给b,那么a账户钱少了,b账户钱多了,这两个必须同时执行,如果a少了,b没多,就出错误了
  20. 数据库四大特性:acid,原子性,一致性,隔离性,持久性
  21. 什么是脏读?幻读?不可重复读?如何解决?
    脏读:a和b同时向一个字段修改,a改的半途,b回滚了,那么就不一致了
    幻读:a查了一次,b插入一条,a又要插入,发现已经存在了
    不可重复读:类似幻读,a两次查询中,b对第一次查询的数据进行了修改,那a两次查询就不一致了
    解决办法是隔离机制,四种隔离机制,三种读依次解决,最后一种可以解决所有
  22. 对MySQL的锁了解吗
    锁就是用来避免高并发下产生的操作冲突,用访问限制来对访问顺序进行安排,
  23. 隔离级别与锁的关系?
    锁分共享锁和排他锁,共享锁是指大家都能看,但不能改动,排他锁是指一个人改的时候,别的人不能改;
    在读取未提交下,共享锁无需加,因为可能会与排他锁冲突
    读取以提交下
  24. 按照锁的粒度分数据库锁有哪些?
    行级锁,表级锁,页级锁
    行级最细,冲突可能最小,开销最大,性能最慢
    表级最粗,冲突可能最大,开销小,性能快,这两种级别都有共享与排他锁的种类
    页级是介于这两种之间,性能,冲突居中
  25. 什么是死锁?怎么解决?
    死锁就是多个用户访问一个资源,互相使用锁锁定资源并由此产生循环冲突
    1、尽量让各个地方以相同顺序访问资源
    2、尽量一次锁定所有需要使用的资源
    3、增加粒度,使用表级别
    都不行就用分布式事务锁或者乐观锁
  26. 数据库的乐观锁和悲观锁是什么?怎么实现的
    两者都是数据库在并发控制时使用的策略,乐观锁就是假设不会发生冲突,在修改时上锁;一般是在读操作多的时候使用,可以节约性能;使用数据库中的锁机制实现
    悲观锁就是假设会冲突,在提交事务前都锁起来,一般是在写操作多时使用,耗费性能大,但比起上层事务发生冲突不断请求,还是节约了性能,使用cas算法实现
  27. 超键、候选键、主键、外键分别是什么?
    超键就是能唯一标识一个元组属性的东西,包含候选键和主键
    候选键就是最小没有冗余元素的超键
  28. SQL 约束有哪几种
    notnull 非空,primary key主键,foreign key外键,check取值范围,unique,这个字段下数据内容不能重复
  29. mysql中 in 和 exists 区别
    in和exists功能相似,但在子查询大表用exists好,表小用in好
  30. varchar与char的区别
    varchar长,上限65532,存多长就是多长;是变长,
    char短,上限255,多余的用空格填充;是定长,操作速度快,属于空间换时间
  31. varchar(50),varchar(x)代表x字符长度;与之区别的int(x)这种,代表显示x长度,是为了便于报表显示
  32. UNIOn与UNIOn ALL的区别?
    union all不会合并重复行,效率也较低
  33. 字段为什么要求定义为not null?
    null会占用更多空间,而且会在业务中造成一些错误
  34. 如果要存储用户的密码散列,应该使用什么字段进行存储?
    应该用char而非varchar,因为可以加快速度
附:

mysql的题还是多,因为相关的语句多,还有一些使用经验,以后慢慢更新吧

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号