数据库的部分题,触发器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)什么是基本表?什么是视图?试述二者的区别与联系。
基本表就是在数据库中的关系表,内部有多个元组,有数据;视图就是给我们看的表,它可以是多个基本表通过一些操作呈现给我们的。它的当中没有数据,它的改变不能引起关系的改变,但是它也是一个表。不实际存储数据。
(2)简述SQL标准数据库语言的特点。
第一,语言简单易学易用;第二,两种使用方法,统一的语法结构(联机交互使用方式和嵌入某种高级程序);第三,高度过程化(我们只需要指出要干什么,而不用说明如何干);第四,一体化,SQL语言可以实现数据库生命期中的全部活动。
(4)简述数据库视图操作的优点。
1.视图对于数据库的重构造提供了一定程度的逻辑独立性。
2.简化了用户观点。(视图由多个表连接形成,但是用户不会看见连接过程,只是一个简单的表格。)
3.使用户不同的的方式看待同一个数据。(不同用户的不同要求使得同一个基本表的不同的属性得到显示)
4.对机密数据提供了自动的安全保护功能。(使得用户不能更改基本表。)
(6)建立表1到3的三个数据表,科研课题表KYKT,科研情况表KYQK和科研人员表KYRY,然后完成以下个题。
按要求写出SQL查询语句
查询课题经费大于100万元的课题编号及名称。
XXselect KYID,KTNAME
from KYKT
where KYKT.KTJK > 100;
查询同时参加编号为101和105课题的科研人员编号。
select A1.RYID
from KYQK as A1,KYQK as A2
where A1.RYID=A2.RYID and
A1.KTID='101' and A2.KTID='105';
查询科研情况表中的所有科研人员的编号。
select distinct RYID
from KYQK ;
检索69号科研人员的信息。
select*
from KYQK,KYRY
where KYQK.RYID= KYRY.RYID and
KYQK.RYID = '69';
检索105号课题的平均工作量。
select A VG(GZL)
from KYQK
where KTID='105';
检索工作量在200~400日的课题编号、人员编号及工作量,并按照工作量降序排序。在科研人员中追加一个科研人员(53,DAIHONG,DOCTOR,MAIL,TIANJIN)。
select KTID,RYID,GZL
from KYQK
where GZL>=200 and GZL<=400
order by GZL desc;
删除52号科研人员的所有科研课题。
delete from [KYQK]
where KYQK.RYID='52';
修改203号课题的课题经费为120万元。
update KYKT set KTJK= '120'
where KYID='203';
把67号科研人员的工作量减少10%。
update KYQK set GZL = GZL*0.9
where RYID=67;
设教学数据库中有三个关系:
学生关系S(SNO,SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
检索学习课程号为C2的学生学号和成绩。
ПSNO,GRADE(δ O=C2)
检索选修课程名为MATHS的学生学号与姓名。
ПSNO,SNAME δ[ρR(S.SNO=SC.SNO).CNO=O].CNO=MATHS
检索选修课程名为C2或C4的学生学号。
ПSNOδO=C2ПSNOδO=C4
检索至少选修课程号是C2和C4的学生学号。
ПSNOρR(O=C2).SNO=ρR(O=C4).SNO
检索不学C2课的学生姓名和年龄。
ПSNAME,AGE(δρ(S.SNO=SC.SNO).CNO<>C2))
检索学习全部课程的学生姓名。
ПSNAMEρR(S.SNO=SC.SNO)÷C
检索所学课程包含S3所学课程的学生学号。
ПSNOρR(δ(SC.SNO=S.SNO)).CNO=S3
关于数据库的触发器和存储过程的实例。
某新闻系统如下,当作者发布一条新闻是可以给自己积分增加十分,新闻浏览一次增加一分拍砖一次减少五分,点赞一次增加三分。
第一步建立三个表,news,zzxx,zzjf 建立如下
第一步建立三个表,news,zzxx,zzjf 建立如下
Create table news( liushuihao int primary key, --流水号
Lx varchar(10), --类型
fbsj datetime, --发布时间
biaoti varchar(40), --新闻标题
neirong varchar(4000), --新闻内容
zz char(30), --作者
Liulan int , --浏览量
Zgh char(10)) --职工号
Create table zzjf(zgh char(10) primary key, --职工号
Jf int, --积分
Dz int, --点赞
Pz int, --拍砖
Fbcs int, --发布次数
Liulan int, --浏览量
)
Create table zzxx(zgh int primay key, --职工号
Passwrod varchar(20), --密码
Zz char(30), --作者
Jf int , --积分
Zcsj datetime ) --注册时间
第一个触发器
create trigger trigger_zzjf on zzjf --该触发器更新zzxx中的jf属性
after update