网站首页 > 文章中心 > 其它

mysql多个约束怎么写

作者:小编 更新时间:2023-11-28 12:36:19 浏览量:315人看过

SQL 如何给一个表中的一个列中添加多个约束(一个主键约束,一个检查约束),怎么写

不能这么写吧

添加完复合主键之后再添加unique约束

alter table borrow add cosntraint PK_ID primary key(Rid,bid,lenddate)--添加表级复合主键

alter table borrow add constraint CK_ID check(ID0)--添加标级check约束

你那个写法,只能在create table 时候这么写吧,我测试没有通过,只有create时候好用

create table tb(co1 int not null)

alter table tb add constraint PK_co1 primary key(co1)

mysql多个约束怎么写-图1

alter table tb add constraint CK_co1 check(co110)

drop table tb

create table tb(co1 int not null constraint PK_co1 primary key(co1) constraint CK_co1 check(co110))

mysql外键约束怎么写

土嘎嘎的粉丝们大家好朋友

①简介

外键表示一个表中的一个字段被另外一个表中的字段应用.外键对相关表中的数据造成了限制,使MySQL 能够保证参照完整性.

在MySQL 中,InnoDB 存储引擎支持外键.在一张表中,可以存在多个外键.

外键的创建可以在创建表的时候创建,也可以在创建表之后增加(考虑数据的完整性问题).

父表:外键所指向的表.

字表:相对于父表,拥有外键的表.

create 语法

create table table_name(

column_1,

....

constraint constraint_name foreign key (column_name)

references parent_table(column_name)

on delete action

on update action

constraint 子句允许为外键定义一个名称,如果不写,MySQL 自动生成一个名称

foreign key 子句指定子表中要应用父表的列.注意:MySQL 会自动创建一个基于外键的索引.

references 子句指定父表中的被引用字段.foreign key 和references 指定的列数必须相同.

on delete: 定义当父表中的记录被删除时,子表的记录应该执行的动作.action包括:

on delete restrict:(默认),父表不能删除一个已经被子表引用的记录.

on delete no action:等同与on delete restrict

on delete cascade: 级联模式,父表删除后,对应子表关联的数据也跟着被删除

on delete set null:置空模式,父表删除后,对应子表关联的外键值被设置为NULL,需要注意的是,如果子表的外键设置not null ,则不能使用这种模式,因为会相互冲突.

on update:定义父表中的记录更新时,子表的记录应该执行的动作.action 包括:

on update restrict:(默认),父表不能更新一个已经被子表引用的记录.

on update no action:等同与on delete restrict

on update cascade: 级联模式,父表更新后,对应子表关联的数据也跟着被更新

on update set null:置空模式,父表更新后,对应子表关联的外键值被设置为NULL,需要注意的是,如果子表的外键设置not null ,则不能使用这种模式.

alter 语法

-- 添加外键

alter table table_name add constraint constraint_name

foreign key column_name

-- 删除外键

alter table table_name drop constraint_name;

-- 如果没有显式的定义名字,可以使用如下命令获取

show create table table_name;

构造两张表categoryes 和products.每个类别有多种产品,而每个产品只属于一个类别.

-- 设置 类别表 categoryes 和产品表 products

create table categoryes(

c_id int not null auto_increment,

c_description text,

primary key (c_id)

create table products(

p_id int not null auto_increment,

c_id int,

primary key (p_id),

constraint fk_products_categoryes

foreign key (c_id)

references categoryes(c_id)

on delete set null

on update cascade

在这两张表的基础上,新生成一张vendors 供应商表,并更新products字段

-- 新生成一张表 供应商 vendors ,并为 products 新添加字段 v_id 外键

-- 引用 vendors.v_id

create table vendors(

v_id int not null auto_increment,

primary key (v_id)

alter table products add column v_id int not null;

alter table products add

constraint fk_products_vendors foreign key (v_id)

references vendors(v_id)

on delete no action

on update cascade;

望采纳good luck

请列举mysql中常见的约束类型

第一段:Mysql支持以下约束:

※? 主键约束 :primary key

※? 唯一性约束:unique key

※? 外键约束:foreign key

※? 非空约束:not null

※? 默认值约束:default

第二段:主键约束:

一个表只能有一个主键,当建表时忘记设置主键约束时.设置为主键的列查询速度会非常快,所以一般会用聚集索引,这个我们后面会讲到.

添加主键约束:设置myself表的age为主键

语法:alter? table 表名 add primary key;(列名)※? 可以有多个列名.

第三段:外键约束:

何为外键,当建表时需要用到另外一个表的主键作为本表的的主键时,需要设置外键.设置外间后,若想在删除本表数据时会级联删除或者默认删除其他方式.

添加外键约束:设置本表的cno为外键

语法:alter table 表名称 add foreign key (列名称)? references? 关联表名称(列名称);

第四段:非空约束:

当插入新数据时对应的列为不能空.非空约束是相对于默认值约束而说的.

添加非空约束:

语法:alter table 表名 modify 列名 列类型 not null;?

第五段:默认值约束:default:

当插入时没有插入值时,会自动插入默认值.默认值约束相对于非空约束而说.

添加默认值约束:

语法:alter table 表名 add 列名 列类型 not null default '默认值';

第六段:唯一性约束:

本列的内容只能唯一不能重复.

添加唯一约束:

语法:alter table 列名 add unique(列名称)? ※可以有多个列名称,用逗号隔开.

以上就是土嘎嘎小编为大家整理的mysql多个约束怎么写相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章