/*数据库实验七2017/05/18具体操作内容:
创建以下两个关系模式,并分别插入相应的数据。职工(职工号,姓名,年龄,职务,工资,部门号)其中职工号为主码;部门(部门号,名称,经理名,地址,电话号码),其中部门号为主码;(1)使用SQL语言定义这两个关系模式,并完成以下完整性约束条件的定义;(SQL语句脚本;及结果截图)(a)定义每个模式的主码;(b)定义参照完整性;(c)部门名称不能为空;且不能重复,定义约束名为UK_dName;(d)职工的姓名不能为空;(e)职工的工资不能为空,且不能小于800;(f)定义职工的年龄不能小于18岁,并且不能超过60岁;(2)使用SQL语言分别向每个表中进行至少7条插入操作,验证上面的各种约束条件;(SQL语句既要截图,也要sql脚本文件)(3)将职工的年龄改为不能小于16岁,并且不能大于65岁;(4)定义一个表tbl_Emp_Log(eNO, eSalary, Username, ModifyDate);在职工表上定义修改和插入数据的触发器。*//*1.数据库的创建*/CREATE DATABASE [exp7]ON  PRIMARY
(   NAME = N'exp7', FILENAME = N'D:\SQLDatabase\exp7.mdf' , SIZE = 5120KB , MAXSIZE = 10240KB , FILEGROWTH = 1024KB )LOG ON
(   NAME = N'exp7_log', FILENAME = N'D:\SQLDatabase\exp7_log.ldf' , SIZE = 1024KB , MAXSIZE = 5120KB , FILEGROWTH = 1024KB )
GOUSE [exp7]
GO--2.表的创建
/*部门(部门号,名称,经理名,地址,电话号码)*/
/*Part 部门表的创建*/
CREATE TABLE Part(PartNo char(10) NOT NULL primary key,--部门号PName char(20) NOT NULL CONSTRAINT UK_dName unique,--部门名称PmangerName char(8) ,--经理名Paddress char(50) ,--地址Ptelephone char(20) ,--电话号码
);/*职工(职工号,姓名,年龄,职务,工资,部门号)*/
/*Worker 职工表的创建*/
CREATE TABLE Worker(WorkerNo char(8) NOT NULL primary key,--职工编号WorkerName char(8) NOT NULL,--职工姓名Wage int NOT NULL CONSTRAINT WAgeCK check(Wage>=18 AND Wage<=60),--职工年龄Wjob char(20) ,--职工职务Wpay int NOT NULL check(Wpay>=800),--职工工资partNo char(10) ,--职工部门号FOREIGN KEY(partNo) references Part(PartNo),
);--3.往表中插入数据--往部门表中插入信息
INSERT Part VALUES('A01','人事部','张三','珠海大楼6楼601室','020-12345678')
INSERT Part VALUES('A02','信息管理部','李四','珠海大楼5楼501室','020-12345123')
INSERT Part VALUES('A03','市场营销部','王一','珠海大楼5楼502室','020-12345888')
INSERT Part VALUES('A04','财务部','财富','珠海大楼6楼602室','020-12345777')
INSERT Part VALUES('A05','法务部','法官','珠海大楼5楼503室','020-12345666')
INSERT Part VALUES('A06','后勤部','大扎','珠海大楼5楼504室','020-12345555')
INSERT Part VALUES('A07','广告部','广发','珠海大楼5楼505室','020-12348888')--往职工表中插入信息
INSERT Worker VALUES('A01001','张三','35','总经理','25000','A01')
INSERT Worker VALUES('A01002','张小四','32','副经理','19800','A01')
INSERT Worker VALUES('A01003','张小五','25','职员','12000','A01')INSERT Worker VALUES('A02001','李四','29','总经理','23500','A02')
INSERT Worker VALUES('A02002','李小五','28','副经理','19500','A02')
INSERT Worker VALUES('A02003','李小六','23','职员','12500','A02')INSERT Worker VALUES('A03001','王一','36','总经理','32000','A03')
INSERT Worker VALUES('A03002','王小二','33','副经理','29100','A03')
INSERT Worker VALUES('A03003','王小三','29','职员','25600','A03')
INSERT Worker VALUES('A03004','王明','28','职员','25600','A03')--验证
--(a)定义每个模式的主码;
INSERT Part VALUES('A01','人事部II','张三一','珠海大楼6楼601室','020-12345678')--部门表中部门号为主码
INSERT Worker VALUES('A01001','张三二','35','总经理','25000','A01')--职工表中职工号为主码--(b)定义参照完整性;
INSERT Worker VALUES('A03005','王明','28','职员','25600','A08')--职工表中的部门号是参照部门表中的部门号--(c)部门名称不能为空;且不能重复,定义约束名为UK_dName;
INSERT Part VALUES('A08',NULL,'广发','珠海大楼5楼505室','020-12348888')--验证部门名称不能为空
INSERT Part VALUES('A08','广告部','广发','珠海大楼5楼505室','020-12348888')--验证部门名称不能重复--(d)职工的姓名不能为空;
INSERT Worker VALUES('A01003',NULL,'25','职员','12000','A01')--验证职工名称不能为空--(e)职工的工资不能为空,且不能小于800;
INSERT Worker VALUES('A01004','张小六','25','职员',NULL,'A01')--验证职工工资不能为空
INSERT Worker VALUES('A01004','张小六','25','职员','700','A01')--验证职工工资不能小于800--(f)定义职工的年龄不能小于18岁,并且不能超过60岁;
INSERT Worker VALUES('A01004','张小六','16','职员','18000','A01')--验证职工年龄不能小于18岁
INSERT Worker VALUES('A01004','张小六','61','职员','18000','A01')--验证职工年龄不能大于61岁--4.将职工的年龄改为不能小于16岁,并且不能大于65岁ALTER TABLE WorkerDROP CONSTRAINT WAgeCK
--首先删除已经存在的约束
ALTER TABLE WorkerADD CONSTRAINT WAgeCK CHECK(Wage>=16 AND Wage<=65)INSERT Worker VALUES('A01004','张小六','61','职员','18000','A01')
INSERT Worker VALUES('A01005','张小七','67','职员','18000','A01')--验证职工年龄不能大于65INSERT Worker VALUES('A01005','张小八','16','职员','18000','A01')
INSERT Worker VALUES('A01006','张小狗','15','职员','18000','A01')--验证职工年龄不能小于16岁/*
(4)定义一个表tbl_Emp_Log(eNO, eSalary, Username, ModifyDate);在职工表上定义修改和插入数据的触发器。A. 将插入的职工号和工资数据填入到Emp_log表中,并记录操作的用户(Username)和插入时间(ModifyDate);(SQL语句)B. 如果修改了职工的工资,也把职工号和修改后的工资数据填入到Emp_log表中,并记录操作的用户(Username)和插入时间(ModifyDate)。(SQL语句)使用SQL语句向职工表中插入数据和修改工资,验证触发器的效果。(SQL语句及结果截图)
*/CREATE TABLE tbl_Emp_Log(eNO char(8) NOT NULL,--职工号eSalary int NOT NULL ,--职工工资Username char(10) NOT NULL,--操作的用户ModifyDate datetime NOT NULL,--插入时间primary key(eNO,ModifyDate),
);CREATE TRIGGER insert_Emp
ON Worker
FOR INSERT
AS BEGIN insert into tbl_Emp_Log  select WorkerName,Wpay, User_name(), getDate() from Inserted; end  --插入数据
INSERT Worker VALUES('A01006','张小狗','25','职员','18000','A01')--验证
select *
FROM tbl_Emp_Log--删除触发器
drop trigger insert_EmpCREATE TRIGGER update_Emp
ON Worker
FOR update
AS IF update(Wpay)  begin declare @eSeleryOld money,@eSeletyNew money select @eSeleryOld=Wpayfrom Deleted select @eSeletyNew=Wpayfrom Inserted if(@eSeleryOld<>@eSeletyNew)  insert into tbl_Emp_Log select WorkerName,Wpay, User_name(), getDate() from Inserted; end--更新工资
UPDATE Worker
SET Wpay=19000
WHERE WorkerNo='A01006'--验证
select *
FROM tbl_Emp_Log--删除触发器
drop trigger update_Empselect *
FROM Partselect *
FROM Worker

