枚举与集合类型 约束条件

枚举与集合类型

  枚举(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 初始化表 会重置主键














 

转载于:https://www.cnblogs.com/lddragon/p/11380616.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值