`
网盛数新
  • 浏览: 10999 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据应用达人之SQL基础教程分享4-键的约束

阅读更多

键的约束

5、主键约束

【知识点介绍】

在第一章的数据库里我们就提到过主键,SQL也不例外。
SQL里的主键是表里的一个或多个用于实现唯一性标记的列(字段),主键是在创建表的时候指定的。
以我们创建的Student表为例,我们将ID设置为主键:

CREATE TABLE Student
(
ID INT NOT NULL PRIMARY KEY,
SName VARCHAR(25) NOT NULL,
Sex VARCHAR(10),
Major VARCHAR(20),
Credit INT
);

-- 或者

CREATE TABLE Student
(
ID INT NOT NULL,
SName VARCHAR(25) NOT NULL,
Sex VARCHAR(10),
Major VARCHAR(20),
Credit INT,
PRIMARY KEY (ID)
);

 


之所以那ID做为主键,说明ID可以作为唯一标识,因为每个人的ID都是不同的值。这样可以确保Student表里数据的准确性和一致性,通过ID就可以完整的表达(展示)出每一行的数据。

6、唯一性约束

【知识点介绍】

UNIQUE,即唯一性约束,要求表里的某一列的值在每一行都是唯一的,这一点和主键约束是类似的。
UNIQUE的用法和主键类似,以Student学生表为例:

CREATE TABLE Student
(
ID INT NOT NULL UNIQUE,
SName VARCHAR(25) NOT NULL,
Sex VARCHAR(10),
Major VARCHAR(20),
Credit INT
);

-- 或者

CREATE TABLE Student
(
ID INT NOT NULL,
SName VARCHAR(25) NOT NULL,
Sex VARCHAR(10),
Major VARCHAR(20),
Credit INT,
UNIQUE (ID)
);

 

例子只是为了说明UNIQUE的用法,没有实际意义,供参考而已。

当然,主键约束和唯一性约束直接也有很多不同点:
·唯一性约束的列允许值为NULL,但主键不允许;
·唯一性约束可以设置多个列,但它们不会被当做主键使用;
·一般情况下,一个表里可以有多个唯一性约束,但只有一个主键(当然也可以有多个列或字段来组成一个组合主键);
·主键还有一个关键的作用,就是被外键引用。

所以,我们就来了解下外键吧。

7、外键约束

【知识点介绍】

什么是外键?外键实际上是基于主键才存在的,在表1中存在的主键,在表2中也存在,则它便成了表2的一个外键。

换一种描述,即一个表中的 外键FOREIGN KEY 是指向另一个表中的主键 PRIMARY KEY的,实际上有点子类继承父类的意思。

我们举例说明,假设我们还有一个表FinanceStu(金融专业学生表),它有ID、SName、Class(班级)等列,该表的ID是自身的主键,且又是对Student的外键:

CREATE TABLE FinanceStu
(
ID INT NOT NULL,
SName VARCHAR(25) NOT NULL,
Sex VARCHAR(10),
Class VARCHAR(10),
Credit INT,
PRIMARY KEY (ID),
FOREIGN KEY (ID) REFERENCES Student(ID)
);

 

所以我们可以把Student看成父表,而FinanceStu则是基于Student的子表。如果我们把父表里的ID删除,则子表里的ID也会被删除,这就是之前更新表、删除表里提到的关联和约束了,这也是为什么我们一强调说,在设计表时要考虑周全的一个重要原因。

8、CHECK约束

【知识点介绍】

CHECK约束是用来规定列的取值范围的,它可以规定一个列的取值范围,也可以规定多个列的取值范围:

CHECK (列 规定)
-- 对一个列进行CHECK约束

CONSTRAINT 约定名 CHECK (列1 规定,列2 规定,列3 规定)
-- 对一个或多个列进行CHECK约束

 

例如我们要把Student表中的ID做个CHECK约束,要求它的取值不能低于20160000,Credit不能低于0(但允许是空的),我们可以这样写:

CREATE TABLE Student
(
ID INT NOT NULL,
SName VARCHAR(25) NOT NULL,
Sex VARCHAR(10),
Major VARCHAR(20),
Credit INT,
CONSTRAINT mycheck CHECK (ID > 20160000,Credit > 0)
);

 

有了这样的约束之后,我们在添加修改行数据的时候,就需要遵循这个约束了。

9、小结

【知识点介绍】

我们在这几节介绍了一些操作表的SQL语句,使用CREATE TABLE用来创建新表, ALTER TABLE用来更改表列对象, 而 DROP TABLE可以用来完整地删除一个表。
但我们要注意,这些语句我们必须小心使用,并且在使用时应该做好备份工作。
由于这些语句在不同数据库管理系统(DBMS)中语法都会有所区别,更多详细的信息大家不妨可以去查询相对应的一些DBMS文档。

另外关于键(列)的约束,约束看起来是比较简单的,但它对数据库表的完整性、关联性起着至关重要的作用。

 

下文待续。。。。。。

 

欢迎大家前往访问我们的官网:

http://www.datanew.com/datanew/homepage

http://www.lechuangzhe.com/homepage

分享到:
评论

相关推荐

    2023年全国计算机一级理论题汇总.pdf

    2023年全国计算机一级理论题汇总.pdf

    2023年计算机组成与维护教程题库及答案.pdf

    2023年计算机组成与维护教程题库及答案.pdf

    基于SSM+JSP的二手交易平台网站+数据库(Java毕业设计,包括源码,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

    【人机交互】MATLAB图像去雾系统.zip

    【人机交互】MATLAB图像去雾系统

    Java毕业设计-基于SpringBoot+Vue+MySql的智能推荐点餐系统(1)(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    Java毕业设计-SpringBoot+Vue的藏区特产销售平台(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    以STM32F103C8T6为主控,使用PID算法,控制TB6612FNG电机驱动模块驱动直流减速电机(带AB相编码器),实现任意设定的恒定转速动态控制,设置4个按键,实现电机的加速、减速、正转、反转

    以STM32F103C8T6为主控,使用PID算法,控制TB6612FNG电机驱动模块驱动直流减速电机(带AB相编码器),实现任意设定的恒定转速动态控制,设置4个按键,实现电机的加速、减速、正转、反转;类似汽车的定速巡航功能,将转速恒定在固定转速值。内部涉及技术模块有OLED屏的驱动显示、定时器中断使用、PID算法、定时器编码器设置、按键扫描检测、TB6612FNG驱动模块的控制。同时包含已验证的PDF原理图。

    Java毕业设计-SpringBoot+Vue的学生就业管理系统(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    NSCBx1.0.1b Keys19.0.0.zip

    NSCBx1.0.1b Keys19.0.0.zip

    Delphi 12.3控件之Basic.rar

    Delphi 12.3控件之Basic.rar

    2024毕业论文.zip

    2024年本科毕业论文相关资料。。。。。。。

    基于SpringBoot+Vue的逍遥大药房管理系统(Java毕业设计,包括源码、数据库、教程).zip

    Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    Java毕业设计-SpringBoot+Vue的书籍学习平台(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    Java毕业设计-SpringBoot+Vue的桥牌计分系统(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    springboot基于vue的MOBA类游戏攻略分享平台 LW PPT.zip

    ava项目springboot基于springboot的课程设计,包含源码+数据库+毕业论文

    Java毕业设计-SpringBoot+Vue的口腔管家平台(附源码,数据库).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    2024年中国网约车聚合型平台发展分析报告.docx

    2024年中国网约车聚合型平台发展分析报告

    Java毕业设计-SpringBoot+Vue的大学生体质测试管理系统(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    联邦基金有效利率历史数据.xlsx

    美联储在2024年9月18日宣布将其调50个基点,降至4.75%至5.00%之间的水平。这是美联储自2020年3月以来首次降息,也是自2023年7月将利率水平调升至历史高位后的首次下调,标志着货币政策由紧缩周期向宽松周期的转向 数据名称:美国联邦基金有效利率、目标利率历史数据 样本数量:12667条 数据年份:1990.1-2024.9 数据说明:包括有效利率、目标利率 更新日期:2024年9月

    基于SpringBoot+Vue的java学习平台 (2)(Java毕业设计,包括源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

Global site tag (gtag.js) - Google Analytics