mysql 约束 域_MySQL-约束
约束是对表的强制规定
数据完成性:实体完整性、域完整性、参照完整性
实体完整性:保证表中的每一行数据在表中是唯一的
域完整性:数据库中的列必须满足某种特定的数据类型或约束。约束又分为强制域完整性越苏、限制格式或限制可能值得范围。
参照完整性:在输入/删除记录时,包含主关键字的主表 和 包含外关键字的外表
约束的分类:
完整性类型
约束类型
描述
约束对象
域完整性
Not null
列的值不能为空
列
Auto_increment
列值自动增加
Default
默认值
实体完整性
Primary key
主键约束,表示唯一,不能为空
行
Unique
唯一键,表示唯一,可为空
参照完整性
Foreign key
外键约束
表与表之间
1、非空约束
1)、建表时创建非空约束
Create table if not exists t3(
age char(3) not null,
Sid int comment'用户编号',
Sname varchar(10) default'无名氏'
);
插入值:
mysql> insert into t3(sid,sname) values(1001,'byd');
ERROR 1364 (HY000): Field 'age' doesn't have a default value
mysql> insert into t3(age,sid,sname) values(null,1001,'byd');
ERROR 1048 (23000): Column 'age' cannot be null
mysql> insert into t3(age,sid,sname) values(105,1001,'byd');
Query OK, 1 row affected (0.01 sec)
2)、增加非空约束
语法:alter table 表名 modify 列名 数据类型 not null;
Create table if not exists t4(
Sid int comment'用户编号',
Sname varchar(10) default'无名氏'
);
alter table t4 modify Sid int not null comment '用户编号';
3)、删除非空约束
语法:Alter table 表名 modify 列名 数据类型 null;
此处严格意义上来讲,并不是删除约束,只是修改约束
2、主键约束
一个表中只能有一个主键(或联合主键),主键约束不为空
自增序auto_increment必须随主键一起使用
Create table if not exists t6(
Sid int primary key auto_increment comment'用户编号',
Sname varchar(10) default'无名氏',
age char(3) not null
);
mysql> insert into t6(sname,age) values('BRA',26);
1)、创建联合主键约束
Create table if not exists s6(
Sid int,
Sname varchar(10) default'无名氏',
age char(3) not null,
constraint pk_s6 primary key (Sid,Sname)
);
2)、添加主键约束
语法格式:alter table 表名 add constraint 约束名 primary key(列名1,列名2,…);
alter table emp add constraint pk_emp primary key (empno,ename);
alter table emp add constraint uk_emp unique key (mgr);
3)、删除主键约束
语法:Alter table 表名 drop primary key;
Alter table emp drop primary key;
3、外键约束
1)、创建外键约束
Constraint fk_emp_dept(约束名) foreign key(列名1,列名2) references表名(列)
CREATE TABLE dept(
deptno int(2) primary key,
dname varchar(5) not null,
loc varchar(10) not null
);
CREATE TABLE emp(
Empno int(4) primary key,
ename varchar(5) not null,
deptno int(2),
constraint fk_emp_dept foreign key(deptno) references dept(deptno)
);
外键约束关联的两个表列之间,列名可以不一样
2)、添加外键约束
语法:ALTER TABLE 从表 ADD Constraint 约束名 foreign key(列名1,列名2,)references 主表(列名1,列名2)
alter table emp add constraint fk_emp_dept foreign key (deptno) references dept(deptno);
3)、删除外键约束
Alter table 表名 drop foreign key 约束名;
alter table emp drop foreign key fk_emp_dept;
在建立外键约束后,可能忘记了约束名,在navicat中可参考如下方式 查看约束名
4、唯一约束
1)、创建唯一性约束
Create table 表名(
列名 数据类型 列属性 unique,
或Constraint 约束名 unique (列名1,列名2…)
…
);
create table dept1(
deptno int(2) primary key,
dname varchar(10) not null unique,
loc varchar(10) not null);
或
create table dept1(
deptno int(2) primary key,
dname varchar(10) not null,
loc varchar(10) not null
Constraint un_dept1 unique(dname)
);
2)、添加唯一约束
Alter table 表名 add constraint 约束名 unique(列名1,列名2…);
或 Alter table 表名 modify 列名 数据类型 unique;
3)、删除唯一约束
Alter table 表名 drop key(此处为key,非unique) 约束名
说明:如果没有设置约束名,约束名与列名相同
在建立外键约束的时候,我们可能没设置约束名,但是系统会自动设置一个约束名,在navicat中可以去查看约束名
5、默认值约束
1)、创建默认值约束
Create table 表名(
列名 数据类型 列属性 default 默认值,
…
);
2)、添加默认值约束
Alter table 表名 modify 列名 数据类型 default 默认值;
例:Alter table dept1 modify dname varchar(20) default ‘无名氏’;
3)、删除默认值约束
Alter table 表名 alter 列名 drop default;
例:Alter table dept1 alter dname drop default;
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
mysql 约束 域_MySQL-约束相关推荐
- Mysql数据库---约束类型_MySQL约束类型及举例介绍
约束 约束保证数据的完整性和一致性 约束分为表级约束和列级约束 约束类型包括:NOT NULL (非空约束),PRIMARY KEY(主键约束),UNIQUE KEY(唯一约束),DEFAULT(默认 ...
- mysql %用户域_MySQL运维---用户权限及管理
一.mysql创建用户 1.创建用户 mysql> create user test@'%' identified by '123456'; 创建了用户,但是没有任何权限 Query OK,0 ...
- mysql怎么约束_MySQL 约束详解
MySQL 约束详解 MySQL 中的约束是用来保证数据的完整性的机制.数据完整性一般有以下三种形式: 实体完整性:保证表中有一个主键. 域完整性:保证数据每列的值满足特定条件. 引用完整性:保证两张 ...
- mysql约束日期_MySQL的约束、事务、字符串、日期、数学相关及其他补充
MySQL共有5个约束 1 主键约束 primary key(id) 2 外键约束 3 唯一约束 unique 4 非空约束 not null 5 默认约束 default 其他: auto_incr ...
- mysql外键约束视频教学_外键约束案例_MySQL数据库 快速入门 基础+实战 视频教程_MySQL视频-51CTO学院...
MySQL是开源免费和功能多面的小型数据库,MySQL也是目前流行通用的关系型数据库,已经被 Oracle 收购了.随着版本更新升级,加入一些高级功能,MySQL6.x 版本也开始收费.不过本教程将使 ...
- mysql外键_MySQL外键约束(FOREIGN KEY)
MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用.对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表). 外键用 ...
- mysql怎么添加约束成绩_mysql怎么添加约束?
在MYSQL数据库中,建表时就可以进行对表的各项进行一些操作,例如添加主键约束或者非空约束:也可以在建表后进行添加约束和删除约束的操作.下面本篇文章就来带大家具体了解一下,希望对大家有所帮助. 什么是 ...
- mysql中约束性别_MySQL常见约束
#常见约束 /* 含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性 分类:六大约束 NOT NULL:非空,用于保证该字段的值不能为空 比如姓名.学号等 DEFAULT:默认,用于 ...
- mysql添加构成组合约束_mysql约束汇总
先从博客:http://blog.csdn.net/kqygww/article/details/8882990#comments中拷贝一些,然后会根据自己不断的实践与学习,补充新的知识和心得体会上来 ...
最新文章
- Mix3D:大规模三维场景的数据增强(3DV2021)
- 设置系统的viewController modal动画样式
- 【原创】用J-LINK烧写ARM开发板的Nor Flash
- 自己动手写一个印钞机 第二章
- Sharepoint学习笔记 –架构系列—09 Sharepoint的服务器端对象模型(Server Object Model) 1.物理对象层次结构
- python怎么打包_如何打包python程序
- PC智能自媒体高效运营管理工具
- MYSQL必知必会-where语句
- Ubuntu18.04 命令行安装PyCharm
- android手机视频,安卓手机视频加密软件
- 列举对比【智能建站 自主建站 DIY建站 傻瓜式建站 响应式建站系统哪个好?】
- 快速更换证件照背景颜色
- linux连ftp超时,ftp上传超时的一种解决方案
- 东师19年春计算机在线作业,东师算法分析与设计20春在线作业1【标准答案】
- mysql查询的金额保留两位小数_mysql查询结果单位换算后保留两位小数
- unity3d音频基础知识
- 足球比赛数据分析系统
- 汽油后面跟的90#、93#、95#、97#是什么意思
- 电子词典中鼠标取词的原理
- 蓝桥杯 算法训练 Cowboys 递推 动态规划
热门文章
- 计算机用户要以ADSL,2012年计算机一级MsOffice第三十三套练习题及答案解析
- python 字符串补齐
- Rep Loss笔记
- dso_loader.cc:55] Could not load dynamic library ‘cudart64_100.dll‘
- 英伟达开源行人生成/重识别代码
- Unexpected key(s) in state_dict: module.backbone.bn1.num_batches_tracked
- python 多进程同步通信
- 深度学习之自编码器AutoEncoder
- 58 第一个工程项目(Celery)
- 54 分布式任务队列Celery