一、根据要求用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 成绩=40 where 成绩<60
4、创建一个视图,确切的字段名是:学生姓名,课程名称,分数,其中的记录不包括成绩不及格的学生。
create view v01(学生姓名,课程名称,分数) as
select 姓名,课程名称,成绩 from 学生,课程,成绩
where 学生.学号=成绩.学号 and 课程.课程编号=成绩.课程编号 and 学生.学号 not in(select 学号 from 成绩 where 成绩<60)
5、创建一个触发器,规定学生不能转班级,即不能修改学生表的班级字段的值。
create trigger tr01 on 学生 for update as
if update(班级) begin rollback tran end
一、根据要求用T-SQL语句创建数据库和表。 创建数据库“英才大学学生管理”。
分别创建三个表,具体的表名、字段名如下:
系(系编号,系名称,系主任,班级个数) 其中系名称字段非空
班级(班级编号,班级名称,班级人数,班长姓名,专业,系编号) 其中班级名称字段唯一值约束
学生(学号, 姓名,性别,出生年月,籍贯,班级编号) 其中性别字段只能为“男”或“女”
带下划线的字段为主键,表之间的外键关联参考下图,各字段的数据类型应尽量合理。