
java开发手册
行业关键词-郭春
2023年3月18日发(作者:小学军训作文)阿⾥Java规范-05-MySQL数据库
=================(⼀)建表规约==================
根据《阿⾥巴巴Java开发⼿册》,数据库的表设计允许适当冗余,以提升SQL查询的性能,避免表的关联查询,下列哪些字段不允许⼏余:【CD】
A、⽂本类型的字段。
B、基本固定不变的类⽬名称。
C、varchar(2500)的字段
D、需要频繁修改的字段
.【推荐】字段允许适当冗余,以提⾼性能,但是必须考虑数据同步的情况。冗余字段应遵循:
1)不是频繁修改的字段。
2)不是varchar超长字段,更不能是text字段。
短连接:短连接操作步骤是:
连接-》数据传输-》关闭连接;
长连接:长时间保持客户端与服务端的连接状态。
连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;
要求:长连接在没有数据通信时,定时发送数据包,以维持连接状态;短连接在没有数据传输时直接关闭就⾏了
关于表字段和索引,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ABD】多选
A.表字段注释,如果修改字段含义或对字段表⽰的状态追加时,需要及时更新。
B.合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。
C.针对表的每个字段都增加索引,加快查询速度。
D.字段的区分度越⾼,索引的查找速度越快。
创建表的时候写注释
createtabletest1(
field_nameintcomment‘字段的注释’
)comment=‘表的注释’;
修改表的注释
altertabletest1comment‘修改后的表的注释’;
修改字段的注释
altertabletest1modifycolumnfield_nameintcomment‘修改后的字段注释’;
关于数据库命名规则,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【BCD】多选
A.数据库库名和表名没有规定,可任意取名,只要⽅便记忆即可。
B.库名应该尽量与应⽤名称保持⼀致,表的命名最好是业务名称_表名的⽅式。
C.⽆论是库名还是表名都禁⽤保留字,如desc、match、range等。
D.表名、字段名必须使⽤⼩写字母或数字。
关于数据库是与否概念的列的命名⽅式,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【BD】多选
A.对于是与否概念的列名,必须使⽤can_abc来表⽰。
B.对于是与否概念的列名,必须使⽤is_abc来表⽰。
C.数据类型是varchar(1)(Y表⽰是,N表⽰否)。
D.数据类型是unsignedtinyint.(1表⽰是,0表⽰否)。
关于数据库中表相关的命名,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ABD】多选
A.表名、字段名禁⽌出现数字开头,禁⽌两个下划线中间只出现数字。
B.表名不使⽤复数名词。
C.表必备三字段命名:id,gmt_create,gmt_modify。
D.表必备三字段命名:id,gmt_create,gmt_modified。
关于数据库索引的命名,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ACD】多选
A.主键索引(primarykey),字段类型为unsignedbigint、单表时推荐⾃增、步长为1。
B.主键索引(primarykey),字段类型为unsignedbigint、单表时推荐⾃增、步长为2。
C.唯⼀索引(uniquekey),命名规则为uk_字段名(如果多个字段继续下划线)。
D.普通索引(normalindex),标记成idx_字段名(如果多个继续下划线)。
关于建表规约,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ABCD】多选
A.字段为⾮负数,必须定义为unsigned。
B.存储的字符数⼏乎完全相等的字段,推荐定义为char类型存储。
r会预先分配存储空间
D.不得使⽤级联与外链,⼀切外链概念必须在应⽤层解决。
=================(⼆)索引规约==================
利⽤索引进⾏排序,下列哪些说法是正确的:多选【AB】
A.查询语句WHEREa=10ORDERBYb,可以利⽤素引(a,b)来进⾏索引排序。
B.查询语句WHEREa>10ORDERBYb,不可以利⽤素引(a,b)进⾏索引排序。
C.查询语句WHEREaIN(10,11)ODERBYb.可以利⽤索引(a,b)来进⾏索引排序。
D.查询语句WHERa>10ANDb=20ORDERBYa,可以利⽤索引(b,a)来进⾏素引排序。
解析:--whereain(...)orderbyb,c(对于排序来说,多个等于条件,也是范围查询)。⼜因为:⽐如索引中有范围查找,那么索引有序性⽆法利
⽤。
关于索引的设计,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ACD】多选
A.对varchar类型的字段建⽴索引,必须指定索引长度。
B.对varchar类型的字段建⽴索引,不需要指定索引长度,这样索引区分度最好。
C.业务上具有唯⼀特性的字段(含组合字段),必须指定唯⼀索引。
D.建复合索引时,⼀般选择区分度⾼的字段放在最左列。
关于索引的使⽤,下列哪些说法是正确的:【BCD】多选
A.查询语句WHEREa+1=5可以利⽤a索引。
B.查询语句WHEREdate_format(gmt_create,'%Y-%m-%d')='2016-11-11'⽆法利⽤gmt_create索引。
C.当c列类型为char时,查询语句WHEREc=5⽆法利⽤c索引。
D.索引字段使⽤时不能进⾏函数运算。
关于MySQL性能优化的描述,下列哪些说法是正确的:【ABCD】多选
A.主键查询优先于⼆级索引查询。
B.表连接有⼀定的代价,故表连接数量越少越好。
C.⼀般情况下,⼆级索引扫描优先于全表扫描。
D.可以使⽤通过索引避免排序代价。
注意:这四条都要好好理解,对于索引优化都很有好处的。⼆级索引可以学习⼀下!
关于索引的设计和使⽤,下列哪些说法是正确的:【ABCD】多选
A.若查询条件中不包含索引的最左列,则⽆法使⽤索引。
B.对于范围查询,只能利⽤索引的最左列。
C.对于orderbyA或groupbyA语句,在A上建⽴索引,可以避免排序。//易错
D.对于多列排序,需要所有所有列排序⽅向⼀致,才能利⽤索引。
注意:组合索引有⼀个特性:做做前缀匹配,即(A,B,C)相当于(A),(A,B),(A,B,C)
索引使⽤规则:
若查询条件中不包含索引的最左列,⽆法使⽤索引
对于范围查询,只能利⽤索引的最左列
对于orderbyA语句或groupbyA语句,在A上建⽴索引,可以避免排序
对于多列排序,需要所有所有列排序⽅向⼀致,才能利⽤索引。
关于数据库模糊检索的描述下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ABD】多选
A.绝对禁⽌左模糊。
B.绝对禁⽌全模糊。
C.绝对禁⽌右模糊。
D.全模糊或左模糊查询需求,优先使⽤搜索引擎。
关于组合索引,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【AC】多选
A.查询条件wherea='0'andb='1',当组合索引为(b,a)的时候能进⾏索引扫描。
B.查询条件wherea='0'andb='1',当组合索引为(c,a,b)的时候进⾏索引扫描。
C.查询selectbfromtablewherea='0',当组合索引为(a,b)的时候会进⾏索引扫描。
D.查询条件wherea>'0'orderbyb,当组合索引为(a,b)时会利⽤索引进⾏排序。
对于索引(a,b,c),下列哪些说法是正确的【ABC】多选
A.查询语句whereabetween5and10可以使⽤该索引
B.查询语句wherea=5andbbetween5and10可以使⽤该索引.
C.查询语句whereain(5,6,7,8,9)andb=5可以使⽤该索引。
D.查询语句whereb=5andc=10可以使⽤该索引。
关于使⽤explain对数据库性能进⾏优化分析,下列哪些说法符合《阿⾥巴巴Java开发⼿册》【A】单选
性能优化的⽬标:⾄少要达到range级别,要求是ref级别,如果可以是consts最好。
级别⾛的是扫描索引,所以管卡压我⾮常⽐ref快。
级别是指对表进⾏范围索引。
级别是指使⽤主键或者唯⼀索引。
关于索引效率,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【CD】
A.使⽤索引的效率⼀定⾼于全表扫描的效率。
B.关于explain的结果,type=index的索引效率好于type=ref。
查询条件wherealike‘%阿⾥%’,不会⾛索引。
查询条件wherealike‘阿⾥%’,a列创建了索引,⼀般会使⽤索引进⾏检索。
关于join的描述,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【AB】多选
的字段,数据类型须保持绝对⼀致。
列必须有索引。
C.优先where过滤,其次再join关联。
D.只要满⾜业务需求和,join表的个数不受限制。
对于索引的基本原理,下列哪些说法是正确的:【ABCD】多选
A.索引的数据结构主要有B-Tree、Hash、R-Tree、Full-Text等。
B.从物理存储来看,主要分为聚集(clustered)和⾮聚集(non-clustered)索引。
的表是聚集索引组织表(indexoftable)。
D.聚簇索引的叶⼦节点存放的是数据,⾮聚簇索引的叶⼦节点存放的是⾮聚集索引的key和主键值。
关于使⽤explain对数据库性能进⾏优化分析,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【A】
性能优化的⽬标:⾄少要达到range级别,要求是ref级别,如果可以是consts最好。
级别⾛的是扫描索引,所以速度会⽐ref快。
级别是指对表进⾏范围索引。
级别是指使⽤主键或者唯⼀索引。
关于explain执⾏计划,下列哪些说法是正确的【ABCD】多选
列显⽰了连接使⽤了何种类型,从最好到最差的连接类型为:const,eq_ref,ref,range,index,ALL。
le_keys显⽰可能在这张表中的索引,如果为空,表⽰没有可能的索引。
列表⽰实际使⽤的索引。
列显⽰索引的哪⼀列被使⽤了。
=================(三)SQL语句==================
关于分页查询,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ABC】多选
A.分页查询,当统计的count为0时,应该直接返回,不要再执⾏分页查询语句。
⾃带的queryForList(StringstatementName,intstart,intsize)分页接⼝有性能隐患,不允许使⽤。
C.定义明确的sql查询语句,通过传⼊参数start和size来实现分页逻辑。//易错
D.可使⽤存储过程写分页逻辑,提⾼效率。
关于数据库中NULL的描述,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【BD】多选
=NULL的返回结果为true。
与任何值的⽐较结果都为NULL。
1的返回结果为true。
D.当某⼀列的值全是NULL时,sum(col)的返回结果为NULL。
提⽰:count(col1,col2)如果其中有⼀列为空则返回0,那么count(col)也是⼀样的!
关于count相关的使⽤,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ACD】多选
A、不要使⽤count(列名)或count(常量)来替代count()
B、count(列名)会统计值为NULL的⾏,⽽count()不会统计。
C、当某⼀列的值全是NULL时,count(列名)返回0。
D、在程序代码中写分页查询逻辑时,若count为0应直接返回,以免执⾏后⾯的分页语句。
关于数据库查询的描述,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【BCD】多选
A.当需要获取数据表所有字段的值映射到DO时,可使⽤Select*来查询。
B.绝对禁⽌左模糊和全模糊查询;限制使⽤右模糊查询。全模糊或左模糊搜索的需求⾛搜索引擎实现。
C.禁⽌使⽤存储过程来查询返回数据。
D.在表查询中,需orderby排序时,优先使⽤主键列,索引列。
=================(四)ORM映射==================
关于使⽤iBATIS操作数据,下列哪些说法符合《阿⾥巴巴Java开发⼿册》【CD】多选
A.如果表中字段和DO中的字段名完全⼀致,可直接⽤DO作为resultClass。
中⾃带了queryForList(StringstatementName,intstart,intsize)的分页接⼝,可直接使⽤,⽆需再⾃⾏封闭。
C.不要定义⼤⽽全的数据更新接⼝,对整个DO进⾏更新。必须按需更新。
中写update语句时,必须包含对记录中gmt_modified字段的更新。
关于ORM的规则,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【AD】
A.数据库中,表达是与否概念的字段,必须使⽤is_xxx的⽅式命名。
B.推荐使⽤iBATIS⾃带的queryForList(StringstatementName,intstart,intsize)进⾏分页查询。(不推荐)
C.为避免写resultMap,可以直接拿HashMap与HashTable作为查询结果集的输出。
D.不要⽤resultClass当返回参数,即使所有类属性名与数据库字段⼀⼀对应,也需要定义。