数据库-数据类型及主键外键
Posted wangzhilong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库-数据类型及主键外键相关的知识,希望对你有一定的参考价值。
数值类型:整型、浮点型
字符串:
char(定长):插入数据或查询数据都很快,因为char在磁盘上插入数据的时候的存储空间是固定的,简单粗暴,直接就是定长空间,那么就不需要考虑数据的长度,所以我们在进行数据查询的时候,速度也快,因为在读取数据的时候也不需要考虑数据长度,简单粗暴的按照定长的空间来取数据,也导致以下空间的浪费。
varchar(不定长):插入和查询速度都相对较慢,因为它在内容存储数据的时候,是按照数据的长度来进行存储的,那么每次存储数据都需要计算一下数据的长度,按照长度来开辟存储空间,那么在数据的存储空间前面还要开辟1-2个字节空间长度来存储数据的长度,也就是说格式大概是长度+内容,也导致了在我们读取数据的时候,首先要先读取数据的长度,然后根据长度再读取后面的内容,导致速度较慢,但是多数情况下可以节省存储空间
日期类型:
year、date、time、datetime、timestamp
枚举类型(enumeration(‘1’,‘2’),单选)
集合类型:set(‘1‘,‘2‘,‘3‘) 多选
完整性约束:
not null:不为空
default:
unique:唯一,不允许重复
primary key:主键,唯一非空 not null + unique
必须有一个主键字段,且只能有一个
1.自动查看你所有的字段里面是否有not null + unique,如果有默认就将这个字段设置为主键字段
2.自动给你设置一个看不到的字段作为主键
atuo_increment:自增,一般加在主键后面,从1开始每次+1,可以设置步长,可以设置起始值
foreign key:外键,建立表之间关系用的
一对多:
T1 一对多 t2
T1里面的一条数据,可以对应t2表里面的多条数据
T2表里面加一个字段,t1_id
create table t2(
id int primary key auto_increment,
name char(10) not null,
sex enum(‘男‘,‘女‘) default ‘男‘ not null,
id_card char(18) not null unique
t1_id int not null,
constraint fk_t2_t1 foreign key(t1_id) refernces t1(id)
一对一:
create table t2(
id int primary key auto_increment,
name char(10) not null,
sex enum(‘男‘,‘女‘) default ‘男‘ not null,
id_card char(18) not null unique
t1_id int not null unique,
constraint fk_t2_t1 foreign key(t1_id) refernces t1(id)
多对多:
建立第三张表
t3
t3 id t1_id t2_id
以上是关于数据库-数据类型及主键外键的主要内容,如果未能解决你的问题,请参考以下文章