现有关系数据库如下:
数据库名:学生成绩数据库
学生信息表(学号 char(6),姓名,性别,民族,身份证号)
课程信息表(课号 char(6),名称)
成绩信息表(ID,学号,课号,分数)
用SQL语言实现下列功能的sql语句代码。
1. 创建数据库[学生成绩数据库]代码
2. 创建数据表[课程信息表]代码;
课程信息表(课号 char(6),名称)
要求使用:主键(课号)、非空(名称)
3. 创建数据表[学生信息表]代码;
学生信息表(学号 char(6),姓名,性别,民族,身份证号)
要求使用:主键(学号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性
别)
4. 创建数据表[成绩信息表];
成绩信息表(ID,学号,课号,分数)
要求使用:外键(学号,课号)、检查(分数),自动编号(ID)
5. 将下列课程信息添加到课程信息表的代码
课号 名称
100101 西班牙语
100102 大学英语
修改 课号为100102的课程名称:专业英语
删除 课号为100101的课程信息
6. 创建视图[成绩信息表视图]的代码;
成绩信息表视图(学号,姓名,课号,课程名称,分数)
7. 从学生信息表中查询姓刘的女同学的情况:姓名、性别、民族。
8. 查询有一门或一门以上课程成绩小于60分的所有学生的信息,包括学号、姓名。
学生信息表(学号 char(6),姓名,性别,民族,身份证号)
课程信息表(课号 char(6),名称)
成绩信息表(ID,学号,课号,分数)
9. 创建带参数的存储过程[某门课程高低均分]、执行该过程的代码
存储过程功能:查询某门课程的最高分、最低分、平均分;
执行该过程,查询所有修’专业英语’这门学生的最高分、最低分、平均分;
10 设置一SQL身份验证的用户账户:登录名:U院长,密码:888,数据库用户名:U读者,权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据,执行所有的存储过程。请写出账户、权限设置的T_SQL脚本。
天啊..我写了那么久..刷新却发现:
问题补充 2009-12-02 13:07
其他题目我做了 你们只需补充第9题就可以了
呜呜……累人了...唉!就写第9题,又发现别人写了!
我这速度...我命啊...我写的前面的答案你还要吗??
还真没时间 你应该一个个问
不要分 都可以的 主要是经验
堆到一起麻烦
--------------------
--创建数据库
create database 学生成绩数据库
--创建视图[成绩信息表视图]的代码;
create view 成绩信息表视图
as
select 学号,姓名,课号,课程名称,分数 from 课程信息表,学生信息表,成绩信息表
where 课程信息表.课号=成绩信息表.课号 and 学生信息表.学号=成绩信息表.学号
----------
--创建存储过程
create proc Getmma
@名称 nvarchar(100)
as
select max(@名称),min(名称),avg(@名称) from 课程信息表,成绩信息表 where 课程信息表.课号=成绩信息表.课号 and 课程信息表.名称=@名称
--执行
exec mma '专业英语'
use master
if exists(select * from sysdatabases where name=studentDB)
drop database studentDB
create database studentDB
on
(
name=studentDB_data',
filename='D:\project\studentDB_data.mdf',
size=10,
filegrowth=20%
)
log on
(
name=studentDB_log',
filename='D:\project\studentDB_log.ldf',
size=3,
maxsize=20,
filegrowth=10%
)
use bbsdb
if exists(select * from sysobjects where name=studentUsers)
drop table studentUsers
create table studentUsers
(
UID char(6) identity(1,1) not null,--学号,标识列
Uname varchar(15) not null,--姓名
Usex bit not null,--性别
Unation varchar(20),--民族
UIDcard varchar(20)--身份证
)
alter table studentUsers
add constraint PK_uid primary key(uid),--主键
constraint DF_Usex default (1) for Usex,--性别默认为男
其他的表可以照着改就行!
貌似挺麻烦的...
如果遇到个很有时间的也许回帮你做...
--现有关系数据库如下:
--数据库名:学生成绩数据库
--学生信息表(学号 char(6),姓名,性别,民族,身份证号)
--课程信息表(课号 char(6),名称)
--成绩信息表(ID,学号,课号,分数)
--
--用SQL语言实现下列功能的sql语句代码。
--1. 创建数据库[学生成绩数据库]代码
create database example
on
(
name = 'example_data',
filename = 'E:\example_data.mdf',
size = 3mb,
filegrowth = 10%
)
log on
(
name = 'example_log',
filename = 'E:\example_log.ldf',
size = 1mb,
filegrowth = 5%
)
go
use example
go
--2. 创建数据表[课程信息表]代码;
--课程信息表(课号 char(6),名称)
--要求使用:主键(课号)、非空(名称)
create table ClassInfo
(
classNo char(6) not null constraint PK_ClassNo primary key,
className varchar(50) not null
)
go
--3. 创建数据表[学生信息表]代码;
--学生信息表(学号 char(6),姓名,性别,民族,身份证号)
--要求使用:主键(学号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性
--别)
create table StudentInfo
(
studentNo char(6) not null constraint PK_StudentNo primary key,
sName varchar(50) not null,
sSex varchar(4) not null constraint CK_sSex check(sSex='男' or sSex='女'),
sNation varchar(50) not null constraint DF_sNation default('民族'),
sCardId varchar(20) not null constraint QU_sCardId unique
)
go
--4. 创建数据表[成绩信息表];
--成绩信息表(ID,学号,课号,分数)
--要求使用:外键(学号,课号)、检查(分数),自动编号(ID)
create table ScoreInfo
(
id int identity(1,1) not null constraint PK_Id primary key,
studentNo char(6) not null constraint FK_studentNo foreign key references StudentInfo(studentNo),
classNo char(6) not null constraint FK_classNo foreign key references ClassInfo(classNo),
score int not null constraint CK_Score check(score>=0 and score<=100)
)
go
--5. 将下列课程信息添加到课程信息表的代码
--课号 名称
--100101 西班牙语
--100102 大学英语
insert into ClassInfo(classNo,className) values('100101','西班牙语')
insert into ClassInfo(classNo,className) values('100102','大学英语')
--修改 课号为100102的课程名称:专业英语
update ClassInfo set className = '专业英语' where classNo = '100102'
--删除 课号为100101的课程信息
delete ClassInfo where classNo = '100101'
--6. 创建视图[成绩信息表视图]的代码;
--成绩信息表视图(学号,姓名,课号,课程名称,分数)
create view V_ScoreInfo
as
select st.studentNo,st.sName,ci.classNo,ci.className,si.score
from ScoreInfo si,StudentInfo st,ClassInfo ci
where si.studentNo=st.studentNo and si.classNo = ci.classNo
go
--测试试图
select * from V_ScoreInfo
--7. 从学生信息表中查询姓刘的女同学的情况:姓名、性别、民族。
select sName,sSex,sNation from StudentInfo where sName like '刘%' and sSex='女'
--8. 查询有一门或一门以上课程成绩小于60分的所有学生的信息,包括学号、姓名。
select * from StudentInfo where studentNo in (select studentNo from ScoreInfo where score<60 group by studentNo having count(*)>=1)
--学生信息表(学号 char(6),姓名,性别,民族,身份证号)
--课程信息表(课号 char(6),名称)
--成绩信息表(ID,学号,课号,分数)
--9. 创建带参数的存储过程[某门课程高低均分]、执行该过程的代码
--存储过程功能:查询某门课程的最高分、最低分、平均分;
--执行该过程,查询所有修’专业英语’这门学生的最高分、最低分、平均分;
create proc proc_total '专业英语'
@className varchar(50)
as
select max(score) as '最高分', min(score) as '最低分', avg(score) as '平均分'
from ScoreInfo
where classNo = (select classNo from ClassInfo where className = @className)
--测试过程
exec proc_total '专业英语'
--10 设置一SQL身份验证的用户账户:登录名:U院长,密码:888,
--数据库用户名:U读者,
--权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据,执行所有的存储过程。
--请写出账户、权限设置的T_SQL脚本。
exec sp_addlogin 'U院长', '888', 'example'
exec sp_grantdbaccess 'U院长', 'U读者'
exec sp_addrolemember 'db_datareader', 'U读者'