实验五 数据库完整性约束的实现与验证

news2024/10/6 8:25:24

 题目

  1. 在实验四的基础上,重新创建以下三个表:
    会员表:member(memno,memname,address,telephone,username,userpwd),主码为memno,属性memname不能取空值
    员工表:employee(empno,empname,depno,sex,telephone,username,userpwd),主码为empno,depno参照部门表department的主码属性depn
    部门表:department(depno,depname,manager,deptotal),主码为depno,属性depname不能取空值
  2. 为employeea表的empname属性添加不能取空值的约束,并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果
  3. 为department表的manager属性增加参照完整性约束,要求该属性参照员工表employee的主码属性empno,并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果
  4. 为订单表orders增加主码约束,主码为orderno, 并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果
  5. 为会员表member属性列username添加取唯一值的约束,约束名为UK1,删除约束,并举例实践验证增加约束前后DBMS的违约处理机制,写出具体的实验数据、步骤和结果
  6. 为员工表employee的属性列username增加取唯一值的约束,并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果
  7. 创建一个性别只能取“男”或“女”的规则并把其绑定到员工表employee的属性sex上,并说明使用规则定义完整性约束与直接使用create语句或alter语句定义完整性约束的区别
  8. 定义一个默认值,并绑定在员工表employee的userpwd属性上,要求userpwd属性的默认取“123456”

步骤如下:

 1在实验四的基础上,重新创建以下三个表:

会员表:member(memno,memname,address,telephone,username,userpwd),主码为memno,属性memname不能取空值

CREATE TABLE member (

    memno INT PRIMARY KEY,

    memname VARCHAR(100) NOT NULL,

    address VARCHAR(255),

    telephone VARCHAR(20),

    username VARCHAR(50),

    userpwd VARCHAR(50)

);

  

员工表:employee(empno,empname,depno,sex,telephone,username,userpwd),主码为empno,depno参照部门表department的主码属性depno

.CREATE TABLE employee (

    empno INT PRIMARY KEY,

    empname VARCHAR(100),

    depno INT,

    sex CHAR(1),

    telephone VARCHAR(20),

    username VARCHAR(50),

    userpwd VARCHAR(50),

    FOREIGN KEY (depno) REFERENCES department(depno)

);

部门表:department(depno,depname,manager,deptotal),主码为depno,属性depname不能取空值

 CREATE TABLE department (

    depno INT PRIMARY KEY,

    depname VARCHAR(100) NOT NULL,

    manager VARCHAR(100),

    deptotal INT

);

  

2. 为employeea表的empname属性添加不能取空值的约束,并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果

首先执行如下sql命令,添加约束

alter table employee 

add constraint CK_employee_empname check (empname IS NOT NULL);

 验证违约处理机制:

尝试插入如下数据:

INSERT INTO employee (empname, depno, sex, telephone, username, userpwd) 

VALUES (NULL, 1, '男', '15510810888', 'zhangsan', '123456');

返回结果:

消息515,级别16,状态2,第1 行

不能将值NULL 插入列'empname',表'ecommerce.dbo.employee';列不允许有Null 值。INSERT 失败。

语句已终止。

  1. 为department表的manager属性增加参照完整性约束,要求该属性参照员工表employee的主码属性empno并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果

首先在employee中插入数据

INSERT INTO employee (empno, empname, depno, sex, telephone, username, userpwd) VALUES

(1, 'John Doe', 101, 'M', '1234567890', 'johndoe', 'password123'),

(2, 'Jane Smith', 102, 'F', '0987654321', 'janesmith', 'password456');

添加约束条件

ALTER TABLE department

ADD CONSTRAINT fk_manager

FOREIGN KEY (manager) REFERENCES employee(empno);

再次插入empno中不存在的数据

INSERT INTO department (depno, depname, manager, deptotal) VALUES

(202, 'Finance', 3, 20);

  1. 为订单表orders增加主码约束,主码为orderno, 并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果

注:orders有member和product的外键

首先在member中插入数据

insert into member values(1,'zhangsan','2156','165','zhangsan','13546');

再在product中插入数据

INSERT INTO product (prono, proname, brand, stock, supno, price, cost, catno, ontime, status)

VALUES (1, '华为', '华为', 20, 14001, 4988, 4488, 101, '2021-01-01', 0);

