
是书面访谈的重点,因此编辑专门整理了一些他认为很有价值的访谈问题,以及其他人遇到的良好访谈. 希望对大家有帮助. 直接查看主题,看看您知道多少?

的三种普通形式是什么?
第一范式(1NF)
The
字段是原子的,无法划分. 所有关系系统都符合第一个范式
表中的字段具有单个属性,无法划分. 例如,姓名字段,名字和姓氏必须为
总体上,不可能区分哪个部分是姓氏,哪个部分是名字. 如果要区分姓和名,则必须将它们设计成两个.
独立字段.
第二范式(2NF):
第二范式(2NF)是在第一范式(1NF)的基础上建立的,这意味着必须满足第二范式(2NF)
必须满足第一范式(1NF).
要求表中的每个实例或行必须是唯一可区分的. 通常需要在表中添加一列来存储
每个实例的唯一标识符. 此唯一属性列称为主键或主键.
第二范式(2NF)要求实体的属性完全取决于主键. 所谓完全依赖意味着不能只有依赖
主要关键字的一部分的属性(如果存在),则应将此属性和主要关键字的这一部分分开以形成
一个新实体mysql笔试题,在新实体和原始实体之间存在一对多的关系. 为了实现区分,通常需要在表中添加一列,

存储每个实例的唯一标识. 简而言之,第二种形式是非主属性不部分依赖主键.
第三范式(3NF):
第三个范式的要求如下:
满足第三范式(3NF)必须首先满足第二范式(2NF). 简而言之,第三范式(3NF)需要一个
表不包含其他表中已经包含的非主键信息.
因此,第三范式具有以下特征:
1,每一列只有一个值
2,每行都可以区分.
3. 每个表不包含其他表已经包含的非主键信息.
例如,张贴者的ID只能出现在帖子表中,但是张贴者的ID不能出现,并且张贴者的名称也出现.
否则,只要出现具有相同帖子ID的所有记录,它们的名称部分必须严格一致,这是
这是数据冗余
什么是事务?
由单个逻辑单元执行的一系列操作. 这些操作要么完成,要么根本不执行. 这是密不可分的. 用户可以控制交易的开始和结束. 如果没有控制权,则将默认划分事务. 事务具有以下属性:
(1)原子性
表示事务已完全执行或未执行. 就是说,交易不可能在执行中途停止. 例如: 您去买东西,钱被付了,东西不被拿走. 做还是不做.
(2)一致性

这意味着事务的操作不会更改中的一致性. 例如,a + b = 10; a发生了变化,b也应发生了相应的变化.
(3)独立
两个或多个事务将不会交替运行,因为这可能会导致数据不一致
(4)持久性
事务成功运行后,更新将是永久的,不会无故不回滚.
主键超级键候选键外键
主键:
数据列或属性的组合,它们唯一且完整地标识表中存储的数据对象. 数据列只能有一个主键,并且主键的值不能丢失,即不能为空.
超级键:
可以唯一标识关系中元组的属性集称为关系模式的超级键. 一个属性可以用作超级键,多个属性也可以用作超级键. 超级键包括候选键和主键.
候选键:
是最小的超级键,即没有冗余元素的超级键.
外键:
一个表中存在的另一个表的主键称为该表的外键.
视图的角色,可以更改视图吗?
视图是虚拟表. 与包含数据的表不同,视图仅包含查询,这些查询在使用时可以动态检索数据. 它们不包含任何列或数据. 使用视图可以简化复杂的SQL操作,隐藏特定细节并保护数据. 创建视图后,它们可以与表相同的方式使用.
该视图无法建立索引,也不能具有关联的触发器或默认值. 如果视图本身中存在一个orderby,则orderby将再次在视图上被覆盖.

