MySQL-2
mysql数据类型
数值型
- 整数型
类型 | 大小 | 用途 | 范围(无符号) | 范围(有符号) |
---|---|---|---|---|
tinyint | 1B | 小整数值 | (0,255) | (-127,128) |
smallint | 2B | 大整数值 | (0,26535) | (-32768,32767) |
mediumint | 3B | 大整数值 | (0,16777215) | |
int | 4B | 大整数值 | (0,16777215) | |
bigint | 8B | 极大整数值 | (0,18446744073709551316) |
- 小数型
类型 | 大小 | 用途 |
---|---|---|
float | 4B | 单精度浮点数值 |
duoble | 8b | 双精度浮点数值 |
decimal | decimal(M,D) | 小数值 |
字符串型
类型 | 大小 | 用途 |
---|---|---|
char | 0~255B | 定长字符串 |
varchar | 0~65535B | 可变长字符串(不确定字段长度) |
tinyblob | 0~255B | 不超过255个字符的二进制字符串 |
tinytext | 0~255B | 短文本字符串 |
blob | 0~65535B | 长文本数据(文本,图像,声音)(区分大小写) |
text | 0~65535B | 长文本数据(不区分大小写) |
binary | 0~8000B | 固定长度的二进制数据 |
varbinary | 0~2GB | 可变长度的二进制数据 |
mediumblob | 0~16777215B | 二进制形式的中等长度文本数据 |
mediumtext | 0~16777215B | 中等长度文本数据 |
longblob | 0~4294967295B | 二进制形式的极大文本数据 |
longtext | 0~4294967295B | 极大文本数据 |
日期型
类型 | 大小 | 范围 | 格式 |
---|---|---|---|
date(日期值) | 4B | 1000-01-01——9999-12-31 | YYYY-MM-DD |
time(时间值) | 3B | -838:59:59'——838:59:59' | HH:MM:SS |
year(年份值) | 1B | 1901——2155 | YYYY |
datetime(混合日期和时间值) | 8B | 1000-01-01 00:00:00——9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS |
timestamp(时间戳) | 4B | 1970-01-01 00:00:00——2037年某一时刻 | YYYY-MM-DD HH:MM:SS |
MySQL 完整性约束类型
非空约束(NOT NULL)
非空性是指字段的值不能为空值(NULL)。非空约束保证所有记录中该字段都有值。为空,则会报错。
Column_name datatype not null
column_name : 列名
主键约束(primary key)
一个表通常可以通过一个字段(或多个字段组合)的数据来唯一标识表中的每一行,这个字段(或字段组合)被称为表的主键(primary key)。主键可以为表级约束,也可以为列级约束。
- 主键作为列级约束:
Column_name datatype primary key
create table text_2 (id int primary key, name varchar(10) not null );
- 主键作为表级约束
primary key (Column_name1,clolumn_name2,...)
create table text1 ( id int, name varchar(40), primary key (id) );
- 唯一性约束
所有记录中该字段的值不能重复出现。
Column_name datatype unique
create table test2 ( id int primary key, name varchar(10) not null , email varchar(20) unique);
- 自增约束(auto_increment)
auto_increment 是MySQL 数据库中一个特殊的约束条件。主要用于为表中插入新记录自动生成唯一的ID.一个表只能由一个字段使用auto_increment,且该字段必须为主键的一部分,antu_increment 约束的字段可以是任何整数类型,从1开始自增。
column_name datatype auto_increment
create table text3 ( id int primary key auto_increment, name varchar(10) not null , email varchar(20) unique );
- 默认值约束(default)
在创建表时可以指定表中字段的默认值。类似默认参数
column_name datatype default default_value
create table text4 ( id int primary key auto_increment, name varchar(10) not null , email varchar(20) unique, note varchar(50) default "duoban");
- 外键约束(foreign key)
如果表A的关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。
创建外键应满足一下几个条件
- 数据类型相同
- 长度相等
- 位于同一数据库
- 主表由主键约束或唯一约束
[constraint foreign_key_name]
foreign key (column_nameA) references table_name(column_nameB)
说明:
CONSTRAINT foreign_key_name:可选项,为定义的外键约束的名称,一个表中不能有相同名称的外键。
column_nameA: 表示子表需要添加外键约束字段列。
table_name : 被子表外键所参照的父表名称。
column_nameB: 表示父表中定义的主键列。
create table score ( cid int not null auto_increment primary key, score int, sid int, foreign key(sid) references student(sid));