Mysql中的列类型:
- 数字类型
- 字符串类型
- 布尔型
- 日期时间类型
数字类型:
1个字节=8比特,但数字里有一个比特用于符号占位
- TINYINT 占用1个字节,表示范围:-128~127
- SMALLINT 占用2个字节,表示范围:-32768~32767
- INT 占用4个字节,表示范围:-2147483648~2147483647
- BIGINT 占用4 / 8个字节,表示范围:-9223372036854775808~9223372036854775807
- FLOAT[(M,D)] 单精度浮点型,占4个字节
- DOUBLE[(M,D)] 双精度浮点型,占8个字节
- DECIMAL[(M,D)] 严格定点数,用于精确运算
M表示总有效位数,D表示小数点后有效位数
字符串类型:
\0表示一个字符串结束
- CHAR(M)
固定长度字符串,长度最大为225个字符
- VARCHAR(M)
长度可变的字符串,长度最大为65535个字符
- TEXT(M)
长度可变的字符串,长度最大到4G个字符
定长字符串可能会浪费空间,但效率较高
变长字符串不会浪费空间,但效率稍慢
面试题:CHAR(8)和VARCHAR(8)的区别
CHAR(8)输入“abc”实际存储为
“abc ”即“abc\0\0\0\0\0”
VARCHAR(8)输入“abc”实际储存为
“abc ”即“abc\0”
时间类型:
- DATE
支持的范围是1000-01-01 ~ 9999-12-31
- TIME
支持的范围是00:00:00 ~ 23:59:59
- DATETIME
支持的范围是1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
列上的约束:
Constraint:约束,列上的值往往是有限制的,如:
性别:只能取男或女
政治面貌:只能取党员、团员、群众
高考成绩:FLOADT(4,1) 取值有规则
电话、手机号码:有格式要求
用户名:必须唯一
登录密码:密码不能为空字符串且长度不能少于N位
员工所在部门:可取值必须在部门表中存在过
主键约束:
列名 类型 PRIMARY KEY
声明为“主键”的列上不能出现NULL值,且不能重复,如学生编号、商品编号。
表中所有的记录行会自动按照主键列上的值进行排序。
一个表至多只能有一个主键列。
唯一约束:
列名 类型 UNIQUE
声明为“唯一”的列上不能出现重复值,但可以出现多个NULL值。
非空约束:
列名 类型 NOT NULL
声明为“非空”约束的列上不能出现NULL,但可以重复
检查约束对于Mysql不支持
默认值约束
列名 类型 Default 值
声明为“默认值”约束的列上没有值的将会默认采用默认设置的值