数据库-数据类型及主键外键

数值类型:整型、浮点型

字符串:

char(定长):插入数据或查询数据都很快,因为char在磁盘上插入数据的时候的存储空间是固定的,简单粗暴,直接就是定长空间,那么就不需要考虑数据的长度,所以我们在进行数据查询的时候,速度也快,因为在读取数据的时候也不需要考虑数据长度,简单粗暴的按照定长的空间来取数据,也导致以下空间的浪费。

varchar(不定长):插入和查询速度都相对较慢,因为它在内容存储数据的时候,是按照数据的长度来进行存储的,那么每次存储数据都需要计算一下数据的长度,按照长度来开辟存储空间,那么在数据的存储空间前面还要开辟1-2个字节空间长度来存储数据的长度,也就是说格式大概是长度+内容,也导致了在我们读取数据的时候,首先要先读取数据的长度,然后根据长度再读取后面的内容,导致速度较慢,但是多数情况下可以节省存储空间

日期类型:

year、date、time、datetime、timestamp

枚举类型(enumeration(‘1’,‘2’),单选)

集合类型:set('1','2','3') 多选

完整性约束:

not null:不为空

扫描二维码关注公众号,回复: 5005531 查看本文章

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

猜你喜欢

转载自www.cnblogs.com/wangzhilong/p/10297130.html