当前位置:文档之家› T-SQL语句练习题

T-SQL语句练习题

一、根据要求用T-SQL语句创建数据库和表。

创建数据库“英才大学成绩管理”。

分别创建三个表,具体的表名、字段名如下:学生(学号,姓名,性别,出生年月,籍贯,班级) 其中性别字段只能为“男”或“女”课程(课程编号,课程名称,学分) 其中课程名称字段为唯一值约束成绩(学号,课程编号,成绩)带下划线的字段为主键,表之间的外键关联参考下图,各字段的数据类型应尽量合理。

CREATE DATABASE 英才大学成绩管理create table 学生(学号char(6) primary key,姓名char(6),性别char(2) check(性别='男' or 性别='女'),出生年月datetime,籍贯varchar(50),班级char(12),)create table 课程(课程编号char(5) primary key,课程名称char(20) unique,学分smallint,)create table 成绩(学号char(6) references 学生(学号),课程编号char(5) references 课程(课程编号),成绩decimal(5,2),primary key(学号,课程编号))二、根据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、select max(成绩) as 最高分from 课程,成绩where 课程.课程编号=成绩.课程编号and 课程名称='C语言程序设计' 4、5、select 籍贯,count(*) as 人数from 学生where 班级='计ZG091' group by 籍贯5、三、对第一题中的表用T-SQL语句完成如下操作。

1、按年龄由大到小显示学生的姓名和班级。

select 姓名,班级from 学生order by 出生年月2、查询周悦含同学所有课程的平均分。

select avg(成绩) from 学生,成绩where 学生.学号=成绩.学号and 姓名='周悦含'3、把成绩表中所有不及格的分数都改为40分。

update 成绩set 成绩=40where 成绩<604、创建一个视图,确切的字段名是:学生姓名,课程名称,分数,其中的记录不包括成绩不及格的学生。

create view v01(学生姓名,课程名称,分数)asselect 姓名,课程名称,成绩from 学生,课程,成绩where 学生.学号=成绩.学号and 课程.课程编号=成绩.课程编号and 学生.学号not in(select 学号from 成绩where 成绩<60)5、创建一个触发器,规定学生不能转班级,即不能修改学生表的班级字段的值。

create trigger tr01on 学生for updateasif update(班级)beginrollback tranend一、根据要求用T-SQL语句创建数据库和表。

创建数据库“英才大学学生管理”。

分别创建三个表,具体的表名、字段名如下:系(系编号,系名称,系主任,班级个数) 其中系名称字段非空班级(班级编号,班级名称,班级人数,班长姓名,专业,系编号) 其中班级名称字段唯一值约束学生(学号, 姓名,性别,出生年月,籍贯,班级编号) 其中性别字段只能为“男”或“女”带下划线的字段为主键,表之间的外键关联参考下图,各字段的数据类型应尽量合理。

CREATE DATABASE 英才大学学生管理create table 系(系编号char(4) primary key,系名称char(20) not null,系主任char(6),班级个数smallint,)create table 班级(班级编号char(8) primary key,班级名称char(12) unique,班级人数smallint,班长姓名char(6),专业char(20),系编号char(4) references 系(系编号))create table 学生(学号char(6) primary key,姓名char(6),性别char(2) check(性别='男' or 性别='女'), 出生年月datetime,籍贯varchar(50),班级编号char(8) references 班级(班级编号))二、根据T-SQL语句写出执行结果对上题所创建的表添加记录后如图所示,请详细写出下面的SQL语句的执行结果。

1、select * from 系where 班级个数between 14 and 172、select 班长姓名from 班级where 班级人数<26 or 专业='计算机网络技术'3、select 姓名,系名称from 学生,班级,系where 学生.班级编号=班级.班级编号and 班级.系编号=系.系编号and 籍贯='山东'4、select sum(班级个数) as 班级数from 系5、select 籍贯,count(*) as 人数from 学生,班级where 学生.班级编号=班级.班级编号and 班级名称='网ZG092' group by 籍贯三、对第一题中的表用T-SQL语句完成如下操作。

1、在班级表中查询班级人数最多的班级名称和人数。

select 班级名称,班级人数from 班级where 班级人数= (select max(班级人数) from 班级)2、查询姓王的学生的姓名和所在班级。

select 姓名,班级名称from 学生,班级where 学生.班级编号= 班级.班级编号and 姓名like'王%'3、在班级表中删除系部是“管理系”的记录。

delete 班级where 系编号=(select 系编号from 系where 系名称='管理系') 4、显示比管理系班级人数最少的班级的人数还少的班级名称和专业。

select 班级名称,专业from 班级where 班级人数< all(select 班级人数from 班级,系where 班级.系编号=系.系编号and 系名称='管理系')5、为系表创建一个触发器,实现一次最多只能删除2条记录。

create trigger tr01on 系for deleteasif (select count(*) from deleted )>2beginrollback tranend一、根据要求用T-SQL语句创建数据库和表。

创建数据库“英才大学教师管理”。

分别创建三个表,具体的表名、字段名如下:系(系编号,系名称,系主任,教研室个数) 其中系名称字段非空教研室(教研室编号,教研室名称,教师人数,系编号)教师(教师编号,姓名,性别,职称,教研室编号) 其中性别字段只能为“男”或“女”带下划线的字段为主键,表之间的外键关联参考下图,各字段的数据类型应尽量合理。

CREATE DATABASE 英才大学教师管理create table 系(系编号char(4) primary key,系名称char(20) not null,系主任char(6),教研室个数smallint,)create table 教研室(教研室编号char(6) primary key,教研室名称char(20),教师人数smallint,系编号char(4) references 系(系编号))create table 教师(教师编号char(7) primary key,姓名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、select top 2 教研室名称from 教研室order by 教师人数desc5、select 职称, count(*)as 人数from 教师group by 职称having 职称not like '%教授'三、对第二题中的表用T-SQL语句完成如下操作。

1、查询全部男教师的教师编号、姓名和职称。

select 教师编号,姓名,职称from 教师where 性别='男'2、通过教研室表查询信息工程系下的教研室的教师总数。

select sum(教师人数)from 教研室where 系编号=(select 系编号from 系where 系名称='信息工程系') 3、删除教研室数最少的系部。

delete from 系where 教研室个数=(select min(教研室个数) from 系)4、创建一个视图,包括教师姓名、性别、职称、教研室四个字段。

然后利用该视图查询硬件教研室的教师姓名和职称。

create view v01asselect 姓名,性别,职称,教研室名称from 教师,教研室where 教师.教研室编号=教研室.教研室编号select 姓名,职称from v01where 教研室名称='硬件教研室'5、创建一个存储过程,当输入一个系名称时,能显示该系所有的教师姓名。

并写出存储过程的执行语句。

create proc p01 @系编号char(4)asselect 姓名from 教师,教研室where 教师.教研室编号=教研室.教研室编号and 系编号= @系编号exec p01 '1103'。

相关主题