SQL语句(七)实体完整性
1.实体完整性
简单的说,实体完整性就是数据库表的主码唯一且不为空。主码可以是关系的一个属性(即数据库表的一列),也可以是关系的属性组(即表格的多个列),主码可以唯一的标识元组(即数据库表的一行)。
2.实例
1. 创建表时定义列级实体完整性
①定义供应商表的实体完整性
CREATE TABLE supp(/*供应商基本表*/suppkey INTEGER CONSTRAINT supp_1 PRIMARY KEY, /*供应商编号*/name CHAR(50), /*供应商名称*/address VARCHAR(80), /*供应商地址*/nation INTEGER REFERENCES nation(nationkey),/*国家编号*/phone CHAR(30), /*供应商电话*/acctbal REAl,comment VARCHAR(101) /*备注*/
);
②定义地区表的实体完整性
CREATE TABLE regi(/*地区表*/regionkey INTEGER CONSTRAINT regi_1 PRIMARY KEY,/*地区编号*/name CHAR(25), /*地区名称*/comment CHAR(152) /*备注*/
);
2. 创建表时定义表级实体完整性
①定义供应商表的实体完整性
CREATE TABLE supp2(/*供应商基本表*/suppkey INTEGER , /*供应商编号*/name CHAR(50), /*供应商名称*/address VARCHAR(80), /*供应商地址*/nation INTEGER REFERENCES nation(nationkey),/*国家编号*/phone CHAR(30), /*供应商电话*/acctbal REAl,comment VARCHAR(101) , /*备注*/CONSTRAINT supp_2 PRIMARY KEY(suppkey)
);
②定义地区表的实体完整性
CREATE TABLE regi2(/*地区表*/regionkey INTEGER , /*地区编号*/name CHAR(25), /*地区名称*/comment CHAR(152), /*备注*/CONSTRAINT regi_2 PRIMARY KEY(regionkey)
);
3.定义表后定义实体完整性
CREATE TABLE part2(--先定义零件基本表partkey INTEGER NOT NULL, /*零件编号*/name VARCHAR(100), /*零件名称*/mfgr CHAR(50), /*制造厂*/brand VARCHAR(50), /*品牌*/type VARCHAR(25), /*零件类型*/size INTEGER, /*尺寸*/container CHAR(10), /*包装*/retailprice REAL, /*零售价格*/comment VARCHAR (23) /*备注*/
);
ALTER TABLE part2--再修改零件基本表,增加实体完整性
ADD CONSTRAINT partkey_1 PRIMARY KEY(partkey);4.主码由多个属性组成时,定义实体完整性
CREATE TABLE partsupp2(/*零件供应联系表*/partkey INTEGER ,/*零件编号*/suppkey INTEGER ,/*供应商编号*/availqty INTEGER,/*可用数量*/supplycost REAL,/*供应价格*/comment VARCHAR(199),/*备注*/PRIMARY KEY(partkey,suppkey)/*定义主码*/);5.有多个候选码时定义实体完整性
CREATE TABLE nation2(/*国家表*/nationkey INTEGER , /*国家编号*/name CHAR(25) UNIQUE, /*国家名称*/regionkey INTEGER REFERENCES region(regionkey),/*地区编号*/comment VARCHAR(152), /*备注*/CONSTRAINT nationkey_2 PRIMARY KEY(nationkey)
);6.删除实体完整性
ALTER TABLE part2
DROP CONSTRAINT partkey_1;
7.增加记录,验证实体完整性是否起到作用
SELECT *
FROM nation;INSERT
INTO nation
VALUES(40,'中华人民共和国',1,'china');
3.注意
可以使用CONSTRAINT 对实体完整性命名,方便对其修改和删除。
SQL语句(七)实体完整性相关推荐
- 命令行执行SQL语句
由于之前一直使用可视化界面执行SQL语句,对于命令行执行SQL语句比较陌生,所以,今天尝试了一下,并记录下来,与大家分享: 一.win+r进入doc窗口: 二.找到你电脑里的mysql server安 ...
- Java学习的第七周之简单的SQL语句
Java学习的第七周之简单的SQL语句 一 简单SQL语句: 1.查询表结构 desc 表名; 2.插入数据 --方式一: 默认全部插入数据INSERT INTO 表名 VALUES (值1,值2,值 ...
- sql语句统计最近七天,30天的数据, 统计当天数据总和,统计当天每小时的数据,今日金额的支出
sql语句统计最近七天的数据 SELECTdate_format( a.date, '%c.%d' ) times,b.count AS totals FROM( SELECTcurdate( ) A ...
- 第七节:EF Core调用SQL语句和存储过程
一. 查询类(FromSql) 1.说明 A. SQL查询必须返回实体的所有属性字段. B. 结果集中的列名必须与属性映射到的列名相匹配. C. SQL查询不能包含关联数据 D. 除Select以为的 ...
- mysql5.7.17 32_mysql—MySQL 5.7.17安装及基本SQL语句(第七章)
DBS ------- DataBase System 数据库系统 以关系(二维表)的方式的存储数据 记录 Record 字段/属性Column 数据库, 库 约束 Constraint 域约束:数据 ...
- mysql语句在哪编写_mysql常见问题七:编写sql语句
一.删除除了学号字段以外,其它字段都相同的冗余记录,只保留一条!(也就是要删除凤姐和田七中一条重复数据只留一条) 要求结果数据: 原始数据: CREATE TABLEtbl_students ( id ...
- Sql 语句中 IN 和 EXISTS
原文链接: (2条消息)Sql 语句中 IN 和 EXISTS 的区别及应用 - jcpp9527的博客 - CSDN博客 https://blog.csdn.net/wqc19920906/art ...
- 15000 字的 SQL 语句大全
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 链接:cnblogs.com/liuqifeng/p/914883 ...
- 数据库 sql 语句优化
目录 1.查询 SQL 尽量不要使用 select *,而是 select 具体字段 2.如果知道查询结果只有一条或者只要最大/最小一条记录,建议用 limit 1 3.应尽量避免在 where 子句 ...
- 用一个类根据Model属性生成SQL语句
想到写这个的原因是我和我的一个朋友在写一个开源项目的时候,我负责了数据库的持久化存储部分,结果他看到了我的数据库数据存储结构之后直接傻眼了,因为个人比较简单粗暴,直接把一个数据Model归档成为二进制 ...
最新文章
- poj12月其他题解(未完)
- vue.cli脚手架初次使用图文教程
- AAC音频文件时长计算
- 自定义ArcGIS JavaScript 工具条样式
- Python工程师具备哪些技能才能提升求职机率?
- 电子书下载:Illustrated C# 2012 4th
- rdd后面[]中的数字是啥意思
- OpenCV学习笔记04:在Visual Studio上使用OpenCV4.5.5
- Theano 中文文档 0.9 - 5.4 CentOS 6安装说明
- 禁用sslv3协议linux,SSLv3协议漏洞修复方法
- CentOS6.5恢复误删除的文件
- 实施ERP过程中必须注意的“后天条件”
- 相机标定-opencv
- 亲戚关系php,中国亲属关系称谓表
- 大数据相关面试题整理-带答案-难一点
- win10如果虚拟化服务器,win10虚拟化服务器配置
- 一键脚本搭建docker redis 集群(cluster)
- 极限交付:软件项目外包成功的保障
- 数字孪生智慧医院:构建三维人体监测可视化管理平台(三)
- Dell6400拆卸与维护