您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > T-SQL语句练习题
一、根据要求用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成绩=40where成绩604、创建一个视图,确切的字段名是:学生姓名,课程名称,分数,其中的记录不包括成绩不及格的学生。createviewv01(学生姓名,课程名称,分数)asselect姓名,课程名称,成绩from学生,课程,成绩where学生.学号=成绩.学号and课程.课程编号=成绩.课程编号and学生.学号notin(select学号from成绩where成绩60)5、创建一个触发器,规定学生不能转班级,即不能修改学生表的班级字段的值。createtriggertr01on学生forupdateasifupdate(班级)beginrollbacktranend一、根据要求用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班级个数between14and172、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班级人数all(select班级人数from班级,系where班级.系编号=系.系编号and系名称='管理系')5、为系表创建一个触发器,实现一次最多只能删除2条记录。createtriggertr01on系fordeleteasif(selectcount(*)fromdeleted)2beginrollbacktranend一、根据要求用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教研室个数42、select姓名,职称from教师where职称='助教'or性别='女'3、select姓名as教师姓名from教研室,教师where教研室.教研室编号=教师.教研室编号and教研室名称='软件教研室'4、selecttop2教研室名称from教研室orderby教师人数desc5、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、创建一个视图,包括教师姓名、性别、职称、教研室四个字段。然后利用该视图查询硬件教研室的教师姓名和职称。createviewv01asselect姓名,性别,职称,教研室名称from教师,教研室where教师.教研室编号=教研室.教研室编号select姓名,职称fromv01where教研室名称='硬件教研室'5、创建一个存储过程,当输入一个系名称时,能显示该系所有的教师姓名。并写出存储过程的执行语句。createprocp01@系编号char(4)asselect姓名from教师,教研室where教师.教研室编号=教研室.教研室编号and系编号=@系编号execp01'1103'
本文标题:T-SQL语句练习题
链接地址:https://www.777doc.com/doc-5670169 .html