MySQL-第三篇SQL语句基础(2)数据库约束

1、数据库约束。

    约束是在表上强制执行的数据校验规则,约束主要用于保证数据库里数据的完整性。

    MySQL使用information_schema数据库里的TABLE_CONSTRAINTS表来保存该数据库实例中的所有约束信息。

2、常见的数据库完整性约束:

   1》NOT NULL:非空约束。

   2》UNIQUE:唯一约束,指定某些列(一个或者多个)或者几列的组合不能重复。

   3》PRIMARY KEY:主键约束,指定某列的值可以唯一地标识该条记录。

   4》FOREIGN KEY:外键约束,指定该行记录从属于主表中的某一条记录(如某字段的字段值必须是主表某字段存在的值),主要用于保证参照完整性。

   5》CHECK:检查,指定一个布尔表达式,用于指定对应列的值必须满足该表达式。(MySQL不支持这种约束,即使MySQL语句中可以使用CHECK约束,但约束并不会起效)

3、约束也是数据库对象,被存储在数据字典(系统表)中。根据约束对数据列的限制,约束分为以下两类:

   1》单列约束:每个约束只约束一列。

   2》多列约束:每个约束可以约束多个数据列。

4、指定约束的两个时机:

   1》建表的同时为相应的数据列指定约束。

   2》建表后创建,以修改表的方式来增加约束。

   大部分约束都可以采用列级约束语法或者表级约束语法。

5、常见的5种约束详解

   1》NOT NULL约束

      只能作为列级约束使用,只能使用列级约束语法定义。

      SQL中的null不区分大小写,所有数据类型都可以是null,空字符串不等于null,0不等于null,null也不等于null。

   2》UNIQUE约束

      指定某些列(一个或者多个)或者几列的组合不能重复(但可以出现多个null值,因为null也不等于null)。

      当为某列创建唯一约束时,MySQL会为该列相应地创建唯一索引。如果不给唯一约束起名,该唯一约束默认与列名相同。

      唯一约束既可以使用列级约束语法建立,也可以使用表级约束语法建立。如果需要为多列建组合唯一约束,或者需要为唯一约束指定约束名,则只能用表级约束语法。

      表级约束语法格式:该约束语法格式既可以放在create table语句中与列定义并列,也可以放在alter table语句中使用add关键字来添加约束。

[constraint 约束名] 约束定义

      例子:

create table emp
(
  e_name varchar(255);
  e_pass varchar(255);
  --使用表级约束语法建立唯一约束
  unique (e_name),
  --使用表级约束语法建立唯一约束,而且指定约束名
  constraint un_emp_pass unique(e_pass)
);

猜你喜欢

转载自www.cnblogs.com/ZeroMZ/p/11367552.html
今日推荐