约束条件(CONSTRAINTS)

查看某个表的约束和索引

一、定义

对表中的数据进行限定,保证数据的正确性、有效性、和完整性。

二、分类

  • 主键约束:primary key,简称PK,数据库主键作用保证实体的完整性,可以是一个列或多列的组合。
    • 注意:
      • 非空且唯一
      • 一张表只能有一个字段为主键
      • 主键就是表中记录的唯一标识
    • 在创建表时,添加主键
      • create table stu(

id int primary key, ---id添加主键约束

name varchar(20)

);

  • 删除主键
    • alter table stu drop primary key;
  • 创建完表后,添加主键
    • alter table stu modify id int primary key;
  • 自动增长
    • 概念:如果某一列是数值类型的,使用 auto_increment 可以完成值得自动增长
    • 在创建表时,添加主键约束,并且完成主键自动增长
      • create table stu(

id int primary key auto_increment, --给主键id添加自动增长

name varchar(20) not null ---name为非空

);

  • 删除自动增长
    • alter table stu modify id int;
  • 在创建表以后添加自动增长
    • alter table stu modify id int auto_increment;

   

  • 非空约束:not null

  • 创建表时添加非空约束;
    • create table stu(

id int,

name varchar(20) not null ---name为非空

);

  • 创建表完成后,添加非空约束;
    • alter table stu modify name varchar(20) null;
  • 删除非空约束;
    • alter table stu modify name varchar(20);
  • 唯一约束:unique
    • 创建表时添加唯一约束;
      • create table stu(

id int,

photo_number varchar(20) unique

);

*注意smsql中,唯一约束限定的列的值可以有多个null

  • 创建表完成后,添加唯一 约束;
    • alter table stu modify name varchar(20) unique;
  • 删除唯一约束;
    • alter table stu drop index phone_number ;

   

  • 外键约束:foreign key

   

   

  • 在创建表时,可以添加外键
    • 语法:

create table 表名(

….

foreign key (外键名) references 主表名称(主表列名称)

);

  • 例:

create table student(

sid int auto_increment primary key not null,

sname varchar(20) not null,

score float,

clazzid int,

foreign key(clazzid) references clazz(cid)

);

  • 删除外键
    • alter table 表名 drop foreign key 外键名称;
  • 创建表之后,添加外键
    • alter table 表名 add foreign key (外键字段名称) references 主表名称(主表列名称);
  • 检查约束
    • 注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果;
    • 例如:age tinyint check(age >20) 或 sex char(2) check(sex in('男','女'))
  • Default缺省约束
    • default:默认值,在插入数据时某列如果没指定其他的值,那么会将默认值添加到新记录。
    • 如果某列已经创建好,那么可以修改列语句修改:
    • 例如:原来有默认值,去除默认值
    • 例如:原来没有默认值,增加默认值
    •  
原文地址:https://www.cnblogs.com/li330273334/p/13848676.html