约束是对表的强制规定

数据完成性:实体完整性、域完整性、参照完整性

实体完整性:保证表中的每一行数据在表中是唯一的

域完整性:数据库中的列必须满足某种特定的数据类型或约束。约束又分为强制域完整性越苏、限制格式或限制可能值得范围。

参照完整性:在输入/删除记录时,包含主关键字的主表 和 包含外关键字的外表

约束的分类:

完整性类型

约束类型

描述

约束对象

域完整性

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-约束相关推荐

  1. Mysql数据库---约束类型_MySQL约束类型及举例介绍

    约束 约束保证数据的完整性和一致性 约束分为表级约束和列级约束 约束类型包括:NOT NULL (非空约束),PRIMARY KEY(主键约束),UNIQUE KEY(唯一约束),DEFAULT(默认 ...

  2. mysql %用户域_MySQL运维---用户权限及管理

    一.mysql创建用户 1.创建用户 mysql> create user test@'%' identified by '123456'; 创建了用户,但是没有任何权限 Query OK,0 ...

  3. mysql怎么约束_MySQL 约束详解

    MySQL 约束详解 MySQL 中的约束是用来保证数据的完整性的机制.数据完整性一般有以下三种形式: 实体完整性:保证表中有一个主键. 域完整性:保证数据每列的值满足特定条件. 引用完整性:保证两张 ...

  4. mysql约束日期_MySQL的约束、事务、字符串、日期、数学相关及其他补充

    MySQL共有5个约束 1 主键约束 primary key(id) 2 外键约束 3 唯一约束 unique 4 非空约束 not null 5 默认约束 default 其他: auto_incr ...

  5. mysql外键约束视频教学_外键约束案例_MySQL数据库 快速入门 基础+实战 视频教程_MySQL视频-51CTO学院...

    MySQL是开源免费和功能多面的小型数据库,MySQL也是目前流行通用的关系型数据库,已经被 Oracle 收购了.随着版本更新升级,加入一些高级功能,MySQL6.x 版本也开始收费.不过本教程将使 ...

  6. mysql外键_MySQL外键约束(FOREIGN KEY)

    MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用.对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表). 外键用 ...

  7. mysql怎么添加约束成绩_mysql怎么添加约束?

    在MYSQL数据库中,建表时就可以进行对表的各项进行一些操作,例如添加主键约束或者非空约束:也可以在建表后进行添加约束和删除约束的操作.下面本篇文章就来带大家具体了解一下,希望对大家有所帮助. 什么是 ...

  8. mysql中约束性别_MySQL常见约束

    #常见约束 /* 含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性 分类:六大约束 NOT NULL:非空,用于保证该字段的值不能为空 比如姓名.学号等 DEFAULT:默认,用于 ...

  9. mysql添加构成组合约束_mysql约束汇总

    先从博客:http://blog.csdn.net/kqygww/article/details/8882990#comments中拷贝一些,然后会根据自己不断的实践与学习,补充新的知识和心得体会上来 ...

最新文章

  1. Mix3D:大规模三维场景的数据增强(3DV2021)
  2. 设置系统的viewController modal动画样式
  3. 【原创】用J-LINK烧写ARM开发板的Nor Flash
  4. 自己动手写一个印钞机 第二章
  5. Sharepoint学习笔记 –架构系列—09 Sharepoint的服务器端对象模型(Server Object Model) 1.物理对象层次结构
  6. python怎么打包_如何打包python程序
  7. PC智能自媒体高效运营管理工具
  8. MYSQL必知必会-where语句
  9. Ubuntu18.04 命令行安装PyCharm
  10. android手机视频,安卓手机视频加密软件
  11. 列举对比【智能建站 自主建站 DIY建站 傻瓜式建站 响应式建站系统哪个好?】
  12. 快速更换证件照背景颜色
  13. linux连ftp超时,ftp上传超时的一种解决方案
  14. 东师19年春计算机在线作业,东师算法分析与设计20春在线作业1【标准答案】
  15. mysql查询的金额保留两位小数_mysql查询结果单位换算后保留两位小数
  16. unity3d音频基础知识
  17. 足球比赛数据分析系统
  18. 汽油后面跟的90#、93#、95#、97#是什么意思
  19. 电子词典中鼠标取词的原理
  20. 蓝桥杯 算法训练 Cowboys 递推 动态规划

热门文章

  1. 计算机用户要以ADSL,2012年计算机一级MsOffice第三十三套练习题及答案解析
  2. python 字符串补齐
  3. Rep Loss笔记
  4. dso_loader.cc:55] Could not load dynamic library ‘cudart64_100.dll‘
  5. 英伟达开源行人生成/重识别代码
  6. Unexpected key(s) in state_dict: module.backbone.bn1.num_batches_tracked
  7. python 多进程同步通信
  8. 深度学习之自编码器AutoEncoder
  9. 58 第一个工程项目(Celery)
  10. 54 分布式任务队列Celery