1、数据库的卷二练习答案-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(s
2、t_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 testgocreate table course(cs_id nvarchar(4) not null constraint pk_id
3、 primary key,cs_nm nvarchar(20) not null,cs_tm int ,cs_sc int ) -4、创建slt_courseuse 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)u
4、se test gocreate 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 goalter table deptadd dp_count nvarchar(3)go-2)修改列数据use test go alter table deptalter column dp_count intgo-3、删除表指定列(column)use testgoalter table deptdro
5、p column dp_countgo-4、删除dept表use test godrop table dept go-向表中输入数据记录use testgoinsert student values (20151090101,邓建娥,女,1996,400,2015,山东省潍坊,01,学习部副部)go-3、数据完整性-1)空值约束use test goalter table studentalter column st_sex varchar(2) not null-默认值约束(default)use test goalter table student add constraint df_fr
6、om default 陕西省 for st_from go-检查约束(check)use test goalter table slt_courseadd constraint ck_course check (score=0 and score 2008-12-31go-6.4在查询student表班学生的学号、姓名、性别和入学成绩use testgoselect st_id,st_nm,st_sex,st_scorefrom studentwhere st_bj=080808go-使用逻辑表达式表示查询条件-6.5查询选修了号课程且成绩在以下的学生学号use testgoselect st
7、_idfrom slt_coursewhere cs_id=1002and score 75go -9 数据查询()连接查询、子查询-9.1查询学生学号、姓名、性别及其所选课程编号use testgoselect student.st_id ,st_nm,st_sex,cs_idfrom student join slt_courseon student.st_id=slt_course.st_idgo-9.2查询学生学号、姓名及其所选课程名称及成绩use testgoselect student.st_id ,st_nm,cs_id,score from student join slt_c
8、ourseon student.st_id=slt_course.st_idgo-9.3查询选修了“数据结构”课程的学生学号、姓名及课程成绩use testgoselect student.st_id,st_nm,scorefrom student join slt_courseon student.st_id=slt_course.st_idwhere cs_id in (select cs_id from course where cs_nm=数据结构)go -10 数据查询()子查询-10.1查询选修了课程成绩不及格的学生的学号、姓名和性别,并按姓名升序排序use testgoselec
9、t st_id,st_nm,st_sexfrom studentwhere st_id in (select st_id from slt_course where cs_id=1002 and score2014-12-30go-11.2为course表创建基于课程编号列的聚集索引kcbh_indexuse te- 77stgocreate clustered index kcbh_index on course (cs_id) goexec sp_helpindex course -12游标 -12.1用游标实现:输出所有女学生的学号、姓名、性别和班级代码。 use test go dec
10、lare 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 x
11、h,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 gocreate proc cj xm varc
12、har(10)asselect 学生.学号,课程名称,成绩from 课程注册 join 学生 on 课程注册.学号=学生.学号join 课程 on 课程注册.课程号=课程.课程号where 学生.姓名=xm -执行cj存储过程,查询刘永辉的学号、选修课程和课程成绩。use student goexec cj xm=刘永辉-13.3创建一个带返回值的存储过程,根据“课程”表和“课程注册”表中的数据-返回某课程的成绩大于分的人数。use studentgocreate proc g rs-创建一个del_zy的delete触发器use student gocreate trigger del_zy on 专业for deleteasdeclare zydm char(9)select zydm =专业代码 from deletedif exists (select * from 班级 where 专业代码=zydm)begin print 正在使用,不能被使用!rollback transactionendgo-13.5创建一个触发器bjdm_update,当班级表中的班级代码被更新时,内部
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1