SQL Server数据库应用技术操作题题库

更新时间:2024-01-22 03:40:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《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='D:\\exam\\StuManage_data.mdf',//size=3mb,//maxsize=10mb, filegrowth=1mb)//log on//(name=StuManage_log,

filename='D:\\exam\\StuManage_log.ldf',//size=2mb,//maxsize=10mb, filegrowth=10%)//go (2)创建学生信息数据库”StuManage2”。要求:

主数据文件:StuManage2_data.mdf,初始大小5MB,存储位置为:“d:\\exam\\” ,文件增量以10%的比例增长; 日志文件: StuManage2_log.ldf,起始大小5MB,存储位置为:“d:\\exam\\”,文件增量以10%的比例增长。 use master//go//create database StuManage2//on primary

(name=StuManage_data,//filename='D:\\exam\\StuManage2_data.mdf', size=5mb,//filegrowth=10%)//log on

(name=StuManage_log,//filename='D:\\exam\\StuManage2_log.ldf', size=5mb,//filegrowth=10%)//go 2、表的基本操作

(1)请在StuManage数据库中添加如下表:

教室基本信息表(TblRoom)

编号 1 2 3 4 5 列名 roomNo roomName address number remark 字段类型 Nchar Nvarchar Nvarchar Int Nvarchar 长度 6 50 50 4 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))//go (2) 请在StuManage数据库中添加如下表:

学生基本信息表(TblStudent)

编号 1 2 3 4 列名 stuNo stuName gender addr 字段类型 Nchar Nchar Nchar Nvarchar 长度 8 8 1 50 字段描述 学号(主键) 姓名(非空) 性别 家庭住址(默认值广东河源) 5 GraduateSchool Nvarchar 50 毕业学校 use StuManage2//go//create table TblStudent

