SQL 约束有哪几种并解释含义?

 SQL约束(Constraints)主要用于规定表中的数据规则,如果存在违反约束的数据行为,行为被约束终止。约束可以在创建表时规定(通过CREATE TABLE语句),或者在表创建之后规定(通过ALTER TABLE语句)。

在SQL中,有如下约束:

  • NOT NULL -指示某列不能存储NULL值
  • UNIQUE-保证某列的每行必须具有唯一的值
  • PRIMARY KEY-NOT NULL和UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速的找出表中的一个特定的记录
  • FOREIGN KRY-保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK-保证列中的值符合指定的条件
  • DEFAULT-规定没有给列赋值时的默认值。

 在默认的情况下,表的列接受 NULL 值。但是,NOT NULL 约束强制列不接受 NULL 值 ,并且强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

 其次,UNIQUE 约束唯一标识数据库表中的每条记录。它和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证,并且PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束,但是我们要注意的是,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

举例在表创建之后规定约束:

#一共有五种约束:这里以学生表stuinfo为例
#1、添加主键约束
alter table stuinfo add costraint pk_stuno primary key (stuno)
#2、唯一约束
alter table stuinfo add constraint uq_stuid unique (stuid)
#3、添加默认约束
alter table stuinfo add constraint df_address default ('地址不详') for address
#4、添加检查约束
alter table stuinfo add constraint ck_age check (age between 15 and 40) 
#这时年龄在15到40之间
#5、添加外键约束
alter table stumarks add constraint fk_stuno foreign key (stuno) references stuinfo (stuno)
#这是一个成绩表(stumarks)引用学生信息表中的列-学号

你可能感兴趣的:(MySQL,Python)