收藏 分销(赏)

2016年数据库的卷二练习答案.docx

上传人:仙人****88 文档编号:11987679 上传时间:2025-08-25 格式:DOCX 页数:25 大小:32.56KB 下载积分:10 金币
下载 相关 举报
2016年数据库的卷二练习答案.docx_第1页
第1页 / 共25页
2016年数据库的卷二练习答案.docx_第2页
第2页 / 共25页


点击查看更多>>
资源描述
--1、创建数据库 create database test on primary ( name = 'test_data', filename='D:\SQL期末作业\test_data.mdf', size=10MB, maxsize=10MB, filegrowth=1MB) log on ( name='test_log', filename='D:\SQL期末作业\test_log.ldf', size=1MB, maxsize=5MB, filegrowth=10% ) go --2、删除数据库 drop database test --3、创建student表 use test go create table student ( st_id nvarchar(9) not null constraint pk primary key, st_nm nvarchar(8) not null , st_sex nvarchar(2), st_birth datetime null, st_score int null, st_date datetime null, st_from nchar(20), st_dpid nvarchar(2), st_mnt tinyint ) --3、创建course表 use test go create table course (cs_id nvarchar(4) not null constraint pk_id primary key, cs_nm nvarchar(20) not null, cs_tm int , cs_sc int ) --4、创建slt_course use test go create table slt_course ( cs_id nvarchar(4) not null constraint fk_id references course(cs_id), st_id nvarchar(9) not null constraint fk_st_id references student(st_id), score int , sltdate datetime ) --5、创建院系(dept) use test go create table dept ( dp_id nvarchar(2) not null , dp_nm nvarchar(20) not null, dp_drt nvarchar(8) , dt_tel nvarchar(12) ) --修改表结构 --1)向表中添加列 use test go alter table dept add dp_count nvarchar(3) go --2)修改列数据 use test go alter table dept alter column dp_count int go --3、删除表指定列(column) use test go alter table dept drop column dp_count go --4、删除dept表 use test go drop table dept go --向表中输入数据记录 use test go insert student values ('20151090101','邓建娥','女','1996','400', '2015','山东省潍坊','01','学习部副部') go --3、数据完整性 --1)空值约束 use test go alter table student alter column st_sex varchar(2) not null --默认值约束(default) use test go alter table student add constraint df_from default '陕西省' for st_from go --检查约束(check) use test go alter table slt_course add constraint ck_course check (score>=0 and score<=100) go --主键 clustered为聚集索引,nonclustered为非聚集索引 use test alter table dept add constraint pk_dp_id primary key clustered (dp_id) go --唯一性约束(unique) use test alter table dept add constraint uq_nm unique nonclustered(dp_nm) go --创建外键 use test alter table student add foreign key (st_dpid) references dept(dp_id) -- 数据更新 --4.1、dept表中插入数据 use test go insert dept(dp_id,dp_nm,dp_drt,dt_tel) values ('11','自动控制系','李启宇','81234567') go --4.2、student表中插入记录 use test go insert student (st_id,st_nm,st_sex,st_birth,st_dpid) values ('070201001','王小五','男','1990-09-09','11') go --4.3 course表中插入记录 use test go insert course(cs_id ,cs_nm ) values ('1234','操作系统') go --4.4slt_course表中添加数据 use test go insert slt_course (cs_id ,st_id) values('1234','070201001') go --2.修改表中数据 --4.5 修改student表中记录 use test go update student set st_score ='88' where st_nm ='王小五' go --4.6修改course表记录 use test go update course set cs_sc =4,cs_tm =64 --4.7修改slt_course表中记录 use test go update slt_course set score =77 where cs_id =1234 and st_id = 070201001 go --删除表中数据 use test delete slt_course where cs_id='1234' and st_id ='070201001' go --删除course记录 use test delete course where cs_id ='1234' go --5 数据查询()简单查询 --5.1查询所有系的信息 use test go select * from dept go --5.2 查询所有的课程号与课程名称 use test go select cs_id,cs_nm from course go --5.3 查询student时使用列表达式:入学成绩+400 use test go select st_score+400 from student go --5.4用as关键字dept表指定列名:系号、系名、系主任、联系电话 use test go select dp_id as 系号,dp_nm as 系名,dp_drt as 系主任,dt_tel as 联系电话 from dept go --5.5使用"="号为course表中属性指定列名:课程号、课程名、学时(=cs_sc*16)、学分 use test go select 课程号=cs_id,课程名=cs_nm,学分=cs_sc,学时=cs_sc*16 from course go --5.6查询列表中使用系统函数 显示所有学生的学号、姓名、性别和入学年份 use test go select st_id,st_nm,st_sex,st_date from student group by st_id go --5.7消除查询结果中的重复项 显示所有学生班级 use test select distinct st_id from student go --6数据查询()-条件查询 --1.使用关系表达式查询条件 --6.1查询dept表中系号为的院系信息 use test go select * from dept where dp_id='11' go --6.2查询student表中系的学生学号、姓名、性别和所在系编号 use test go select st_id,st_nm,st_sex,st_dpid from student where st_dpid ='11' go --6.3 查询student表中年及以后入学的学生信息 use test select * from student where st_date > '2008-12-31' go --6.4在查询student表班学生的学号、姓名、性别和入学成绩 use test go select st_id,st_nm,st_sex,st_score from student where st_bj='080808' go --使用逻辑表达式表示查询条件 --6.5查询选修了号课程且成绩在以下的学生学号 use test go select st_id from slt_course where cs_id='1002'and score <'60' go --6.6查询系和系的学生信息 use test go select * from student where st_dpid='11' or st_dpid='12' go --6.7查询所有“计算机”开头的课程信息 use test go select * from course where cs_nm like '计算机%' go --6.8查询在.7.1到.6.30之间出生的学生信息 use test go select * from student where st_birth between '1989-07-01' and '1990-06-30' go --6.9查询选修了号课程且成绩在到之间的学生选课信息 use test go select * from slt_course where cs_id='1001' and (score between 60 and 80) go --6.10使用IN关键字进行查询查询系、系、系的学生信息 use test go select * from student where st_dpid in ('11','12','13') go --6.11使用[NOT] NULL关键字进行查询查询系、系、系的学生信息 use test go select * from student where (st_dpid in ('11','12','13'))and (st_bj is null) go --6.11查询所有生源为非空的学生信息 use test go select * from student where st_from is not null go --7 数据查询()——查询排序与查询结果存储 --7.1:查询课程信息,按课程名称降序排序:desc 升序:asc use test go select * from course order by cs_nm desc go --7.2查询选修了号课程成绩非空的学生学号和成绩,并按成绩降序排序 use test go select a.st_id,b.score from student as a join slt_course as b on a.st_id = b.st_id order by b.score desc go --8 数据查询()——查询统计与汇总 --8.1查询选修号课程的学生人数 use test go select COUNT(*) as 学生人数 from student where st_id in (select st_id from slt_course where cs_id='1001') go --8.2查询选修班学生的平均入学成绩 use test go select AVG(st_score) as 平均入学成绩 from student where st_bj='070101' gor --8.3查询号学生选修课程的数量、总分以及平均分 use test go select COUNT(*)as 选修课数量, SUM(score) as 总分, AVG(score) as 平均分 from slt_course where st_id='070101001' go --8.4查询选修号课程的学生人数、最高分、最低分和平均分 use test go select COUNT(*) as 学生人数 ,max(score)as 最高分,MIN(score) as 最低分,AVG(score) as 平均分 from slt_course where cs_id=1001 go --8.5查询选修了均分在以上的课程号及均分 use test go select cs_id ,AVG(score)平均分 from slt_course group by cs_id having AVG(score)>75 go --9 数据查询()——连接查询、子查询 --9.1查询学生学号、姓名、性别及其所选课程编号 use test go select student.st_id ,st_nm,st_sex,cs_id from student join slt_course on student.st_id=slt_course.st_id go --9.2查询学生学号、姓名及其所选课程名称及成绩 use test go select student.st_id ,st_nm,cs_id,score from student join slt_course on student.st_id=slt_course.st_id go --9.3查询选修了“数据结构”课程的学生学号、姓名及课程成绩 use test go select student.st_id,st_nm,score from student join slt_course on student.st_id=slt_course.st_id where cs_id in (select cs_id from course where cs_nm='数据结构') go --10 数据查询()——子查询 --10.1查询选修了课程成绩不及格的学生的学号、姓名和性别,并按姓名升序排序 use test go select st_id,st_nm,st_sex from student where st_id in (select st_id from slt_course where cs_id='1002' and score<'60') go --11视图和索引 --11.1基于student表创建一个视图view_s2014,可以查看年及以后入学的学生信息 use test go create view view_s2014 as select * from student where st_date>'2014-12-30' go --11.2为course表创建基于课程编号列的聚集索引kcbh_index use te- 77st go create clustered index kcbh_index on course (cs_id) go exec sp_helpindex 'course' --12游标 --12.1用游标实现:输出所有女学生的学号、姓名、性别和班级代码。 use test go declare c_xsxx cursor keyset for select st_id,st_nm,st_sex,st_bj from student open c_xsxx declare @xh nvarchar(8),@xm nvarchar(8),@xb nvarchar(8),@bjdm nvarchar(10) if @@ERROR =0 --判断游标打开是否成功 begin if @@CURSOR_ROWS >0 begin print '共有女学生'+rtrim(cast (@@cursor_rows as char(3)))+'名,分别是:' print '' fetch next from c_xsxx into @xh,@xm,@xb,@bjdm while (@@FETCH_STATUS=0) begin print @xh+','+@xm+','+@xb+',' fetch next from c_xhxx into @xh,@xm,@xb,@bjdm end end end else print '游标存在问题!' close c_xsxx deallocate --13 存储过程和触发器 --13.1创建一个带参数的存储过程cj:当任意输入一个学生的姓名时,将从三个表 -- (学生表、课程表、课程注册表)中返回该学生的学号、选修的课程名称和课程成绩 -- 学生表 课程 课程注册 use student go create proc cj @xm varchar(10) as select 学生.学号,课程名称,成绩 from 课程注册 join 学生 on 课程注册.学号=学生.学号 join 课程 on 课程注册.课程号=课程.课程号 where 学生.姓名=@xm --执行cj存储过程,查询刘永辉的学号、选修课程和课程成绩。 use student go exec cj @xm='刘永辉' --13.3创建一个带返回值的存储过程,根据“课程”表和“课程注册”表中的数据 --返回某课程的成绩大于分的人数。 use student go create proc g @rs --创建一个del_zy的delete触发器 use student go create trigger del_zy on 专业 for delete as declare @zydm char(9) select @zydm =专业代码 from deleted if exists (select * from 班级 where 专业代码=@zydm) begin print '正在使用,不能被使用!' rollback transaction end go --13.5创建一个触发器bjdm_update,当班级表中的班级代码被更新时, 内部
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服