枚举与集合类型 约束条件

Posted lddragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举与集合类型 约束条件相关的知识,希望对你有一定的参考价值。

枚举与集合类型

  枚举(enum) 限制某个字段能够存储的数据内容
  集合(set) 限制某个字段能够存储的数据内容

create table user(
      id int,
    name char(16),
    gender enum(male,female,others)
  );

  insert into user values(1,jason,xxx)  # 报错
  insert into user values(2,egon,female)  # 正确!
  
  
  create table teacher( 
    id int,
    name char(16),
    gender enum(male,female,others),
    hobby set(read,sleep,sanna,dbj)
  );
  insert into teacher values(1,egon,male,read,sleep,dbj)  # 集合也可以只存一个

 

约束条件

not null 不能为空
default 给某个字段设置默认值(当用户写了的时候用用户的,当用户没有写就用默认值)
create table t17(id int,name char(16) default ‘jason‘);

往表中插入数据的时候 可以指定字段进行插入 不需要全部都插
insert into t17(name,id) values(‘egon‘,2);

 

unique 唯一
单列唯一 限制某一个字段是唯一的
联合唯一(在语句的最后 用括号的形式 表示哪几个字段组合的结果是唯一的)
ip
port

  create table server(
  id int,
  ip char(16),
  port int,
  unique(ip,port)
  )

primary key 主键
限制效果跟 not null + unique 组合效果一致 非空且唯一

create table t18(id int primary key);


primary key也是innodb引擎查询必备的索引
索引你就把当成书的目录

innodb引擎在创建表的时候 必须要有一个主键
当你没有指定主键的时候
1.会将非空切唯一的字段自动升级成主键
2.当你的表中没有任何的约束条件 innodb会采用自己的内部默认的一个主键字段
该主键字段你在查询时候是无法使用的
查询数据的速度就会很慢
类似于一页一页的翻书

create table t19(
id int,
name char(16),
age int not null unique,
addr char(16) not null unique
);

主键字段到底设置给谁呢???
通常每张表里面都应该有一个id字段
并且应该将id设置为表的主键字段

联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键!!!
!!!!!!!!!!!!!!!!!ps:innodb引擎中一张表有且只有一个主键!!!!!!!!!!!!!!!!!!!!!!!



create table t20(
ip char(16),
port int,
primary key(ip,port)
);
desc t20;


主键字段应该具备自动递增的特点
每次添加数据 不需要用户手动输入
auto_increment 自动递增
create table t21(id int primary key auto_increment,name varchar(16));

create table t22(id int primary key,name varchar(16));


delete from 仅仅是删除数据 不会重置主键
truncate 初始化表 会重置主键














 

以上是关于枚举与集合类型 约束条件的主要内容,如果未能解决你的问题,请参考以下文章

3 日期类型/字符类型/枚举类型/集合类型/约束条件

数据库之数据类型约束条件

数据库之数据类型约束条件

02 字段类型和约束条件

Mysql 字段类型与约束条件

存储引擎数据类型约束条件