mysql 第二章 建库建表规范
一. 数据类型
1.整数
tinyint
int
2.字符串
char(100)
定长字符串类型,不管字符串长度多长,都立即分配100个字符长度的存储空间,未占满的空间使用"空格"填充
注:char 最长255
varchar(100)
变长字符串类型,每次存储数据之前,都要先判断一下长度,按需分配此盘空间.
会单独申请一个字符长度的空间存储字符长度(少于255,如果超过255以上,会占用两个存储空间)
注:varchar 最长65533
注: 如何选择这两个数据类型?
少于255个字符串长度,定长的列值,选择char
多于255字符长度,变长的字符串,可以选择varchar
三. 建库规范
1 .库名不能大写,库名不能以数字开头,不能是数据库内部的关键字,要使用于业务有关的名称
2. 必须设置字符集,推荐utf8mb4字符集,1个字符占用4个字节,修改数据库字符集,一定是从小往大了改,比如utf8--->utf8mb4(目标字符集一定是源字符集的严格超级.)
3. 设置 排序规则: collation(建库时不写则默认)
对于英文字符串的,大小写的敏感
utf8mb4_general_ci 大小写不敏感
utf8mb4_bin 大小写敏感(存拼音,日文)
注:建库语句:
CREATE DATABASE zabbix CHARSET utf8mb4 COLLATE utf8mb4_bin;
四. 表的内部关键字
PRIMARY KEY : 主键约束,表中只能有一个,非空且唯一,只能创建一个,就是索引
AUTO_INCREMENT : 自增长的列,配合主键列
NOT NULL : 非空约束,不允许空值
UNIQUE KEY : 唯一键约束,不允许重复值 unique
DEFAULT : 一般配合 NOT NULL 一起使用.
UNSIGNED : 无符号,一般是配合数字列,非负数
COMMENT : 注释
五. 建表规范*****
1.表名不能大写,表名不能以数字开头,不能是数据库内部的关键字,要使用于业务有关的名称
2. 选择合适的数据类型及长度, enum类型,只保存字符串类型,不要保存数字
3. 主键列尽量是无关列数字列,最好是自增长,(无关就是和其他无关系)
4. 每个列设置 NOT NULL + DEFAULT .对于数据0填充,对于字符使用有空格串填充
5. 表必须设置存储引擎和字符集,每个列设置注释
注: 样例
CREATE TABLE stu (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '学号',
sname VARCHAR(255) NOT NULL COMMENT '姓名',
age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',
gender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性别',
intime DATETIME NOT NULL DEFAULT NOW() COMMENT '入学时间'
)ENGINE INNODB CHARSET utf8mb4;