MySQL 面试题

2024-05-10 00:58
文章标签 面试题 mysql database

本文主要是介绍MySQL 面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.数据库三范式

第一范式:1NF是对属性的原子性约束,要求字段具有原子性,不可再分解;(只要是关系型数据库都满足1NF)

第二范式:2NF是在满足第一范式的前提下,非主键字段不能出现部分依赖主键;解决:消除复合主键就可避免出现部分以来,可增加单列关键字。

第三范式:3NF是在满足第二范式的前提下,非主键字段不能出现传递依赖,比如某个字段a依赖于主键,而一些字段依赖字段a,这就是传递依赖。解决:将一个实体信息的数据放在一个表内实现。

2.delete、drop、truncate区别

truncate 和 delete只删除数据,不删除表结构 ,drop删除表结构,并且释放所占的空间。

删除数据的速度,drop> truncate > delete

delete属于DML语言,需要事务管理,commit之后才能生效。drop和truncate属于DDL语言,操作立刻生效,不可回滚。

使用场合:

当你不再需要该表时, 用 drop;

当你仍要保留该表,但要删除所有记录时, 用 truncate;

当你要删除部分记录时(always with a where clause), 用 delete.

3.MySQL常见的两种存储引擎

MyISAM与InnoDB

4.说几个mysql中你常用的函数

sum、count 、avg、min、max

5.索引的作用?它的优点缺点是什么?

1)索引作用:
协助快速查询、更新数据库表中数据。
为表设置索引要付出代价的:
一是增加了数据库的存储空间
二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。

2)创建索引可以大大提高系统的性能(优点):
1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
3.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分

这篇关于MySQL 面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974985

相关文章

mysql 获得指定数据库所有表名以及指定表的所有字段名

SELECTCOLUMN_NAME 列名,DATA_TYPE 字段类型,COLUMN_COMMENT 字段注释FROMinformation_schema. COLUMNSWHEREtable_name = 'sys_user' ## 表名AND table_schema = 'test'; ## 数据库/*获得指定表的所有字段*/SELECT*FROMinformation_schem

mysql:慢查询日志slow_query_log

1、慢查询日志:当查询超过一定的时间没有返回结果的时候,才会记录到慢查询日志中。默认不开启。采样的时候手工开启。可以帮助DBA找出执行慢的SQL语句 2、常用的参数详解: 注意:修改以下参数,需要重新启动数据库服务才会生效。 slow_query_log=off|on     --是否开启慢查询日志slow_query_log_file=filename --指定保存路径及文件名,默认为数据

docker搭建mysql主从配置

1.拉取mysql,这里使用5.7 docker pull mysql:5.7 2、在本地主机新建两个配置文件:my-master.cnf、my-slave.cnf my-master.cnf: [mysqld]log-bin = mysql-binserver-id = 1 my-slave.cnf: [mysqld]server-id = 2 注意:自己创建文件所在的路径。

MyBatis的update语句的返回值改为从匹配数改为受影响的记录数,向mysql连接添加useAffectedRows=true一个参数即可。

1、现象mysql更新update语句执行时,没有内容变更的话,会返回“0”;存在内容更新的话,会返回会返回有内容更新的记录数“1”。  2、mybatis默认情况,没有内容更新也是返回“1”。这么怎么会是”1“,不应该是”0“???其实默认mybatis返回的是 Rows matched “1”,而不是 “ 0 row affected ”中的 “0”。  3、那需要怎么才能让m

MySql删除重复数据只保留最小id的那条数据。某某公司的临时面试题

错误代码: DELETE FROMpayment WHEREserial IN ( SELECT serial FROM payment GROUP BY serial HAVING count(*) > 1 ) AND id NOT IN ( SELECT min( id ) AS id FROM payment GROUP BY serial HAVING count( serial )

mysql升序排序使null结果排最后

1.现象mysql升序排序的null结果排最前面   select * FROM payment ORDER BY serial ASC; -- null值最前面  结果: 2.现象mysql降序序排序的null结果排最后面 select * FROM payment ORDER BY serial DESC; -- NULL 值最后 结果:  3.使mysql升序排序的n

SpringMVC+Hibernate +MySql+ EasyUI实现CRUD

SpringMVC+Hibernate +MySql+ EasyUI实现CRUD 原文地址 http://my.oschina.net/xshuai/blog/345117

2014年5月整理java笔试题及几个小面试题

实现2/1 3/2 5/3 8/5 13/8...前20项的和public class Test {public double sum(){double m = 1; //分母double n = 2;//分子double sum = 0;for (int i = 0; i < 20; i++) {sum = sum+n/m;double temp = m;m = n;n = m + temp;

2014年5月整理java面试题

1.Overload(方法重载)和override(方法覆盖)的区别: overload是指函数的名称相同,但是属性不同(返回类型除外)  override是对父类的虚函数进行“个性化”,要求属性必须与父类中声明的一致,不然会变成overload!   overload是完全隐藏了父类中函数的实现,相当于定义了一个同名函数  override是继承父类中函数实现,同时增加自己的功能

初学JBPM。发现的错误JBPM no jBPM DB schema

在JBPM 的src目录下面有jbpm.cfg.xmljbpm.hibernate.cfg.xmljbpm.mail.propertieslogging.properties以上是4个默认配置文件。在jbpm.hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configu