然后插入数据

insert into orders values(1,1,1,1,1.1,1.1,'2000-01-01','2020-02-02')

设置主键

ALTER TABLE orders

ADD CONSTRAINT pk PRIMARY KEY (orderno);

再次添加数据

insert into orders values(1,1,1,1,1.1,1.1,'2000-01-01','2020-02-02')

  1. 为会员表member属性列username添加取唯一值的约束,约束名为UK1,删除约束,并举例实践验证增加约束前后DBMS的违约处理机制,写出具体的实验数据、步骤和结果

首先插入一组数据,此数据zhangsan是没有加的之前

INSERT INTO member  VALUES (2,'zhangsan','饭都花园','032', 'zhangsan','3516');

查看数据中是否含有重复的username导致约束无法成立。

SELECT * FROM member;

加入约束

alter table member 

add constraint UK1 unique(username) 

再次插入上述相同数据
INSERT INTO member  VALUES (2,'zhangsan','饭都花园','032', 'zhangsan','3516');

删除约束

alter table member

drop constraint UK1

再次插入数据INSERT INTO member  VALUES (2,'zhangsan','饭都花园','032', 'zhangsan','3516');

6.为员工表employee的属性列username增加取唯一值的约束,并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果

先检查数据库中是否存在重复数据。

select*from employee

没有后插入相关约束

alter table employee

add unique(username)

insert into employee(empno,depno,username)values(4,1,'zhangsi')

7创建一个性别只能取“男”或“女”的规则并把其绑定到员工表employee的属性sex上

添加约束条件check

ALTER TABLE employee

ADD constraint chek_sex check(sex in('男','女'))

将数据进行插入

insert into employee values(5,'zhangsan',101,'男','56165','zhangsi','123456')

将不符合规则的数据插入

8定义一个默认值,并绑定在员工表employee的userpwd属性上,要求userpwd属性的默认取“123456”

添加默认语句

ALTER TABLE employee

ALTER COLUMN userpwd  DEFAULT '123456';

insert into employee values(7,'lisi',1,'男','123','lisi',)

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电源专题】DC-DC电路设计为什么一般只考虑电感DCR而不考虑Q值呢?

什么是电感器(线圈)的Q值? Q值是表示电感器质量的参数。Q是Quality Factor(质量系数)的简称。线圈会顺利流过直流电流,但会对交流电流产生电阻。这称为感抗,交流频率越高则越大。 此外,绕组虽是导体…

基于Istio的多网关运行时:配置、部署和应用

1. 引言 Istio是一个开源的服务网格,主要应用于简化微服务架构中的服务间通信、提供强大的监控能力以及加强服务的安全管理。通过利用Sidecar模式部署的Envoy代理,Istio能够在几乎无需修改服务代码的情况下,实现服务发现、负载均衡、加密通信…

C语言实战 | Flappy Bird游戏

Flappy Bird游戏是由一名越南游戏制作者独自开发的,曾经风靡全球。游戏规则非常简单,玩家必须控制一只小鸟,跨越由各种长度的水管所组成的障碍物,如果撞上管道游戏就结束,如图11.11所示。 ■ 图11.11Flappy Bird 游戏 …

go语言day08 泛型 自定义错误处理 go:协程

泛型: 抛错误异常 实现error接口类型 用java语言解释的话,实现类需要重写error类型的抽象方法Error().这样就可以自定义异常处理。 回到go语言,在Error()方法中用*argError 这样一个指针类来充当error接口的实现类。 在f2()方法中定义返回值…

IMU用于仿生水下机器人姿态估计

近期,自中国农业大学的研究团队从海豚身上汲取灵感,成功研发出一种创新性的双腱驱动机器人海豚尾鳍。这项创新性的设计不仅能够实现全方向运动,还能精细地模拟海豚的推力特性,揭示了其背后隐藏的力学秘密。 这款机器人尾鳍设计独特…

23432443

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

A股现在3000点已经是顶了吗?

今天的A股,让人咬牙切齿了,你们知道是为什么吗?盘面上出现2个重要信号,一起来看看: 1、今天两市高开低走,近4900家股票回落,股民痛心疾首了。昨晚中概股都涨疯了,美股的科技股微软和…

【web APIs】快速上手Day03(Dom事件进阶)

