1.常见的四种数据类型
1.1 整型
整数类型 | 字节 | 范围 |
---|
Tinyint | 1 | 有符号: -128~127 /无符号:0~255 |
Smallint | 2 | 有符号:-32768~32767 /无符号:0~65535 |
Mediumint | 3 | 有符号:-8388608~8388607 /无符号0~1677215 |
Int/integer | 4 | 有符号:-2147483648~2147483647 /无符号:0~4294967295 |
Bigint | 8 | 有符号:-9223372036854775808~92233720236854775807 |
如何设置无符号类型?
create table tab_test(
t1 int unsigned
t2 int
);
1.2 浮点型
浮点数类型 | 字节 |
---|
float | 4 |
double | 8 |
定点型 | 字节 |
DEC(M,N) | M+2 |
M为小数点前的位数+小数点后的位数,N为小数点后的位数
DEC默认的精度为(10,0)
1.3 字符型
字符串类型 | 最多字符数 | 描述 |
---|
char(M) | M | M为0~255之间的整数,可以省略,默认为1 |
varchar(M) | M | M为0~255之间的整数 |
区别:
char为定长度字符
varchar为可变长度字符
1.4 日期型
日期和时间类型 | 字节 | 最小值 | 最大值 |
---|
date | 4 | 1000-01-01 | 9999-12-31 |
datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 00:00:00 |
timestamp | 4 | 19700101 080001 | 2038的某一时刻 |
time | 3 | -838:59:59 | 838:59:59 |
year | 1 | 1901 | 2155 |
timestamp和实际时区有关,更能反映出实际的日期,而datetime则反映出插入时的当地时区;
2. 约束字段
约束字段 | | 解释 |
---|
NOT NULL | 非空约束 | 用于保证该字段不能为空 |
DEFAULT | 默认约束 | 保证该字段由默认值 |
PRIMARY KEY | 主键 | 保证该字段非空且唯一 |
UNIQUE | 唯一约束 | 保证字段唯一,但是可以为空 |
CHECK | 检查约束 | MYSQL中不支持 |
FOREIGN KEY | 外键约束 | 用于保证该字段的值必须来自主表关联列的值 |
2.1 创建表时添加约束
create table studuent(
studentId int primary key,
name varchar(20) not null unique,
age int default 18,
gender varchar(1) check(gender='男' or gender ='女')
seatId int unique
);
2.2 修改表时添加列级约束
alter table student modify column gender char(6) not null;
2.3 修改表时添加表级约束
alter table student add not null (gender);