TSQL语句练习题.docx
《TSQL语句练习题.docx》由会员分享,可在线阅读,更多相关《TSQL语句练习题.docx(14页珍藏版)》请在冰点文库上搜索。
TSQL语句练习题
一、根据要求用T-SQL语句创建数据库和表。
创建数据库“英才大学成绩管理”。
分别创建三个表,具体的表名、字段名如下:
学生(学号,姓名,性别,出生年月,籍贯,班级)其中性别字段只能为“男”或“女”
课程(课程编号,课程名称,学分)其中课程名称字段为唯一值约束
成绩(学号,课程编号,成绩)
带下划线的字段为主键,表之间的外键关联参考下图,各字段的数据类型应尽量合理。
CREATEDATABASE英才大学成绩管理
createtable学生
(学号char(6)primarykey,
姓名char(6),
性别char
(2)check(性别='男'or性别='女'),
出生年月datetime,
籍贯varchar(50),
班级char(12),
)
createtable课程
(课程编号char(5)primarykey,
课程名称char(20)unique,
学分smallint,
)
createtable成绩
(学号char(6)references学生(学号),
课程编号char(5)references课程(课程编号),
成绩decimal(5,2),
primarykey(学号,课程编号)
)
二、根据T-SQL语句写出执行结果(20分,每题4分)
对上题所创建的表添加记录后如图所示,详细写出下面的SQL语句的执行结果。
1、select*from课程where课程编号='30442'
1、
2、select姓名from学生
where性别='女'and籍贯='辽宁'
2、
3、select姓名,课程名称,成绩from学生,课程,成绩
where学生.学号=成绩.学号and课程.课程编号=成绩.课程编号
and学分='4'
3、
4、selectmax(成绩)as最高分from课程,成绩
where课程.课程编号=成绩.课程编号and课程名称='C语言程序设计'
4、
5、select籍贯,count(*)as人数from学生
where班级='计ZG091'groupby籍贯
5、
三、对第一题中的表用T-SQL语句完成如下操作。
1、按年龄由大到小显示学生的姓名和班级。
select姓名,班级from学生orderby出生年月
2、查询周悦含同学所有课程的平均分。
selectavg(成绩)from学生,成绩
where学生.学号=成绩.学号and姓名='周悦含'
3、把成绩表中所有不及格的分数都改为40分。
update成绩
set成绩=40
where成绩<60
4、创建一个视图,确切的字段名是:
学生姓名,课程名称,分数,其中的记录不包括成绩不及格的学生。
createviewv01(学生姓名,课程名称,分数)
as
select姓名,课程名称,成绩from学生,课程,成绩
where学生.学号=成绩.学号and课程.课程编号=成绩.课程编号
and学生.学号notin(select学号from成绩where成绩<60)
5、创建一个触发器,规定学生不能转班级,即不能修改学生表的班级字段的值。
createtriggertr01
on学生forupdate
as
ifupdate(班级)
begin
rollbacktran
end
一、根据要求用T-SQL语句创建数据库和表。
创建数据库“英才大学学生管理”。
分别创建三个表,具体的表名、字段名如下:
系(系编号,系名称,系主任,班级个数)其中系名称字段非空
班级(班级编号,班级名称,班级人数,班长姓名,专业,系编号)其中班级名称字段唯一值约束
学生(学号,姓名,性别,出生年月,籍贯,班级编号)其中性别字段只能为“男”或“女”
带下划线的字段为主键,表之间的外键关联参考下图,各字段的数据类型应尽量合理。
CREATEDATABASE英才大学学生管理
createtable系
(系编号char(4)primarykey,
系名称char(20)notnull,
系主任char(6),
班级个数smallint,
)
createtable班级
(班级编号char(8)primarykey,
班级名称char(12)unique,
班级人数smallint,
班长姓名char(6),
专业char(20),
系编号char(4)references系(系编号)
)
createtable学生
(学号char(6)primarykey,
姓名char(6),
性别char
(2)check(性别='男'or性别='女'),
出生年月datetime,
籍贯varchar(50),
班级编号char(8)references班级(班级编号)
)
二、根据T-SQL语句写出执行结果
对上题所创建的表添加记录后如图所示,请详细写出下面的SQL语句的执行结果。
1、select*from系
where班级个数between14and17
2、select班长姓名from班级
where班级人数<26or专业='计算机网络技术'
3、select姓名,系名称from学生,班级,系
where学生.班级编号=班级.班级编号and班级.系编号=系.系编号
and籍贯='山东'
4、selectsum(班级个数)as班级数
from系
5、select籍贯,count(*)as人数from学生,班级
where学生.班级编号=班级.班级编号and班级名称='网ZG092'
groupby籍贯
三、对第一题中的表用T-SQL语句完成如下操作。
1、在班级表中查询班级人数最多的班级名称和人数。
select班级名称,班级人数
from班级
where班级人数=(selectmax(班级人数)from班级)
2、查询姓王的学生的姓名和所在班级。
select姓名,班级名称
from学生,班级
where学生.班级编号=班级.班级编号and姓名like'王%'
3、在班级表中删除系部是“管理系”的记录。
delete班级where系编号=(select系编号from系where系名称='管理系')
4、显示比管理系班级人数最少的班级的人数还少的班级名称和专业。
select班级名称,专业
from班级
where班级人数where班级.系编号=系.系编号and系名称='管理系')
5、为系表创建一个触发器,实现一次最多只能删除2条记录。
createtriggertr01
on系fordelete
as
if(selectcount(*)fromdeleted)>2
begin
rollbacktran
end
一、根据要求用T-SQL语句创建数据库和表。
创建数据库“英才大学教师管理”。
分别创建三个表,具体的表名、字段名如下:
系(系编号,系名称,系主任,教研室个数)其中系名称字段非空
教研室(教研室编号,教研室名称,教师人数,系编号)
教师(教师编号,姓名,性别,职称,教研室编号)其中性别字段只能为“男”或“女”
带下划线的字段为主键,表之间的外键关联参考下图,各字段的数据类型应尽量合理。
CREATEDATABASE英才大学教师管理
createtable系
(系编号char(4)primarykey,
系名称char(20)notnull,
系主任char(6),
教研室个数smallint,
)
createtable教研室
(教研室编号char(6)primarykey,
教研室名称char(20),
教师人数smallint,
系编号char(4)references系(系编号)
)
createtable教师
(教师编号char(7)primarykey,
姓名char(6),
性别char
(2)check(性别='男'or性别='女'),
职称char(10),
教研室编号char(6)references教研室(教研室编号)
)
二、根据T-SQL语句写出执行结果
对上题所创建的表添加记录后如图所示,请详细写出下面的SQL语句的执行结果。
1、select*from系
where教研室个数<4
2、select姓名,职称
from教师
where职称='助教'or性别='女'
3、select姓名as教师姓名
from教研室,教师
where教研室.教研室编号=教师.教研室编号
and教研室名称='软件教研室'
4、selecttop2教研室名称from教研室
orderby教师人数desc
5、select职称,count(*)as人数
from教师
groupby职称
having职称notlike'%教授'
三、对第二题中的表用T-SQL语句完成如下操作。
1、查询全部男教师的教师编号、姓名和职称。
select教师编号,姓名,职称
from教师
where性别='男'
2、通过教研室表查询信息工程系下的教研室的教师总数。
selectsum(教师人数)
from教研室
where系编号=(select系编号from系where系名称='信息工程系')
3、删除教研室数最少的系部。
deletefrom系
where教研室个数=(selectmin(教研室个数)from系)
4、创建一个视图,包括教师姓名、性别、职称、教研室四个字段。
然后利用该视图查询硬件教研室的教师姓名和职称。
createviewv01
as
select姓名,性别,职称,教研室名称
from教师,教研室
where教师.教研室编号=教研室.教研室编号
select姓名,职称fromv01
where教研室名称='硬件教研室'
5、创建一个存储过程,当输入一个系名称时,能显示该系所有的教师姓名。
并写出存储过程的执行语句。
createprocp01@系编号char(4)
as
select姓名
from教师,教研室
where教师.教研室编号=教研室.教研室编号
and系编号=@系编号
execp01'1103'