数据控制—完整性约束相关推荐

  1. mysql高级之子查询,多表查询,外连接,集合操作,内部函数与数据控制_月隐学python第24课

    目录 ⼀.⾼级 1.1 ⼦查询 1.2 多表查询 1.3 外连接 1.4 集合操作 1.5 内部函数 ⼆.数据控制 2.1 事务 2.2 授权管理 ⼀.⾼级 1.1 ⼦查询 ⼦查询嵌⼊到其他查询语句中 ...

  2. 【金猿技术展】基于数据控制三维组态的方法及装置——实现数据驱动三维模型的精准运转技术...

    数字冰雹技术 本项目由数字冰雹投递并参与"数据猿年度金猿策划活动--2021大数据产业创新技术突破榜榜单及奖项"评选. 数据智能产业创新服务媒体 --聚焦数智 · 改变商业 基于数 ...

  3. 阿里巴巴:大数据控制信贷风险初露端倪

    人们习惯性地认为,只有银行才能建立信用体系,然而在大数据时代,互联网公司运用大数据控制信贷风险已初露端倪. 阿里巴巴.淘宝.天猫这些"阿里系"的电商平台,在深耕电商领域的同时,记录 ...

  4. 数据库实验三-数据控制(安全性部分)

    数据控制(安全性部分) 实验环境:Windows 10操作系统.MySQL 8.0.Navicat 实验内容与完成情况: 一.实验目的 (1)熟悉通过SQL对数据进行安全性控制. (2)完成书本上习题 ...

  5. 《数据库系统概论》课程之实验三:数据控制(安全性部分)

    注:查看全文请关注作者,或点击前往:<数据库系统概论>课程之实验三:数据控制(安全性部分) <数据库系统概论>课程之实验三:数据控制(安全性部分) 实验目的 (1)熟悉通过SQ ...

  6. SQL Server数据控制(Grant和Revoke)——架构

    下面呢是我在学习数据控制时遇到的问题和解决方法,可能也不是很对,希望看到我这篇文章的大佬能给我指点指点. 我为什么要写这篇文章呢? (1)当做以后复习的资料: (2)锻炼一下自己写文章的能力: 什么是 ...

  7. SQL操作的组成部分-数据控制

    由于数据库管理系统是一个多用户系统,为了控制用户对数据的存取权利,保持数据的共享及完全性,SQL语言提供了一系列的数据控制功能.其中,主要包括安全性控制.完整性控制.

  8. List 分页加载数据控制机制

    分页加载是一种应用很广泛的数据展示控制机制,相信绝大多数开发者对于这一套机制都非常熟悉.这篇文章的主要目的结合实际的使用场景,对以往在开发中遇到一些概念进行梳理,归纳的同时加深理解,也希望能帮助更多刚 ...

  9. (9) iphone 开发 AppSettings , 系统setting与应用程序setting间的数据控制

    引言:以手机为例, 当你在用一款软件听音乐时,会发现手机自带的大小声控制键和播放软件自带大小声控制键都可对声音进行大小声控制,而且他们的动作都会保持一致.那就让我们一探究竟吧! 一:设置束(setti ...

  10. 新时代的石油:共享数据库中的数据控制问题

    全文共1842字,预计学习时长6分钟 图源:unsplash 数据已然成为当今最重要资源和工具之一,其使用范围已遍及社会的各个方面:从航空运输到银行业务,从建筑到牙科,从教育到农业等等.我们利用越来越 ...

最新文章

  1. asp.net 利用Global.asax 捕获整个解决方案中的异常错误
  2. 8运行不了_好消息!十堰新建28座充电站,年底投入运行
  3. Oracle 中间件云服务器系统 ExaLogic X2 - 2 和 T3-1B概述
  4. 主流虚拟化产品对比列表01
  5. ubuntu下修改时区和时间
  6. 钉钉作弊,被判5年!
  7. Spring MVC学习总结(8)——Swagger入门详解
  8. “无语!只因姓True,苹果封了我的iCloud账户”
  9. [Python] L1-025. 正整数A+B-PAT团体程序设计天梯赛GPLT
  10. python50行小游戏_使用Python写一个小游戏
  11. BZOJ1176[Balkan2007] Mokia
  12. 简单介绍几种Java后台开发常用框架组合
  13. Linux基础教程(第二版)课后答案自主整理
  14. 【研究生本科论文】论文语言常见的五个问题
  15. Endnote X9 插入参考文献、设置参考文献格式
  16. 资源管理器多标签工具 QTTabbar 的安装与配置
  17. 【等级测评师】等级测评师怎么报名?多少分及格?
  18. ArcGIS教程:多面体
  19. RedHat6 挂载FC存储创建LVM
  20. 一种基于卷积神经网络的数据驱动故障诊断方法

热门文章

  1. Thief-Book v1.0.1免费版
  2. 支付宝-支付API(电脑网站支付)
  3. spark.reducer.maxReqsInFlight和spark.reducer.maxBlocksInFlightPerAddress
  4. 运行HQL时,报错:Container killed by YARN for exceeding memory limits
  5. 孤独星球android app,孤独星球免费版
  6. php 与 html 的混合编程
  7. 15个好用的百度网盘搜索引擎
  8. IPFS占据10%存储份额?预测FIL价格千U?现在挖FIL晚吗?
  9. php FPDF类库应用实现代码
  10. 人物回眸效果怎么用Vegas设置