加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.cn/)- 专有云、图像技术、经验、数据治理、专属主机!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql中的约束类型

发布时间:2022-08-09 12:37:12 所属栏目:MySql教程 来源:互联网
导读:约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。 MYSQL中,常用的几种约束: primary key 主键 主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。 每个表最多只允许一个主键,建
  约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。
 
  MYSQL中,常用的几种约束:
 
   
 
  primary key 主键
    主键约束相当于   唯一约束 + 非空约束  的组合,主键约束列不允许重复,也不允许出现空值。
 
    每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。
 
    当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。
 
    
 
  复制代码
  -- 基本使用
  create table user(
      id int primary key,
      name varchar(20)
  );
 
 
  -- 删除主键约束
  alter table user drop primary key;
 
  -- 添加主键约束
  alter table user add primary key(id,name);
 
  -- 修改主键约束
  alter  table user modify id int primary key;
  复制代码
   
 
  foreign key外键
    外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系
 
  复制代码
  -- 基本使用
 
  -- 主表
  create table type(
      id int primary key,
      type varchar(20)
  );
 
  -- 副表
  create table tag(
      id int primary key,
      name varchar(20),
      type_id int,
      foreign key (type_id) references type(id)
  );
 
  -- 多列外键组合,必须用表级别约束语法
  -- 主表
  create table classes(
    id int,
    name varchar(20),
    number int,
    primary key(name,number)
  );
 
  -- 副表
  create table student(
    id int auto_increment primary key,
    name varchar(20),
    classes_name varchar(20),
    classes_number int,
    /*表级别联合外键*/
    foreign key(classes_name, classes_number) references classes(name, number)
  );
 
 
  -- 删除外键约束
  alter table student drop foreign key student_id;
 
 
  -- 增加外键约束
  alter table student add foreign key(classes_name, classes_number) references classes(name, number);
  复制代码
  unique唯一
    唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。
 
    唯一约束不允许出现重复的值,但是可以为多个null。
 
    同一个表可以有多个唯一约束,多个列组合的约束。
 
    在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。
 
    唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。
 
  复制代码
  -- 创建表时设置,表示用户名、密码不能重复
      create table user(
          id int not null ,
          name varchar(20),
          password varchar(10),
          unique(name,password)
      );
 
 
  -- 添加唯一约束
  alter table user add unique (name, password);
 
 
  -- 修改唯一约束
  alter table user modify name varchar(25) unique;
 
  -- 删除约束
  alter table user drop index name;
  复制代码
  not null非空
    非空约束 not null  与  默认值 default
 
    非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
 
    Null类型特征:
 
    所有的类型的值都可以是null,包括int、float 等数据类型
 
  复制代码
  -- 创建table表,ID 为非空约束,name 为非空约束 且默认值为abc
  create table user(
             id int not null,
             name varchar(255) not null default  'abc',
             sex char null
  );
 
 
  -- 增加非空约束
  alter table user
  modify sex varchar(2) not null;
 
  -- 取消非空约束
  alter table user modify sex varchar(2) null;
 
  -- 取消非空约束,增加默认值
  alter table user modify sex varchar(2) default 'abc' null;
  复制代码
   
 
  auto_increment自增
  create table user(
        id int auto_increment primary key,
        name varchar(255) not null ,
        sex char null
  );
  default默认值
  create table user(
        id int auto_increment primary key,
        name varchar(255) not null ,
        sex varchar(2) default '男'
  );

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读