实现SQL server数据库完整性

1.创建一个数据库名为“erp”

  1. 主数据文件:初始容量为5MB,最大容量为50MB,递增量为1MB,其余参数自设。
  2. 事务日志文件:初始容量为3MB,最大容量为20MB,递增量为10%,其余参数自设。

创建的数据库如下:

二、在erp数据库下创建两个表:

  • 创建“erp” 数据库

首先建立一个“新建查询”然后在“新建查询”的页面写入以下代码后点击执行:

CREATE DATABASE [erp]

 CONTAINMENT = NONE

 ON  PRIMARY 

( NAME = N'erp', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\erp.mdf' , SIZE = 8192KB , MAXSIZE = 51200KB , FILEGROWTH = 1024KB )

 LOG ON 

( NAME = N'erp_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\erp_log.ldf' , SIZE = 3072KB , MAXSIZE = 20480KB , FILEGROWTH = 10%)

 WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF

GO

代码执行完成后erp表建立完成,点击刷新即可看到

二、在“erp”数据库下创建表请注意完整性的设计

(1)创建“部门表”

首先建立一个“新建查询”然后在“新建查询”的页面写入以下代码后点击执行:

USE [erp]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[C](

[CNO] [nchar](10) NOT NULL,

[CNAME] [varchar](30) NOT NULL,

[CNumber] [int] NULL,

 CONSTRAINT [PK_C] PRIMARY KEY CLUSTERED 

(

[CNO] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

  1. 创建“职工表”

首先建立一个“新建查询”然后在“新建查询”的页面写入以下代码后点击执行:

CREATE TABLE [dbo].[S](

[SNO] [char](6) NOT NULL,

[Sname] [varchar](30) NOT NULL,

[Sex] [char](2) NULL,

[Sphone] [int] NOT NULL,

[Sadress] [varchar](50) NULL,

[CNO] [char](10) NULL,

 CONSTRAINT [PK_S] PRIMARY KEY CLUSTERED 

(

[SNO] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],

 CONSTRAINT [IX_S] UNIQUE NONCLUSTERED 

(

[Sphone] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[S] ADD  CONSTRAINT [DF_S_Sex]  DEFAULT ('男') FOR [Sex]

GO

ALTER TABLE [dbo].[S]  WITH CHECK ADD  CONSTRAINT [CK_S] CHECK  (([Sex]='男' OR [Sex]='女'))

GO

ALTER TABLE [dbo].[S] CHECK CONSTRAINT [CK_S]

GO

执行后生成的页面属性:

三、请插入记录验证完整性。

1. 正确插入数据

(1)部门表(3条记录)

点击“新建查询”建立一新的页面输入一下代码对所需数据进行插入:

use erp

INSERT INTO A(CNO, Cname, Cnumber )

VALUES('S4', '文员', '50')

INSERT INTO A(CNO, Cname, Cnumber )

VALUES('S5', '董事', '12')

INSERT INTO A(CNO, Cname, Cnumber )

VALUES('S6', '金融操盘手','30')

代码输入后点击执行将数据插入到表A中去,然后用代码

use erp

select * from A

对表里数据进行查询结果如下:

  1. 职工表(3条记录)

点击“新建查询”建立一新的页面输入一下代码对所需数据进行插入:

use erp

INSERT INTO S(SNO, Sname, Sex,Sphone,Sadress,CNO )

VALUES('I1', '空心木偶', '男','13071603','广东茂名','S1')

INSERT INTO S(SNO, Sname, Sex,Sphone,Sadress,CNO )

VALUES('I2', '小红', '女','13071604','广东深圳','S2')

INSERT INTO S(SNO, Sname, Sex,Sphone,Sadress,CNO )

VALUES('I3', '小梓', '男','13071605','广东广州','S3')

代码输入后点击执行将数据插入到表A中去,然后用代码

use erp

select * from S

2. 完整性验证

(1)违反“部门表”的PRIMARY KEY约束

由前面可以知道“部门号”是表A的主键,可以使用INSERT语句插入在表A中添加与已有数据相同的部门号,最后使用SELECT查询所插入的数据,观察运行后的结果,如果插入显示“部门号”重复从而插入失败即可验证部门表的PRIMARY KEY(主键)约束,代码如下:

USE ERP

INSERT INTO A(CNO, Cname, Cnumber )

VALUES('S1', '经理', '8')

select * from A

运行结果如下:

(2)违反“部门表”的NOT NULL约束

由前面表的设计可知“部门号”和“部门名称”都是NOT NULL,所以可以使用INSERT语句在部门表A中添加数据,在“部门号”和“部门名称”插入的数据为空,最后使用SELECT查询所插入的数据,从而验证部门表的NOT NULL约束,代码如下:

USE ERP

INSERT INTO A(CNO, Cname, Cnumber )

VALUES('NULL', 'NULL', '8')

select * from A

运行的结果如下:

(3)违反“职工表”的PRIMARY KEY约束

由前面可以知道“职工号”是表S的主键,可以使用INSERT语句插入在表S中添加与已有数据相同的职工号,最后使用SELECT查询所插入的数据,观察运行后的结果,如果插入显示“职工号”重复从而插入失败即可验证职工表的PRIMARY KEY(主键)约束,代码如下:

USE ERP

INSERT INTO S(SNO, Sname, Sex,Sphone,Sadress,CNO )

VALUES('I1', '刘德华', '男','13071683','广东湛江','S9')

运行的结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/258977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从零认识ECS云服务器 | 快速上线个人网站】三、对外发布网站

3.1 配置域名 用户是如何访问网站的呢? 用户在浏览器(IE、Chrome、FireFox等)上输入域名,如:http://www.aliyun.com ; 浏览器自动调用DNS(域名服务)将域名解析为IP地址,如:123.123…

Qt练习题

1.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否…

C#网络编程(System.Net命名空间)

目录 一、System.Net命名空间 1.Dns类 (1)示例源码 (2)生成效果 2.IPAddress类 (1)示例源码 (2)生成效果 3.IPEndPoint类 (1) 示例源码 &#xff0…

大华DSS S2-045 OGNL表达式注入漏洞复现

0x01 产品简介 大华DSS安防监控系统平台是一款集视频、报警、存储、管理于一体的综合安防解决方案。该平台支持多种接入方式,包括网络视频、模拟视频、数字视频、IP电话、对讲机等。此外,该平台还支持多种报警方式,包括移动侦测、区域入侵、越线报警、人员聚集等。 0x02 漏…

《洛谷深入浅出进阶篇》p2568 GCD

P2568 GCD - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P2568 大致题意&#xff1a;给定正整数n&#xff0c;求1< x,y<n 且 gcd&#xff08;x&#xff0c;y&#xff09;为素数的数对&#xff08;x&#xff0c;y&#xff09;有多少对。…

高效批处理:自动创建100个文件夹并指定名称重命名技巧

在日常工作中&#xff0c;经常要创建大量的文件夹来进行分类和管理。如果一个一个地创建&#xff0c;不仅耗时而且容易出错。本文详解云炫文件管理器如何高效批处理的方法&#xff0c;自动创建100个文件夹并按指定名称重命名文件夹的技巧。 先准备好一个空文件夹&#xff0c;以…

维普论文查重率高【详细说明】

大家好&#xff0c;今天来聊聊维普论文查重率高&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 维普论文查重率高&#xff1a;原因分析与降重技巧 背景介绍 在学术领域&#xff0c;论文的重复率是衡量其…

使用git push太慢怎么办

使用git push太慢怎么办 修改host文件&#xff1a; windows 的路径应该在 C:\Windows\System32\drivers\etc\hosts 在host文件的最后一行加上 151.101.72.249 github.global.ssl.fastly.nethost不允许修改就复制一份&#xff0c;修改好了再替换掉&#xff0c;可能会让你输入…

在pytorch中自定义dataset读取数据

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 有关我们数据读取预训练 以及如何将它打包成一个一个batch输入我们的网络的 首先我们来看一下之前我们在讲resnet网络时所使用的源码 我们去使用了官方实现的image folder去读取我们的图像数据 然…

QT 重定向qdebug输出到自绘界面

因为在嵌入式中调试qt需要查看输出信息,特意写了一个类用户便捷查看qdebug信息 界面如下: 提供了开始,停止,保存,清空,退出功能,具体代码下文给出 文件如下 #ifndef QDEBUGREDIRECT_H #define QDEBUGREDIRECT_H /**qdebug 重定向类 定向到界面控件*李吉磊 2023.12.7* */#in…

网工内推 | 外企、合资公司急招网工,国内外旅游,健身年卡

01 深圳市耐施菲信息科技有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责项目的计划、实施、过程管控、项目验收等工作&#xff1b; 2、负责大型项目设备实施、安装调试等售后维护工作&#xff1b; 3、分析、设计网络拓扑结构、配置H3C、华为等交换机…

16mic圆形麦克风阵列电路与声源定位算法设计

16mic圆形麦克风阵列电路与声源定位算法设计 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙耳机音频&#xff0c;DSP音频项目核心开发资料, 1 实…