数据库—创建表相关知识

一、用Navicat建表时enum类型的使用

在数据库表内的某个字段中,常常会出现一个属性有几个值可以选的情况,比如:字段reson选值范围’过期罚款’, ‘损坏赔偿’, ‘丢失赔偿’, ‘办证费’, ‘办证押金’。
这种情况可以用后端代码控制选值范围,同样也可以在数据库表中控制选值范围,这种情况就需要用到enum数据类型了,具体用法如下:
在这里插入图片描述
在这里插入图片描述
方法二:在这里输入可选值,选值范围确定之后,可以设置默认值
在这里插入图片描述
到这里就设置完成了

二、MySQL中的CHARSET和COLLATE关键字

CHARSET表示数据编码方式,在MySQL中可以使用命令show variables like ‘character_set_%’;查看系统默认编码集。

+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | latin1                         |
| character_set_connection | latin1                         |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | latin1                         |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8                           |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)

在我们的业务场景中因为经常会涉及到中文,常用的编码方式就是utf-8,但是在MySQL中的utf8编码其实并不是我们平时使用的utf-8编码,正确的对应编码是utf8mb4,在MySQL中utf8编码最多只能支持3 bytes长度的字符编码,对于一些需要占用4 bytes的字符使用utf8编码方式就不支持了,需要使用utf8mb4才行,这是MySQL的一个遗留问题。
如果使用的是版本8+则默认就是该编码了,不需要我们再修改了。修改MySQL默认字符集,可以在/etc/my.cnf配置文件中修改对应的编码即可,注意不同的版本修改方式可能有些不太一样。


COLLATE属性用于指定列的排序和比较方式,我们在使用ORDER BY、DISTINCT、GROUP BY等命令时都会涉及到该属性。另外我们在对表建索引时,如果索引列是字符类型,那么COLLATE属性也会影响到索引的创建。
COLLATE通常是和字符编码CHARSET相关的,每种CHARSET都对应了多种它所支持的COLLATE,并且会指定一个默认COLLATE。比如utf8mb4编码的默认COLLATE为utf8mb4_general_ci,对于中文场景来说,其实utf8mb4_unicode_ci和utf8mb4_general_ci没有什么区别。我们可以使用命令show collation;查看MySQL所支持的COLLATE。

我们会发现,很多COLLATE里面都带有_ci后缀,这是Case Insensitive的缩写,表示大小写无关。对应的_cs后缀表示大小写敏感。需要注意的是,在MySQL 8+版本中,默认的CHARSET直接改成了utf8mb4,对应的默认COLLATE也改成了utf8mb4_0900_ai_ci,这是unicode的一个细分,就相当于utf8mb4_unicode_ci。

三、常用数据类型

1、数值

INT整型4字节
FLOAT单精度浮点型4字节
DOUBLE双精度浮点型8字节

2、日期/时间

类型描述
DATE日期:YYYY-MM-DD3字节
TIME时间:HH:MM:SS3字节
YEAR年份:YYYY1字节
DATETIME日期时间:YYYY-MM-DD HH:MM:SS8字节
TIMESTAMP时间戳:YYYYMMDD HHMMSS4字节

3、字符(串)

类型描述
CHAR定长字符字符串
VARCHAR变长字符字符串
BINARY定长字节字符串
VARBINARY变长字节字符串
BLOB二进制长文本
TEXT字符长文本

※、可选特殊类型

类型描述
NOT NULL非空
UNSIGNED无符号
AUTO_INCREMENT自增
PRIMARY KEY设定主键

四、简单介绍几个存储引擎

1、MyISAM 数据存储引擎和数据列
MyISAM数据表,最好使用固定长度(CHAR)的数据列代替可变长度(VARCHAR)的数据列。

2、MEMORY存储引擎和数据列
MEMORY数据表目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系。两者都是作为CHAR类型处理的。

3、InnoDB 存储引擎和数据列(重要)
建议使用 VARCHAR类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值