| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> SQL Server数据库实操 第五波 完整性约束和触发器 -> 正文阅读 |
|
[大数据]SQL Server数据库实操 第五波 完整性约束和触发器 |
课上实训 3个表+16道题 police(pno警号,pid身份证号) pcase(cno案件编号,cname案件名称,ctype案件类型,cbrief案件简介) pc(pno警号,cno案件编号,ptime出警时间) ?? 1.请用SQL 语句和对象资源管理器两种方法定义Police表的主键Pno;删除已经输入的某一记录的主键值,分析:为什么Pno置为‘ ???’没有违反非空约束? alter table police add constraint pno_pk primary key(pno) ?‘ ???’看着是空值,实际并不是,实际上是varchar类型,比如一个简单的python语句即可说明 ?2.检查语句:update Police?set Pno= NULL ?where Pno=‘100001’,分析其是否正确? 不正确,pno是主键,不允许为空值 3.将案件表Case的Cno字段定义为主键,约束名称为Cno_pk; alter table pcase ?add constraint Con_pk primary key(cno) ?4.为Case表中的字段Cname添加唯一值约束; alter table pcase ?add constraint Cname_pk unique(cname) 5.将PC表的Pno及Cno字段组合定义为主键,约束名称为PC_pk; alter table pc ?add constraint PC_pk primary key(pno,cno) ?6.对于数据表PC的Pno、Cno字段定义为外码,使之与Police表的主码Pno及表Case表的主码Cno对应,通过数据库关系图实现如下参照完整性: (1)删除Policeman表中记录的同时删除PC表中与该记录Pno字段值相同的记录; (2)修改Case表Cno字段值时,该字段在PC表中的对应值也应修改。 create table pc1 (pno varchar(10), cno varchar(12), foreign key(pno) references police(pno) on delete cascade, foreign key(cno) references pcase(cno) on update cascade ) ?7.定义check约束,要求警号Pno必须为6位数字字符,6位数字字符都在0~9中取值; alter table police ?add constraint tel_pk?check(pno like ('[0-9][0-9][0-9][0-9][0-9][0-9]')) ?8.定义Police表中警员年龄Page在18~60范围内取值; alter table police ?add constraint age_pk check(page>17 and page<61) ?9.定义Police表中警员性别列Psex中只能输入“男”或“女”; alter table police ?add constraint sex_pk1 check(psex in ('男','女')) ?10.定义Police表中警员性别默认值为“男”; alter table police add constraint sex_pk default '男' for psex ?11.删除Police表的年龄范围的约束条件; alter table police ?drop constraint age_pk ?12.修改Police表警员的警号必须为6为数字字符的约束,改为7位0-9之间的数字字符; alter table police ?drop constraint tel_pk; ?alter table police ?add constraint tel_pk check(pno like ('[0-9][0-9][0-9][0-9][0-9][0-9][0-9]')); 这里我失败了,sql语句没有出错,drop删除约束能正常运行,但是创建7位数字字符约束时失败了 ?csdn上说要么删除数据,要么手动创建约束,把“在创建或重新启用时检查现有数据”默认为“是”把它设置为 否? 13.删除在cases表上设置的唯一值约束、以及police表上设置的所有check约束; alter table pcase drop Cname_pk; alter table police drop constraint age_pk,sex_pk,sex_pk1,tel_pk; ?14.在Police表建立触发器T1,要求:当在警员信息中添加、删除或修改信息后,显示各不同警衔的警员人数; create trigger T1 on police after delete,insert,update as begin? select prank,count(prank) from police group by prank end 验证成功 15.建立触发器T2,要求Police数据表中禁止删除“100001”警号的警员信息,分析当建立触发器语句中存在rollback transaction与否的区别; create trigger T2 on police instead of delete as if exists (select * from deleted where pno='100001') begin print'no!' rollback transaction end ?验证成功? 如果建立触发器语句中不存在rollback transaction,即不能回滚,就是删除了之后也不能倒回去,不能实现禁止删除的功能,当建立触发器语句中存在rollback transaction时,就可以在触发事件后回滚到原来的状态,实现了禁止删除的功能 16.创建触发器T3实现向Police表中插入数据时查询全部数据。 create trigger T3 on police for insert as begin select * from police end 验证成功 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 5:11:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |