本文所有操作都是基于mysql8.0执行的,针对mysql数据库创建表之后的约束语句的添加、删除、修改

文章目录

  • 查看建表信息
  • 实体完整性
    • 创建表时定义实体完整性
    • 创建表后添加主码
    • 创建表以后删除主码
  • 参照完整性
    • 建表时定义外码
    • 建表后定义外码
    • 删除外码
  • 用户自定义完整性
    • NOT NULL/NULL
    • DEFAULT
    • UNIQUE
    • CHECK

查看建表信息

使用语句

show create table 表名

可以查看建表信息

实体完整性

创建表时定义实体完整性

即定义主码,只需要在那个属性背后加一个primary key
举例如下:

CREATE TABLE student
(sno CHAR(10) PRIMARY KEY,sname CHAR(10),sage SMALLINT
);

创建表student,并将sno属性设置为主码
多候选码,举例如下:

CREATE TABLE SC
(sno CHAR(10) NOT NULL,cno CHAR(10) NOT NULL,grade SMALLINT,PRIMARY KEY (sno,cno));

创建表后添加主码

假设我们已经建立好了一个表,但是我们建表时忘记设置了主码
可使用命令如下来添加主码

alter table 表名 ADD CONSTRAINT 约束名 PRIMARY KEY(属性名);
约束名可以随便取

举例说明,我们将表course中的属性cno添加为了主码约束

ALTER TABLE course ADD CONSTRAINT C1 PRIMARY KEY(cno);

创建表以后删除主码

alter table 表名 DROP CONSTRAINT;

参照完整性

即定义外码

建表时定义外码

实例如下:

CREATE TABLE SC
(sno CHAR(10) NOT NULL,cno CHAR(10) NOT NULL,grade SMALLINT,FOREIGN key (sno) REFERENCES student(sno) ,FOREIGN KEY (cno) REFERENCES course(cno)
);

表SC中的属性sno、cno为外码,分别对应表student和course中的对应属性

建表后定义外码

使用命令:

ALTER TABLE 表名1 ADD CONSTRAINT 约束名 FOREIGN KEY (属性名1) REFERENCES 表名2(属性名2);
约束名可以随便取

举例如下:

ALTER TABLE course ADD CONSTRAINT c2 FOREIGN KEY (cpno) REFERENCES course(cno);

查看建表信息:

删除外码

使用命令:

ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

如果是建表时定义的外码,不知道约束名的话,可以使用命令"show create table 表名;"查看外码约束名。

同时因为在mysql8.0中外码还会以索引的形式存在,所以还要删除索引
使用命令:

DROP INDEX 约束名 ON 表名;

用户自定义完整性

以下用户完整性定义都是在建表后定义的,因为建表时定义不是很难,表建好后再定义,有些坑,所以就写一下,避免大家踩坑。

NOT NULL/NULL

添加not null,命令如下:

ALTER TABLE 表名 MODIFY 属性那一行的信息 NOT NULL;

举例:

ALTER TABLE student MODIFY sname char(10) NOT NULL;

删除同理,只要重新执行上面语句,去掉NULL或者NOT NULL就好了。

DEFAULT

命令如下:

ALTER TABLE 表名 MODIFY 属性那一行的信息 default;
举例:

ALTER TABLE student MODIFY sname char(10) NOT NULL DEFAULT 'SSS';

删除同理,只要重新执行上面语句,去掉default就好了。

UNIQUE

命令如下:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(属性名);

举例:

ALTER TABLE student ADD CONSTRAINT S1 UNIQUE(sname);

删除命令如下:

DROP INDEX 约束名 ON 表名;

接上面的例子举例:

DROP INDEX S1 ON student;

CHECK

添加命令如下:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(约束信息);

举例:

ALTER TABLE student ADD CONSTRAINT S1 CHECK(sage<25);

删除命令如下:

ALTER TABLE 表名 DROP CHECK 约束名;

接上面例子举例:

ALTER TABLE student DROP CHECK S1;

以上所有sql语句都是测试过的,应该问题不大。使用的mysql版本为8.0

mysql8.0约束性语语句(主码、外码、NOT NULL/NULL、DEFAULT、UNIQUE、CHECK)相关推荐

  1. 数据库—属性 码 候选码 主码 外码 主属性 非主属性

    问题产生:在学习第6章关系数据理论时,由于之前关于码的各种概念不熟悉,导致不理解. 资料来源:数据库系统概论–王珊 概念及举例 (1):基础定义 实体:客观存在的物体 属性:一个实体的某个特征 码:能 ...

  2. 数据库中几个基本概念 主码 外码

    主码 ,外码也可以称为主键,外键. 什么是主码,主码是一个能唯一标识一个元组的属性.在一个关系(表)中,主码不一定只有一个,但是一定要有的.因为元组,是对世界中某种事物的数据描述,而世界中各种事物,都 ...

  3. mysql 多个主码_数据库中几个基本概念 主码 外码

    [一 逻辑模型中的信息可以用三个概念来描述:(1) 实体(如果一个对象拥有许多特性和值,那么它可能是个实体)(2) 属性(如果一个对象拥有一个特性的值,那么它可能是属性) 主码 ,外码也可以称为主键, ...

  4. 从0开始搭建编程框架——主框架和源码

    一个良好的结构是"对修改关闭,对扩展开放"的.(转载请指明出于breaksoftware的csdn博客) 这个过程就像搭建积木.框架本身需要有足够的向内扩展能力以使自身有进化能力, ...

  5. mysql8.0增删改查语句_MySQL增删改查语句

    /数据表,显示表的结构) l 创建数据库 create database student l 删除数据库 drop database student l 创建数据表 create table admi ...

  6. er图主码外码怎么看_霸屏了!因为这个老师,广科er纷纷表示要转专业了

    今天广科er的朋友圈被霸屏了!!!科科发现原来同学们在疯狂刷屏的是这位有着"神仙颜值"的帅气老师!据了解,这位老师名叫陈磊 本科毕业于湖南科技学院的英语专业 研究生毕业于华侨大学的 ...

  7. 基于windows中委派的攻击思路(上)-约束性委派与非约束性委派

    文章目录 1. 前言 2. 发现具有委派关系的用户和计算机 2.1 原理 2.2 利用工具查找 1. ADFind 1.查询非约束委派的主机: 2.查询约束委派的主机 2. ldapsearch 1. ...

  8. MySQL8.0 性能优化

    MySQL性能优化就是通过合理安排资源,调整系统参数使MySQL运行更快.更节省资源.MySQL性能优化包括查询速度优化.数据库结构优化.MySQL服务器优化等. PART1 优化简介 优化MySQL ...

  9. 候选码,主码,外码,主属性,非主属性

    候选码:能唯一标识关系中的元组的一个属性或属性集. 具有唯一性:任意两个不同的元组,对应的候选码中的属性的值组成的集合都是不相等的. 具有最小性:即候选码含有的属性的个数要最少 主码:有多个候选码时, ...

最新文章

  1. SQL Server native client与sqlcmd单独安装
  2. Android onMeasure过程分析
  3. 【Visual C++】游戏开发笔记十四 游戏画面绘图(四) 华丽的CImage类
  4. linux图形化应用程序快捷方式制作方法
  5. Php和Mysql乱码问题
  6. vue锚点定位(代码通用) - 总结篇
  7. 轻松上云系列之二:其他云数据迁移至阿里云
  8. Python求解啤酒问题(携程2016笔试题)
  9. C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转
  10. 【python笔记】:python简介
  11. 1022 D进制的A+B (20 分)—PAT (Basic Level) Practice (中文)
  12. NeatUpload使用方法
  13. 深入浅出MySQL规范
  14. ArcMap通过空间连接和数据汇总实现批量统计
  15. [bzoj3998]弦论
  16. iphone12mini是双卡双待吗
  17. c#程序连接orace出现驱动程序和应用程序之间的体系结构不匹配
  18. 【洛谷题解】P1255 数楼梯
  19. 浏览DELPHI的源代码
  20. 【移动前端】需要了解的HTML5 head 头标签

热门文章

  1. Photoshop——切图小技巧
  2. 传统防火墙与Web应用程序防火墙(WAF)的区别
  3. vue-cli自动化测试karma + mocha + chai
  4. 浅谈provide与inject
  5. 如何使用Stack Overflow ?
  6. C++使用windows API实现https站点的访问
  7. 数据结构之——关键路径
  8. 怎么比较两个字符串的大小?
  9. PS如何快速使用对象选择工具抠图?
  10. 《王阳明心学营销》营销落地-知行合一