打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MySQL 约束类型


原文地址

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性

MYSQL中,常用的几种约束:

约束类型:主键外键唯一非空自增默认值
关键字:primary keyforeign key

unique

not null

auto_increment

default

1、主键约束 primary key

主键约束相当于   唯一约束 + 非空约束  的组合,主键约束列不允许重复,也不允许出现空值。

每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。

当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

-- 基本模式create table temp( id int primary key,name varchar(20));-- 组合模式create table temp(id int ,name varchar(20),pwd varchar(20),primary key(id, name));-- 删除主键约束alter table temp drop primary key;-- 添加主键约束alter table temp add primary key(id,name);-- 修改主键约束alter  table temp modify id int primary key

2、外键约束 foreign key

外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系

-- 基本模式-- 主表create table temp(id int primary key,name varchar(20));-- 副表create table temp2(id int,name varchar(20),classes_id int,foreign key(id) references temp(id));-- 多列外键组合,必须用表级别约束语法-- 主表create table classes(id int,name varchar(20),number int,primary key(name,number));-- 副表create table student(id int auto_increment primary key,name varchar(20),classes_name varchar(20),classes_number int,/*表级别联合外键*/foreign key(classes_name, classes_number) references classes(name, number) );-- 删除外键约束alter table student drop foreign key student_id;-- 增加外键约束alter table student add foreign key(classes_name, classes_number) references classes(name, number);

3、 唯一约束unique

唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。

唯一约束不允许出现重复的值,但是可以为多个null。

同一个表可以有多个唯一约束,多个列组合的约束。

在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。

唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。

-- 创建表时设置,表示用户名、密码不能重复    create table temp(    id int not null ,    name varchar(20),    password varchar(10),    unique(name,password));-- 添加唯一约束alter table temp add unique (name, password);-- 修改唯一约束alter table temp modify name varchar(25) unique;-- 删除约束alter table temp drop index name;

 

4、非空约束 not null  与  默认值 default

非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

Null类型特征:

  所有的类型的值都可以是null,包括int、float 等数据类型

-- 创建table表,ID 为非空约束,name 为非空约束 且默认值为abccreate table temp(           id int not null,           name varchar(255) not null default  'abc',           sex char null);-- 增加非空约束alter table tempmodify sex varchar(2) not null;-- 取消非空约束alter table temp modify sex varchar(2) null;-- 取消非空约束,增加默认值alter table temp modify sex varchar(2) default 'abc' null;

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
MySQL 学习笔记 一
关系模型的三类完整性约束
oracle学习笔记之约束
MySQL: MySQL约束(详细、全)
mysql中key 、primary key 、unique key 与index区别
MySQL数据库实操教程(07)——表的约束
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服