(stuNo Nchar (8) primary key,//stuName Nchar (8) not null, gender Nchar (1),//addr Nvarchar (50) default’广东河源’, GraduateSchool Nvarchar (50))//go

(3) 给TblStudent表中gender列设置check约束为:“男或女”(5分) alter table TblStudent

add constraint chk_gender check(gender='男' or gender='女')//go (4) 为教室表tblRoom的number列添加Check约束,限制其为1—300之间的 use StuManage//go//alter table tblRoom

add constraint chk_number check(number >=1 and number <=300)//go

(5)向学生基本信息表TblStudent中插入一行新的数据(‘20080101’,‘李红’,‘女’,“广东梅州”)。 use StuManage2//go

insert TblStudent (stuno,stuname,gender,addr) values('20080101','李红','女','广东梅州')//go

(6)请向学生基本信息表TblStudent插入新的一列,列名为remark,类型为nvarchar(50),可以为空。 use StuManage2//go//alter table TblStudent add remark nvarchar (50) //go

(7)请删除学生基本信息表TblStudent的GraduateSchool列 use stumanage2//go//alter table tblstudent drop column graduateschool//go

3、基本应用(以下操作均在XK实例数据库中进行)

(1)从 student 表中检索姓名为“杨华”的同学的学号、姓名和班级编码,要求显示的列名为“学号”、“姓名”和“班级编码”。 use xk//go//select '学号'=stuno,'姓名'=stuname,'班级编码'=classno from student//where stuname='杨华'//go

(2)从Student表中检索学生的班级编码,要求显示班级编码并消除其重复值,列名以“班级编码”显示。 use xk//go//select distinct '班级编码'=classno from student//go

(3)从Course表中查询出报名人数最多的五门课程的信息。 use xk//go//select top 5 *//from course order by willnum desc//go

(4)检索不姓“刘”的学生信息(可以使用LIKE或NOT LIKE关键字实现)。 use xk//go//select *//from student where stuname not like '刘%'//go

(5)在课程表中,按所开设课程的系部编码统计课程总的报名人数。

use xk//go//select '系部编码'=departno, '总报名人数'=sum(willnum) from course//group by departno//go

(6)从课程表中统计平均报名人数大于30的课程分类。

use xk//go//select kind as '课程分类',avg(willnum) as '每类平均报名人数' from course//group by kind//having avg(willnum)>30//go

(7)从XK数据库中检索“计算机应用工程系”的学生信息。

use xk//go//select student.*,departname//from department,student,class where department.departno=class.departno//and class.classno=student.classno and departname='计算机应用工程系'//go

(8)向班级表中插入一行新的数据(‘20080101’,‘08计算机1班’,‘01’)。 use xk//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,student where stuname='林斌'//and stucou.stuno=student.stuno and stucou.couno='001'//go

(10从学生表中删除学号为“00000003”的学生信息。 use xk//go//delete student//from student where stuno = '00000003'//go (11)为Tblstudent表的学号列创建聚集索引 use xk//go

create clustered index IX_stuno on Tblstudent (stuno)//go

(12)为表course中的课程名称列建立唯一、非聚集索引。 use xk//go//create unique index IX_couname on course(couname)//go

(13)创建视图v_CouByDep,显示各个系部开设的选修课的数量和报名人数。 use xk//go//create view v_coubydep//as

select departno,count(departno)'选修课的数量',sum(willnum)'报名人数' from course//group by departno//go

(14)创建视图v_CouByKind,显示各类课程的报名总人数和课程类别。 --第一种方法

create view V_CouByKind//as//select kind,sum(willnum) kind_sum from course//group by kind//go 检索:select *//from V_CouByKind//go --第二种方法

use xk//go//create view V_coubykind1//as

select kind as '课程分类', sum(willnum) as '报名总数' from course//group by kind//go

(15)创建视图v_Student,显示学生的信息(系部名称,班级名称,学号,姓名,性别) create proc v_student//as

select departname,classname,stuno,stuname,gender from department,class,student

where department.departno=class.departno and class.classno=student.classno//go --查询 exec v_student//go

(16)“叶艳茵”老师想查询一下有哪些同学选修了她的课程,包括课程名、学号、学生姓名、上课时间,教师名称。请使用创建存储过程的方法来实现这一查询要求。 create proc p1_stubytea1//as

select couname,student.stuno,stuname,schooltime,teacher from course,stucou,student

where stucou.stuno=student.stuno and stucou.couno=course.couno and teacher='叶艳茵' //go exec p1_stubytea1//go

(17)创建一存储过程,要求根据用户输入的系部名称和学分,来查询其课程信息。 use xk//go//create proc p_credit

@departname nvarchar(20),@credit decimal(3,1)//as

select course.couno,couname,kind,credit,teacher,schooltime,willnum,limitnum,departname from course,department

where course.departno=department.departno//and course.credit=@credit and 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.classno and class.classno= @classname//go exec p_StudentPara @classname='20000001'//go

(19)创建一个名为p_StudentPara的存储过程,该存储过程根据给定的学生学号查询该学生的信息。 create proc p_StudentPara//@stuno nvarchar(8)//as

select student.stuno,class.classno,stuname,classname,gender from class,student

where class.classno=student.classno// and student.stuno=@stuno//go exec p_StudentPara @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=0 while @i<=@n -- @i<1000 begin

set @sum=@sum+@i set @i=@i+1 end//go

--查询 declare @sum int,@n int//set @n=1000//exec p_sum @n,@sum output print '1+2+3...+'+cast(@n as varchar(8))+'='+ cast(@sum as char)//go

(21)创建一个触发器,要求每当在student表中插入一条记录时,向客户端显示一条“记录已添加!”的消息。 create trigger student1//on student//for insert as//print '记录已添加!'//go --添加一条记录 insert student

values ('02000061','20000001','张浩','3178C441','男')//go

(22)创建一个触发器,要求每当从department表中删除一条记录时,向客户端显一条“系部记录不允许删除!”的消息,并阻止其删除操作。

create trigger department1//on department//instead of delete as

print '系部记录不允许删除!' go --删除

delete department where departno ='03'

(23)创建一个触发器,要求每当用户插入department表的记录后,自动显示刚刚插入的记录。 create trigger department2 on department for insert as

select * from department go --插入记录

insert department values ('05','电信系') go

(24)创建一个触发器,要求每当用户从student表中删除数据时,自动显示刚刚删除的记录。 create trigger student2 on student for delete as

select * from student go

delete student

where stuno='00000006' go

本文来源:https://www.bwwdw.com/article/91po.html

Top