数据库—创建表相关知识

文章目录

一、用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-DD 3字节
TIME 时间:HH:MM:SS 3字节
YEAR 年份:YYYY 1字节
DATETIME 日期时间:YYYY-MM-DD HH:MM:SS 8字节
TIMESTAMP 时间戳:YYYYMMDD HHMMSS 4字节

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类型。

上一篇:对于MySQL远程连接中出现的一个问题总结


下一篇:【转载】MSSQL汉字首字母查询处理自定义函数