文章目录
一、用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类型。