SQL——SQL语句总结(3)

约束管理

数据完整性指定的是数据的一致性和正确性。

MySQL中常用六类约束:

not null : 非空约束,指定某列值不为空。 非空约束用于确保当前列的值不为空值,非空约束只能出现在对象的列上。对于使用了非空约束的字段,如果用户再添加数据时没有指定值,数据库系统会报错。格式如下:

column_name data_type not null

unique : 唯一约束,指定某列和几列组合的数据值不能重复。要求该列唯一,允许为空。格式如下:

column_name data_type unique

primary key : 主键约束,指定某列的数据不能重复、唯一且不为null。主键约束相当于唯一约束与非空约束的组合,主键约束列不允许重复,也不允许出现空值。格式如下:

column_name data_type primary key

foreign key : 外键,指定该列记录属于主表中某列的记录,参考另一条数据。外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每个外键值必须等于另一个表中主键列的某个值。外键:它是表中的一个字段,他可以不是本表的主键,但对应另外一个表的主键或唯一约束。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表既是主表。

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表既是从表。

[constraint<外键名>] foreign key (字段名1[,字段名2,...])
references <主表名> (主键列1[,主键列2,...])

注:“外键名”为定义的外键约束的名称,一个表中不能有多个相同名称的外键;

       “字段名”表示子表需要添加外键约束的字段列;

       “主表名”即被子表外键所依赖的表的名称;

       “主键列”表示主表中定义的主键列,或者主键列组合。

check : 检查,指定一个表达式,用于检验指定数据。(mysql不支持)

default : 默认约束,指定某列的默认值。格式如下:

column_name data_type default default_value

建表时添加约束

非空约束:

create table table_name (column_name data_type not null );

唯一约束:

create table table_name (column_name data_type unique);

主键约束:

create table table_name (column_name data_type primary key);

主键自增:

create table table_name (
column_name1 data_type1 primary key auto_increment,
column_name2 data_type2 not null
)auto_increment=n;

注意:column_name1 为主键,n表示自增的初始值。设置自增后,在插入数据的时候不需要给该列插入值。

非建表时操作约束

 非空约束:

--添加
alter table table_name modify column_name data_type not null

--删除
alter table table_name modify column_name data_type null

唯一约束:

--添加
alter table table_name add [constraint<约束名>] 
unique (column_name) ;
--修改
alter table table_name modify column_name data_type unique; 
--删除
alter table table_name drop index 约束名;

注:删除时必须知道约束的名字。

主键约束:

--添加
alter table table_name add [constraint<约束名>] 
primary key (column_name) ;
--修改
alter table table_name modify column_name data_type primary key; 
--删除
alter table table_name drop primary key;

外键约束:

--添加
alter table table_name add [constraint<约束名>] 
foreign key (column_name) 
references (主)table_name (column_name); 
--删除
alter table table_name drop foreign key 约束名;
原文地址:https://www.cnblogs.com/nyfq/p/13880273.html