创建学生表XS,将学号字段设置为主索引
发布网友
发布时间:2022-06-10 15:02
我来回答
共2个回答
热心网友
时间:2024-07-01 08:00
--创建学生表
create table 学生表
(
学号 varchar(30) not null primary key,
姓名 varchar(32) not null,
性别 char(1) check (性别 in('男','女')) not null,
出生年月 datetime default(getdate()),
籍贯 varchar(50) null,
年级号 varchar(30) null,
班级号 varchar(30) null
)
--创建课程表
create table 课程表
(
课程编号 varchar(50) not null primary key,
课程名称 varchar(32) not null
)
--创建年级表
create table 年级表
(
年级编号 varchar(50) not null primary key,
年级名称 varchar(32) not null
)
--创建班级表
create table 班级表
(
班级编号 varchar(30) not null primary key,
班级名称 varchar(32) null
)
--创建成绩表
create table 成绩表
(
编号 varchar(30) not null primary key,
学号 varchar(32) null,
课程编号 varchar(50) not null,
年级编号 varchar(50) not null,
成绩 int default(0) check(成绩 between 0 and 100)
)
--6、(1)将下列信息添加到学生表的代码;
insert into 学生表 values('2009120904','张兵','男','1990-12-01','河南安阳', '002','2001');
insert into 学生表 values('2009120905','刘峰','女','1991-10-11','山西太原', '002','2002');
insert into 学生表 values('2009121001','贾涛','男','1992-11-02','河南郑州', '005','2003');
insert into 学生表 values('2009121002','李明','女','1989-06-03','河南焦作', '001','2001');
--(2)将下列信息添加到成绩表的代码;
insert into 成绩表 values('1001','2009120904','3102','002','92');
insert into 成绩表 values('1002','2009120904','3103','002','65');
insert into 成绩表 values('1003','2009120905','2101','005','76');
insert into 成绩表 values('1004','2009121002','2103','001','84');
(3)修改 学号为2009120904的学生性别为:女;
update 学生表 set 性别='女' where 学号='2009120904'
(4)将年级编号是108的所有考试科目加10分;
update 成绩表 set 成绩=成绩+10 where 年级编号='108'
(5)将年级编号是108的所有考试科目加10分后小于80的成绩信息删除;
delete from 成绩表 where 成绩<80 and 年级编号='108'
(6)删除 学号为2009120905的成绩信息);
delete from 成绩表 where 学号='2009120905'
二、数据库的查询、视图及流程控制语句。
1、 创建试图XS_CJ_VIEW,查询某个学生的成绩清单;要求显示:学号,姓名,课程名称,成绩四个字段;按课程编号升序排列;
create view XS_CJ_VIEW AS
select 学生表.学号,学生表.姓名,成绩表.课程编号,成绩表.成绩
from 学生表,成绩表
where 学生表.学号=成绩表.学号 and 学生表.姓名='刘峰'
2、 创建试图XS_VIEW,查询某个年级的学生名单;要求显示:学号,姓名,性别,出生年月,籍贯五个字段;按学号降序排列
create view XS_VIEW AS
select 学号,姓名,性别,出生年月,籍贯 from 学生表 where 年级号='等待你输入'
3、 查询成绩在80分以上的学生信息
select 学生表.* from 学生表 left outer join 成绩表 on 学生表.学号=成绩表.学号 where 成绩表.成绩>80
4、 查询班级编号为2001班的综合成绩最高的学生名称;
--综合成绩是什么成绩?
5、 查询班级编号为2002班的性别为女的学生的平均成绩;
select 学生表.学号,学生表.姓名,avg(isnull(成绩表.成绩,0)) from 学生表 left outer join 成绩表 on 学生表.学号=成绩表.学号 where 学生表.班级号='2002' and 学生表.性别='女'
group by 学生表.学号,学生表.姓名
三、系统函数及用户自定义函数。
1、 使用系统函数,将当前时间变成20091102001。
下面是将当前系统时间装换为你要的格式
select
convert(varchar(4),DATEPART(year,getdate()))+right('00'+convert(varchar(2),DATEPART(month,getdate())),2)+right('00'+convert(varchar(2),DATEPART(day,getdate())),2)+'001'
2、 创建用户自定义函数,输入月份可以返回该月的最后一天。
--你们这个老师出题不严谨哦,此处难道要你们case12次吗?并且每月天数不是定的,和年份还有关系,光输入月份能对么?
create function fun_user(@yf int)
RETURNS int
as
begin
if @yf>12 or @yf<0
begin
raiserror('月份输入不正确',16,1)
end
end
四、存储过程的应用。
1、 创建一个简单的存储过程Pro_Stu,查询学生表中的学生基本信息。
create proc Pro_Stu
as
begin
select * from 学生表
end
2、 创建一个存储过程Pro_CJ,某个班级的成绩清单
执行这个过程需要输入参数,指定班级编号
create proc Pro_CJ(@bjbh varchar(50))
as
begin
select 成绩表.* from 学生表
left outer join 成绩表
on 学生表.学号=成绩表.学号
where 学生表.班级号=@bjbh
end
--比如执行:exec Pro_CJ '2001'
热心网友
时间:2024-07-01 08:00
明天考试同样求解。。。