目录 Web APIs - 第3天全选文本框案例事件流事件捕获事件冒泡阻止冒泡解绑事件on事件方式解绑addEventListener方式解绑 注意事项-鼠标经过事件的区别两种注册事件的区别 事件委托综合案例-tab栏切换改造 其他事件页面加载事件元素滚动事件页面滚动事件-获取位置页面滚动事件-滚…

2024亚太杯中文赛数学建模选题建议及各题思路来啦!

大家好呀,2024年第十四届APMCM亚太地区大学生数学建模竞赛(中文赛项)开始了,来说一下初步的选题建议吧: 首先定下主基调, 本次亚太杯推荐大家选择B题目。C题目难度较高,只建议用过kaiwu的队伍…

商务视频推广打造有吸引力的7个秘诀-华媒舍

商务视频推广是现代企业发展的重要工具,它能够帮助企业吸引更多的目标客户,提升品牌知名度,增加销售量。但是,如何打造一部有吸引力的商务视频推广呢?本文将为您介绍7个秘诀,帮助您在商务视频推广中取得成功…

中国国家标准介绍

一、介绍 中国国家标准信息公共服务平台,这是由中国国家市场监督管理总局和中国国家标准化管理委员会共同运营的官方网站 https://openstd.samr.gov.cn/ 标准分为三类: GB:强制性国家标准GB/T:推荐行国家标准GB/Z:指导…

【Linux系统】文件系统 软硬链接

文件被打开了? 这个文件已经被打开???什么意思,我们的Linux中存在非常多的文件,被打开的文件是少量的,我们要找到这个文件,先在磁盘中找到,就必须要通过这个文件的文件名…

一站式广告监测新体验,Xinstall助你广告投放更精准

在这个移动互联网飞速发展的时代,App推广与运营成为了每个开发者与广告主关注的焦点。然而,面对琳琅满目的广告平台和复杂的投放环境,如何精准评估广告效果、优化投放策略,成为了摆在面前的一道难题。今天,我们就来聊聊…

Linux中为什么etc是存放配置文件

在计算机系统中,/etc 是一个目录的名称,通常位于Unix和类Unix操作系统中,如Linux。这个目录用于存放系统配置文件。/etc 的命名来源于早期Unix系统中的 "etcetera"(拉丁语 "et cetera" 的缩写,意为…

RK3568驱动指南|第十六篇 SPI-第195章 实践:移植官方mcp2515驱动

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

Ollama基于Casaos一键部署,并接入Dify知识库,无需再为API付费

什么是Ollama Ollama是一个开源的大型语言模型服务工具,它帮助用户快速的运行大模型。浪浪云将它做为一键部署通过简单的安装,用户可以执行一条命令就可以运行开源大型语言模型,如 llama3 ,通以千问。极大地简化了部署和管理LLM的过程&#x…

vue通过后台返回的数字显示不同的文字内容,多个内容用、隔开

后台返回的数据 显示效果&#xff1a; html&#xff1a; <el-table-columnalign"center"label"使用过的小程序"width"124"v-if"activeTab 0"><template #default"scope"><divv-for"(item, index) in s…

Redis 典型应用——分布式锁

一、什么是分布式锁 在一个分布式的系统中&#xff0c;也会涉及到多个节点访问同一个公共资源的情况&#xff0c;此时就需要通过锁来做互斥控制&#xff0c;避免出现类似于 "线程安全" 的问题&#xff1b; 而 Java 中的 synchronized&#xff0c;只能在当前进程中生…

如何利用小程序容器技术搭建小程序生态?

小程序&#xff0c;作为现代移动互联网生态中的重要基础设施&#xff0c;正以其独特的创新性和便捷性展现出勃勃生机。截至2021年&#xff0c;全网小程序的数量已经突破了700万&#xff0c;其中微信小程序的开发者达到了300万之多。这一数字不仅代表了小程序在技术层面的成熟度…

PKUMOD同学又双叒获奖啦~

近期王选所数据管理研究室的同学们 凭借在各自领域的卓越表现 获得了多项荣誉和奖励 让我们共赏风采~ 期待他们在未来的科研道路上 取得更加辉煌的成就 庞悦 前沿交叉学科研究院2020级博士生 荣获2024年北京大学校长奖学金 庞悦&#xff0c;北京大学元培学院2016级本科生&…