1、SQL Server 数据库应用技术操作题题库要求:用 SQL 命令完成1、数据库操作(1)创建以“StuManage”为名的学生信息管理数据库。要求:主数据文件:文件名为 StuManage_data.mdf,存储位置为“D:exam” ,初始大小 3MB,以 1MB 增长,最大尺寸 10MB;事务日志文件:文件名为 StuManage_log.ldf,存储位置为“D:exam” ,初始大小 2MB,以 10%增长,最大尺寸 10MB;use master/go/create database StuManage/on primary(name=StuManage_data,filename
2、=D:examStuManage_data.mdf,/size=3mb,/maxsize=10mb,filegrowth=1mb)/log on/(name=StuManage_log,filename=D:examStuManage_log.ldf,/size=2mb,/maxsize=10mb,filegrowth=10%)/go (2)创建学生信息数据库”StuManage2” 。要求:主数据文件:StuManage2_data.mdf,初始大小 5MB,存储位置为:“d:exam” ,文件增量以 10%的比例增长;日志文件: StuManage2_log.ldf,起始大小 5MB,存储
3、位置为:“d:exam” ,文件增量以 10%的比例增长。use master/go/create database StuManage2/on primary(name=StuManage_data,/filename=D:examStuManage2_data.mdf,size=5mb,/filegrowth=10%)/log on(name=StuManage_log,/filename=D:examStuManage2_log.ldf,size=5mb,/filegrowth=10%)/go 2、表的基本操作(1)请在 StuManage 数据库中添加如下表:教室基本信息表(TblRo
4、om)编号 列名 字段类型 长度 字段描述1 roomNo Nchar 6 教室编号(主键)2 roomName Nvarchar 50 教室名称(非空)3 address Nvarchar 50 位置4 number Int 4 容纳人数5 remark Nvarchar 100 备注use StuManage/go/create table TblRoom/(roomNo Nchar (8) primary key,roomName Nvarchar (50) not null,/address Nvarchar (50),/number Int,remark Nvarchar (100)
5、/go(2) 请在 StuManage 数据库中添加如下表:学生基本信息表(TblStudent)编号 列名 字段类型 长度 字段描述1 stuNo Nchar 8 学号(主键)2 stuName Nchar 8 姓名(非空)3 gender Nchar 1 性别4 addr Nvarchar 50 家庭住址(默认值广东河源)5 GraduateSchool Nvarchar 50 毕业学校use StuManage2/go/create table TblStudent(stuNo Nchar (8) primary key,/stuName Nchar (8) not null,gende
6、r Nchar (1),/addr Nvarchar (50) default广东河源 ,GraduateSchool Nvarchar (50)/go(3) 给 TblStudent 表中 gender 列设置 check 约束为:“男或女”(5 分)alter table TblStudentadd constraint chk_gender check(gender=男 or gender=女)/go(4) 为教室表 tblRoom 的 number 列添加 Check 约束,限制其为 1300 之间的use StuManage/go/alter table tblRoomadd con
7、straint chk_number check(number =1 and number 30/go(7)从 XK 数据库中检索“计算机应用工程系”的学生信息。use xk/go/select student.*,departname/from department,student,classwhere department.departno=class.departno/and class.classno=student.classnoand departname=计算机应用工程系 /go(8)向班级表中插入一行新的数据(20080101 , 08 计算机 1 班 , 01) 。use x
8、k/go/insert into class (classno,classname,departno)values (20080101,08计算机班 ,01)/go/select */from class/go(9)将“林斌”选修的课程编码为“001”的课程修改为“012” 。use xk/go/update stucou/set couno=012/from stucou,studentwhere stuname=林斌/and stucou.stuno=student.stunoand stucou.couno=001/go(10 从学生表中删除学号为“00000003”的学生信息。use
9、xk/go/delete student/from studentwhere stuno = 00000003/go(11)为 Tblstudent 表的学号列创建聚集索引use xk/gocreate clustered index IX_stunoon Tblstudent (stuno)/go(12)为表 course 中的课程名称列建立唯一、非聚集索引。use xk/go/create unique index IX_counameon course(couname)/go(13)创建视图 v_CouByDep,显示各个系部开设的选修课的数量和报名人数。use xk/go/create
10、 view v_coubydep/asselect departno,count(departno)选修课的数量,sum (willnum)报名人数from course/group by departno/go(14)创建视图 v_CouByKind,显示各类课程的报名总人数和课程类别。-第一种方法create view V_CouByKind/as/select kind,sum(willnum) kind_sumfrom course/group by kind/go检索:select */from V_CouByKind/go-第二种方法use xk/go/create view V_
11、coubykind1/as select kind as 课程分类, sum(willnum) as 报名总数 from course/group by kind/go(15)创建视图 v_Student,显示学生的信息(系部名称,班级名称,学号,姓名,性别)create proc v_student/asselect departname,classname,stuno,stuname,genderfrom department,class,studentwhere department.departno=class.departnoand class.classno=student.cla
12、ssno/go-查询 exec v_student/go(16) “叶艳茵”老师想查询一下有哪些同学选修了她的课程,包括课程名、学号、学生姓名、上课时间,教师名称。请使用创建存储过程的方法来实现这一查询要求。create proc p1_stubytea1/asselect couname,student.stuno,stuname,schooltime,teacherfrom course,stucou,studentwhere stucou.stuno=student.stuno and stucou.couno=course.counoand teacher=叶艳茵 /goexec p1
13、_stubytea1/go(17)创建一存储过程,要求根据用户输入的系部名称和学分,来查询其课程信息。use xk/go/create proc p_creditdepartname nvarchar(20),credit decimal(3,1)/asselect course.couno,couname,kind,credit,teacher,schooltime,willnum,limitnum,departnamefrom course,departmentwhere course.departno=department.departno/and course.credit=credi
14、tand department.departname = departname/go-查询 use xk/go/exec p_credit departname=旅游系,credit=2.0/go(18)创建一个名为 p_StudentPara 的存储过程,该存储过程根据给定的班级名称显示该班级所有学生的信息。create proc p_StudentPara/classname nvarchar(20)as/select */from class,student/where class.classno=student.classnoand class.classno= classname/g
15、oexec p_StudentPara classname=20000001/go(19)创建一个名为 p_StudentPara 的存储过程,该存储过程根据给定的学生学号查询该学生的信息。create proc p_StudentPara/stuno nvarchar(8)/asselect student.stuno,class.classno,stuname,classname,genderfrom class,studentwhere class.classno=student.classno/ and student.stuno=stuno/goexec p_StudentPara
16、stuno=00000004/go(20)创建一个存储过程,实现 1+2+3+。 。 。 。N 的和,其中 n 为输入参数。create proc p_sum/n int,sum int output/as declare i int/set i=0/set sum=0while i=n - i1000beginset sum=sum+i set i=i+1end/go-查询 declare sum int,n int/set n=1000/exec p_sum n,sum outputprint 1+2+3.+cast(n as varchar(8)+=+ cast(sum as char)
17、/go(21)创建一个触发器,要求每当在 student 表中插入一条记录时,向客户端显示一条“记录已添加!”的消息。create trigger student1/on student/for insertas/print 记录已添加! /go-添加一条记录 insert studentvalues (02000061,20000001,张浩,3178C441,男)/go(22)创建一个触发器,要求每当从 department 表中删除一条记录时,向客户端显一条“系部记录不允许删除!”的消息,并阻止其删除操作。create trigger department1/on department/
18、instead of deleteasprint 系部记录不允许删除!go-删除delete departmentwhere departno =03(23)创建一个触发器,要求每当用户插入 department 表的记录后,自动显示刚刚插入的记录。create trigger department2on departmentfor insertasselect * from departmentgo-插入记录insert departmentvalues (05,电信系)go(24)创建一个触发器,要求每当用户从 student 表中删除数据时,自动显示刚刚删除的记录。create trigger student2on student for deleteasselect * from studentgodelete studentwhere stuno=00000006go