IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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

验证成功

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 19:06:49  更:2022-06-08 19:09:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:59:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码