mysql8.0约束性语语句(主码、外码、NOT NULL/NULL、DEFAULT、UNIQUE、CHECK)
本文所有操作都是基于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)相关推荐
- 数据库—属性 码 候选码 主码 外码 主属性 非主属性
问题产生:在学习第6章关系数据理论时,由于之前关于码的各种概念不熟悉,导致不理解. 资料来源:数据库系统概论–王珊 概念及举例 (1):基础定义 实体:客观存在的物体 属性:一个实体的某个特征 码:能 ...
- 数据库中几个基本概念 主码 外码
主码 ,外码也可以称为主键,外键. 什么是主码,主码是一个能唯一标识一个元组的属性.在一个关系(表)中,主码不一定只有一个,但是一定要有的.因为元组,是对世界中某种事物的数据描述,而世界中各种事物,都 ...
- mysql 多个主码_数据库中几个基本概念 主码 外码
[一 逻辑模型中的信息可以用三个概念来描述:(1) 实体(如果一个对象拥有许多特性和值,那么它可能是个实体)(2) 属性(如果一个对象拥有一个特性的值,那么它可能是属性) 主码 ,外码也可以称为主键, ...
- 从0开始搭建编程框架——主框架和源码
一个良好的结构是"对修改关闭,对扩展开放"的.(转载请指明出于breaksoftware的csdn博客) 这个过程就像搭建积木.框架本身需要有足够的向内扩展能力以使自身有进化能力, ...
- mysql8.0增删改查语句_MySQL增删改查语句
/数据表,显示表的结构) l 创建数据库 create database student l 删除数据库 drop database student l 创建数据表 create table admi ...
- er图主码外码怎么看_霸屏了!因为这个老师,广科er纷纷表示要转专业了
今天广科er的朋友圈被霸屏了!!!科科发现原来同学们在疯狂刷屏的是这位有着"神仙颜值"的帅气老师!据了解,这位老师名叫陈磊 本科毕业于湖南科技学院的英语专业 研究生毕业于华侨大学的 ...
- 基于windows中委派的攻击思路(上)-约束性委派与非约束性委派
文章目录 1. 前言 2. 发现具有委派关系的用户和计算机 2.1 原理 2.2 利用工具查找 1. ADFind 1.查询非约束委派的主机: 2.查询约束委派的主机 2. ldapsearch 1. ...
- MySQL8.0 性能优化
MySQL性能优化就是通过合理安排资源,调整系统参数使MySQL运行更快.更节省资源.MySQL性能优化包括查询速度优化.数据库结构优化.MySQL服务器优化等. PART1 优化简介 优化MySQL ...
- 候选码,主码,外码,主属性,非主属性
候选码:能唯一标识关系中的元组的一个属性或属性集. 具有唯一性:任意两个不同的元组,对应的候选码中的属性的值组成的集合都是不相等的. 具有最小性:即候选码含有的属性的个数要最少 主码:有多个候选码时, ...
最新文章
- SQL Server native client与sqlcmd单独安装
- Android onMeasure过程分析
- 【Visual C++】游戏开发笔记十四 游戏画面绘图(四) 华丽的CImage类
- linux图形化应用程序快捷方式制作方法
- Php和Mysql乱码问题
- vue锚点定位(代码通用) - 总结篇
- 轻松上云系列之二:其他云数据迁移至阿里云
- Python求解啤酒问题(携程2016笔试题)
- C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转
- 【python笔记】:python简介
- 1022 D进制的A+B (20 分)—PAT (Basic Level) Practice (中文)
- NeatUpload使用方法
- 深入浅出MySQL规范
- ArcMap通过空间连接和数据汇总实现批量统计
- [bzoj3998]弦论
- iphone12mini是双卡双待吗
- c#程序连接orace出现驱动程序和应用程序之间的体系结构不匹配
- 【洛谷题解】P1255 数楼梯
- 浏览DELPHI的源代码
- 【移动前端】需要了解的HTML5 head 头标签