MySQL中基础知识

1、tinyint(M), M默认为4;
SMALLINT(M), M默认为6;
MEDIUMINT(M), M默认为9;
INT(M),M默认为11;
BIGINT(M),M默认为20.
M表示最大显示宽度, M写不写都是按照默认的长度。
建表若设置了zerofill(0填充),此时需要自己制定长度,会在数字前面补充0;
2、varchar存储规则:
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节
3、decimal(a,b):a指小数点左边和右边之和,b指小数点右边的位数。
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)
4、通过客户端修改timestamp默认值时,会遇到了问题提示无法修改,需要通过脚本或者在建表时进行修改。
alter table ts_role
MODIFY column create_tm timestamp default CURRENT_TIMESTAMP COMMENT ‘创建时间’
5、mysql在建表时的创建、修改时间有什么用?
表创建时更新创建和修改时间;修改表字段时,修改时间改变;
6、RDS是关系型数据库服务(Relational Database Service)的简称,是一种即开即用、稳定可靠、可弹性伸缩的在线数据库服务。
7、id为19位数字,子单号为15位数字,运单号位12位数字,任务号为32位小写字母和数字组合,卡车号为P+11位数字
8、MySQL中MyISAM与InnoDB区别及选择
选择:
因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。
如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。
9、mysql字符集 utf8 和utf8mb4 的区别
utf8mb4比utf8多了emoji编码支持.
如果实际用途上来看,可以给要用到emoji的库或者说表,设置utf8mb4.
比如评论要支持emoji可以用到.
建议普通表使用utf8 如果这个表需要支持emoji就使用utf8mb4
10、Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别
utf8_general_ci 校对速度快,但准确度稍差。
utf8_unicode_ci 准确度高,但校对速度稍慢。
如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了。

主键:用于确定一张表的唯一标识

外键:用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

视图:类似于快照,可以查看复杂的结构,本身是一张虚表,用于做查询

索引:加快查询速度,但索引的创建有一定的限速

存储过程:一些SQL的集合,执行速度快,执行后会存储到数据库中

触发器:用于保证主、外键的安全性。

id使用bigint类型,长度设置为20;
标题使用varchar类型,长度100;
图片使用varchar类型,长度300;
富文本编辑器使用text类型,长度默认;
状态使用tinyint,长度1;
创建和修改时间使用datetime,长度默认;
为什么数据库主键不要自增,而要用UUID这个类?
UUID.randomUUID().toString()是JDK自身提供的自动生成主键的方法,由16位字符组成,全局唯一,
并且可以防止注入式攻击:删除时通过id会在url中暴露该id,使用UUID后可以隐藏起来不暴露给用户。
缺点在于生成的结果串过长,另外影响innodb,所有使用B树索引的数据都会受到影响。

使用自增会有如下缺点:如果A表用自增(id)作为主键,B表关联A表表时,
是通过A表的Id作为关联的,假如我不小心把A表的
记录删除了,重新追加记录,这是Id变了,还要更
新B表,那多麻烦啊!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章