阿里Java规范-05-MySQL数据库

=================(一)建表规约==================
根据《阿里巴巴Java开发手册》 ,数据库的表设计允许适当冗余,以提升SQL查询的性能,避免表的关联查询,下列哪些字段不允许几余:【CD】
A、文本类型的字段。
B、基本固定不变的类目名称。
C、 varchar(2500)的字段
D、需要频繁修改的字段
.【推荐】字段允许适当冗余,以提高性能,但是必须考虑数据同步的情况。冗余字段应遵循:
1)不是频繁修改的字段。
2)不是 varchar 超长字段,更不能是 text 字段。
短连接:短连接操作步骤是:
连接-》数据传输-》关闭连接;
长连接:长时间保持客户端与服务端的连接状态。
连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;
要求:长连接在没有数据通信时,定时发送数据包,以维持连接状态;短连接在没有数据传输时直接关闭就行了

关于表字段和索引,下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
A .表字段注释,如果修改字段含义或对字段表示的状态追加时,需要及时更新。
B .合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。
C .针对表的每个字段都增加索引,加快查询速度。
D .字段的区分度越高,索引的查找速度越快。
创建表的时候写注释
create table test1 (
field_name int comment ‘字段的注释’
)comment=‘表的注释’;
修改表的注释
alter table test1 comment ‘修改后的表的注释’;
修改字段的注释
alter table test1 modify column field_name int comment ‘修改后的字段注释’;

关于数据库命名规则,下列哪些说法符合《阿里巴巴Java开发手册》:【BCD】多选
A .数据库库名和表名没有规定,可任意取名,只要方便记忆即可。
B .库名应该尽量与应用名称保持一致,表的命名最好是业务名称_表名的方式。
C .无论是库名还是表名都禁用保留字,如desc、match、range等。
D .表名、字段名必须使用小写字母或数字。

关于数据库是与否概念的列的命名方式,下列哪些说法符合《阿里巴巴Java开发手册》:【BD】多选
A .对于是与否概念的列名,必须使用can_abc 来表示。
B .对于是与否概念的列名,必须使用is_abc 来表示。
C .数据类型是varchar(1)( Y表示是,N表示否)。
D .数据类型是unsigned tiny int.( 1表示是,0表示否)。

关于数据库中表相关的命名,下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
A .表名、字段名禁止出现数字开头,禁止两个下划线中间只出现数字。
B .表名不使用复数名词。
C .表必备三字段命名:id, gmt_create, gmt_modify。
D .表必备三字段命名:id, gmt_create, gmt_modified。

关于数据库索引的命名,下列哪些说法符合《阿里巴巴Java开发手册》:【ACD】多选
A .主键索引(primary key),字段类型为unsigned bigint、单表时推荐自增、步长为1。
B .主键索引(primary key),字段类型为unsigned bigint、单表时推荐自增、步长为2。
C .唯一索引(unique key),命名规则为uk_字段名(如果多个字段继续下划线)。
D .普通索引(normal index),标记成idx_字段名(如果多个继续下划线)。

关于建表规约,下列哪些说法符合《阿里巴巴Java开发手册》:【ABCD】多选
A. 字段为非负数,必须 定义为unsigned。
B. 存储的字符数几乎完全相等的字段,推荐定义为char类型存储。
C. varchar会预先分配存储空间
D. 不得使用级联与外链,一切外链概念必须在应用层解决。

=================(二)索引规约==================
利用索引进行排序,下列哪些说法是正确的:多选 【AB】
A.查询语句 WHERE a = 10 ORDER BYb,可以利用素引(a,b)来进行索引排序。
B.查询语句WHERE a > 10 ORDER BY b,不可以利用素引(a,b)进行索引排序。
C.查询语句WHERE a IN (10, 11) ODER BY b.可以利用索引(a,b)来进行索引排序。
D.查询语句WHER a>10 AND b=20 ORDER BY a,可以利用索引(b,a)来进行素引排序。
解析:--where a in(...) order by b,c (对于排序来说,多个等于条件,也是范围查询)。又因为:比如索引中有范围查找,那么索引有序性无法利用。

关于索引的设计,下列哪些说法符合《阿里巴巴Java开发手册》:【ACD】多选
A .对varchar类型的字段建立索引,必须指定索引长度。
B .对varchar类型的字段建立索引,不需要指定索引长度,这样索引区分度最好。
C .业务上具有唯一特性的字段(含组合字段),必须指定唯一索引。
D .建复合索引时,一般选择区分度高的字段放在最左列。

关于索引的使用,下列哪些说法是正确的:【BCD】多选
A .查询语句 WHERE a+1 = 5 可以利用a索引。
B .查询语句WHERE date_format(gmt_create, '%Y-%m-%d') = '2016-11-11'无法利用gmt_create索引。
C .当 c 列类型为 char 时,查询语句 WHERE c = 5 无法利用c索引。
D .索引字段使用时不能进行函数运算。

关于MySQL性能优化的描述,下列哪些说法是正确的:【ABCD】多选
A .主键查询优先于二级索引查询。
B .表连接有一定的代价,故表连接数量越少越好。
C .一般情况下,二级索引扫描优先于全表扫描。
D .可以使用通过索引避免排序代价。
注意:这四条都要好好理解,对于索引优化都很有好处的。二级索引可以学习一下!