创建视图: createviewXXXasXXXXXXXXXXXXXX;
对于某些视图(例如DistinctUnion),它不使用联接子查询分组聚合功能,可以对其进行更新. 视图的更新将更新基表;但是视图主要用于简化检索和保护数据. 更新,并且大多数视图无法更新.
执行查询时,如果查询中有很多数据(假设有1000万个项目),可以使用哪种方法来提高查询效率?或Java代码中的优化方法是什么?
1. 在设计方面
(1)创建索引
(2)分区(例如,按时间划分)
(3)选择最合适的字段属性(减小字段宽度并尽可能使用定长字段)
2. 在I / O方面
(1)增加缓冲区
(2)如果涉及表的级联,最好将不同的表放在不同的磁盘上以提高I / O速度
3. SQL语句方法
(1)优化sql语句并减少比较次数. 您可以使用链接表查询而不是子查询
(2)限制返回的条目数(对于mysql限制)
(3)存在一些外键约束,这些约束会影响插入和删除的性能. 如果程序可以保证数据的完整性,那么有必要设计
删除外键(比喻: 就像免检产品一样,只是为了提高效率并完全信任产品的制造商)
4. 就Java程序而言
如果您重复使用查询,则可以传递preparestatement,因为他在运行前已经被预编译,只要运行就可以.

优化是重要的一点,访问员必须问!该知识点的后续编辑将全面分享该知识!
MySQL中varchar和char之间的区别以及varchar(50)中50的含义
(1),varchar和char char的区别是固定长度类型,varchar是可变长度类型
(2)中的50和varchar(50)的含义最多为50个字符. varchar(50)和(200)占用的空间相同mysql笔试题,但是varchar在排序时会消耗更多的内存,因为orderbycol使用fixed_length来计算col长度(内存引擎也相同)
(3),int(20)的含义是20,表示显示字符的长度,但需要添加参数,最大为255,例如,它是记录行号的id,插入10数据,它将显示00000000001〜~~ 00000000010,当字符数超过11时,它将仅显示11位数字. 如果不添加小于11位的参数,则在其前面添加0,而不在其前面添加020,以指示最大显示宽度为20,但仍占用4个字节的存储空间,存储范围保持不变;
(4),为何如此设计mysql对于大多数应用程序来说毫无意义,但仅规定使用某些工具来显示字符数. int(1)和int(20)的存储和计算相同;
交易的隔离级别
事务有四个隔离级别,从低到高: 读未提交(读未提交),读已提交(读提交),可重复读(重复读)和可序列化(可序列化). 这四个级别可以一一解决,脏读,不可重复读和幻像读.
索引方面
创建索引的好处: 创建唯一索引可以确保表中每一行数据的唯一性. 提高搜索速度,提高查询性能,并提高系统性能
缺点: 创建和维护索引需要时间. 该时间随着数据量的增加而增加. 索引需要占用物理空间. 数据表除了占用数据空间外,每个索引还占用一定的物理空间. 如果要构建聚集索引,则所需空间将更大. 添加,删除和修改表中的数据时,必须动态维护索引,这会降低数据维护的速度.
无效的索引情况:
1. 索引不存储空值. 更准确地说,单列索引不存储空值,而复合索引不存储所有空值. 索引不能存储Null,因此当将此列使用nullull条件时,由于索引上没有Null值,因此无法使用索引,并且只能使用全表扫描.
2. 不适用于键值较少的列(重复数据较多的列)
3. 前导模糊查询不能使用索引(例如“%XX”或“%XX%”)
4. 索引失败的几种情况
1. 如果条件中有or,则即使存在带有索引的条件也不会使用(这就是为什么or尽可能少地使用的原因). 如果要使用或要使索引生效,则只能使用每个列都添加一个索引2. 对于不是第一部分的多列索引,将不使用索引3. 像查询以%4开头. 如果列类型是字符串,则必须在带引号的条件下使用数据,否则不使用索引5. 如果mysql估计使用全表扫描比使用全表扫描更快索引,索引未使用

以上是Power Node Java培训组织的编辑者介绍的“ MySQL-Java书面问答”. 希望对大家有帮助. 如有任何疑问,请咨询. 的老师随时为您服务.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-194791-1.html
更环保
选择新生
手上都是