关于索引的设计和使用,下列哪些说法是正确的:【ABCD】多选
A .若查询条件中不包含索引的最左列,则无法使用索引。
B .对于范围查询,只能利用索引的最左列。
C .对于order by A或group by A语句,在A上建立索引,可以避免排序。//易错
D .对于多列排序,需要所有所有列排序方向一致,才能利用索引。
注意:组合索引有一个特性:做做前缀匹配,即(A,B,C)相当于(A),(A,B),(A,B,C)
索引使用规则:
若查询条件中不包含索引的最左列,无法使用索引
对于范围查询,只能利用索引的最左列
对于order by A语句或group by A语句,在A上建立索引,可以避免排序
对于多列排序,需要所有所有列排序方向一致,才能利用索引。

关于数据库模糊检索的描述下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
A .绝对禁止左模糊。
B .绝对禁止全模糊。
C .绝对禁止右模糊。
D .全模糊或左模糊查询需求,优先使用搜索引擎。

关于组合索引,下列哪些说法符合《阿里巴巴Java开发手册》:【AC】多选
A.查询条件 where a='0' and b='1' , 当组合索引为(b,a)的时候能进行索引扫描。
B.查询条件 where a='0' and b='1' ,当组合索引为(c,a,b)的时候进行索引扫描。
C.查询 select b from table where a='0',当组合索引为(a,b)的时候会进行索引扫描。
D.查询条件 where a > '0' order by b,当组合索引为(a,b)时会利用索引进行排序。

对于索引(a,b,c),下列哪些说法是正确的【ABC】多选
A.查询语句 where a between 5 and 10 可以使用该索引
B.查询语句where a = 5 and b between 5 and 10 可以使用该索引.
C.查询语句 where a in(5,6,7,8,9)and b=5可以使用该索引。
D.查询语句 where b = 5 and c = 10 可以使用该索引。

关于使用explain对数据库性能进行优化分析,下列哪些说法符合《阿里巴巴Java开发手册》【A】单选
A.SQL性能优化的目标:至少要达到range级别,要求是ref级别,如果可以是consts最好。
B.index级别走的是扫描索引,所以管卡压我非常比ref快。
C.range级别是指对表进行范围索引。
D.ref级别是指使用主键或者唯一索引。

关于索引效率,下列哪些说法符合《阿里巴巴Java开发手册》:【CD】
A .使用索引的效率一定高于全表扫描的效率。
B .关于explain的结果,type=index的索引效率好于type=ref。
C .sql查询条件 where a like ‘%阿里%’ ,不会走索引。
D .sql查询条件 where a like ‘阿里%’ ,a列创建了索引,一般会使用索引进行检索。

关于join的描述,下列哪些说法符合《阿里巴巴Java开发手册》:【AB】多选
A.join的字段,数据类型须保持绝对一致。
B.join列必须有索引。
C.优先where过滤,其次再join关联。
D.只要满足业务需求和,join表的个数不受限制 。

对于索引的基本原理,下列哪些说法是正确的:【 ABCD】多选
A. 索引的数据结构主要有B-Tree、Hash、R-Tree、Full-Text等。
B. 从物理存储来看,主要分为聚集(clustered)和非聚集(non-clustered)索引。
C. MySQL的表是聚集索引组织表(index of table)。
D. 聚簇索引的叶子节点存放的是数据,非聚簇索引的叶子节点存放的是非聚集索引的key和主键值。

关于使用explain对数据库性能进行优化分析,下列哪些说法符合《阿里巴巴Java开发手册》:【A】
A .SQL性能优化的目标:至少要达到 range 级别,要求是ref级别,如果可以是consts最好。
B .index级别走的是扫描索引,所以速度会比ref快。
C .range级别是指对表进行范围索引。
D .ref级别是指使用主键或者唯一索引。

关于explain执行计划,下列哪些说法是正确的【ABCD】多选
A. type列显示了连接使用了何种类型,从最好到最差的连接类型为:const,eq_ref,ref,range,index,ALL。
B. possible_keys显示可能在这张表中的索引,如果为空,表示没有可能的索引。
C. key列表示实际使用的索引。
D. ref列显示索引的哪一列被使用了。

=================(三)SQL语句==================
关于分页查询,下列哪些说法符合《阿里巴巴Java开发手册》:【ABC】多选
A .分页查询,当统计的count为0时,应该直接返回,不要再执行分页查询语句。
B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。
C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。//易错
D .可使用存储过程写分页逻辑,提高效率。

关于数据库中NULL的描述,下列哪些说法符合《阿里巴巴Java开发手册》:【BD】多选
A .NULL=NULL的返回结果为true。
B .NULL与任何值的比较结果都为NULL。
C .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. 在表查询中,需order by排序时,优先使用主键列,索引列。

=================(四)ORM映射==================

关于使用iBATIS操作数据,下列哪些说法符合《阿里巴巴Java开发手册》【CD】多选
A.如果表中字段和DO中的字段名完全一致,可直接用DO作为resultClass。
B.iBATIS中自带了queryForList(String statementName,int start,int size)的分页接口,可直接使用,无需再自行封闭。
C.不要定义大而全的数据更新接口,对整个DO进行更新。必须按需更新。
D.sqlmap中写update语句时,必须包含对记录中gmt_modified字段的更新。

关于ORM的规则,下列哪些说法符合《阿里巴巴Java开发手册》:【AD】
A .数据库中,表达是与否概念的字段,必须使用is_xxx的方式命名。
B .推荐使用iBATIS自带的queryForList(String statementName,int start,int size)进行分页查询。(不推荐)
C .为避免写resultMap,可以直接拿HashMap与HashTable作为查询结果集的输出。
D .不要用resultClass当返回参数,即使所有类属性名与数据库字段一一对应,也需要定义。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343