课程表成绩
1. 已知三个关系模式(学生表,课程表,成绩表)用SQL语句实现以下内容
CREATE TABLE 选课表
(学号 CHAR(8) REFERENCES 学生表(学号),
课程编号 CHAR(6) REFERENCES 课程表(课程编号),
成绩 smallint)
GO
INSERT INTO 学生表 VALUES('20100101','李丹','女','1993-6-6','管理系')
GO
SELECT 学号,姓名,所在系
FROM 学生表
GO
SELECT 学生表.学号,姓名
FROM 学生表 JOIN 选课表 ON 学生表.学号=选课表.学号
WHERE 课程编号='A01-02'
GO
SELECT *
FROM 学生表
WHERE 姓名 LIKE '[赵李张]%'
GO
SELECT 课程名称,COUNT(*) AS 选修总人数
INTO 修课统计
FROM 课程表 JOIN 选课表 ON 课程表.课程编号=选课表.课程编号
GROUP BY 课程名称
2. 数据库多表查询,学生表,课程表,成绩表
直接将三表关联查询就可以了
select
b.姓名,c.课程,a.成绩
from
成绩表
a,学生表
b,课程表
c
where
a.学生学号
=
b.学号
and
a.课程编号
=
c.编号
and
a.成绩
<
60
3. 学生表、成绩表、课程表中随机插入20条数据
你的问题没描述清楚,你说的随机是不是以下问题:
第一,你说的学生表,成绩表,课程表是不是excel数据表。如果是就是从已做好的表中随机选择20条数据手动输入相应的软件中就可以了。
第二,如果是开发程序,那么就是从这三个表中随机读取20条数据插入到数据库中。
所谓随机插入数据就是不指定要插入哪条,而是随机来选择插入的数据。比如,从编号1至20号的20个球中选出1-5编号的5个球这是指定选择法;从编号1-20号的20个球中随机选择5个球,就是从这20个球中用手随机抓取5个出来,这就是随机法。
4. SQL查询,学生表,课程表,成绩表的一个查询要求如下怎么写呢
selects.sid,s.sname,sc.scorefromstudent,course,scwherestudent.sid=sc.sidandcourse.cid=sc.cidandcourse.cname='影视设计';
注意一下,你自己写的sid和sname中间没有逗号,到时候一定执行报错
5. 根据学生表和课程表与成绩登记表的关系来做一个成绩登记表用SQL环境下完成。
--1.
createtablescs
(snointnotnull,
cnointnotnull,
scoreint)
--2.
altertablescsadddtdatetime;
--3
altertablescsaddconstraintpk-scprimarykey(sno,cno);
6. 将学生表、成绩表、课程表三张表中的数据作为基础数据,写出相关SQL语句,谢谢
--查询所有学生的成绩信息(无成绩的学生也需显示)
SELECTSname,Cname,Grade
.Sno=SC.Sno
LEFTJOINCourseONCourse.Cno=SC.Cno
--查询8002课程的平均分、最高分以及课程名称,且平均分保留2位小数
SELECTCAST(AVG(Grade)ASNUMERIC(5,2))平均分,MAX(Grade)最高分,Cname课程名称
FROMCoruseJOINSCONCourse.Cno=SC.Cno
WHERECourse.Cno='8002'
7. 某学校教学管理数据库jxgl.dbc中有三个表:学生表,课程表和成绩表,内容如下: 学生表:
(1)创建学生表、课程表和成绩表。具体要求:学生表中学号为主索引,出生日期默认值为1988-09-01;课程表中课程号为主索引,学分不能为空;成绩表中学号是外索引与学生表建立关系,课程号是外索引与课程表建立关系,成绩的要求是在0-100之间。
createtable 学生表
(学号intnotnullprimarykey,
姓名varchar(30)notnull,
性别varchar(4)notnull,
出生日期datetimenotnulldefault 1988-09-01
)
go
createtable 课程表
(课程号char(6)notnullprimarykey,
课程名varchar(30)notnull,
学分char(10)notnull
)
go
createtable 成绩表
(学号 学生表(学号),
课程号char(6) 课程表(课程号),
成绩 tinyintconstraint 成绩_ckcheck (成绩>=0 and 成绩<=100 )
)
(2)通过insert into命令向各表中输入记录(按照所给表的内容)
insert into 学生表values (10001,'张娟娟','女','1987-09-01')
insert into 学生表values (10002,'李斌','男','1988-03-01')
insert into 学生表values (10003,'王亮晶','女','1986-05-04')
insert into 学生表values (10004,'成果果','女')
insert into 课程表values ('K01','VFP程序设计','3.5')
insert into 课程表values ('K02','计算机文化基础','2')
insert into 成绩表values (10001,'K01 ','85')
insert into 成绩表values (10001,'K02 ','90')
insert into 成绩表values (10002,'K01 ','88')
insert into 成绩表values (10002,'K02 ','92')
insert into 成绩表values (10003,'K01 ','90')
insert into 成绩表values (10003,'K02 ','91')
insert into 成绩表values (10004,'K01 ','76')
insert into 成绩表values (10004,'K02 ','87')
(3)查询“VFP程序设计”课程的学号和成绩并按降序输出。
select 课程表.课程名,成绩表.学号,成绩表.成绩from 成绩表
join 课程表on 成绩表.课程号=课程表.课程号
where 课程表.课程名='VFP程序设计'
orderby 成绩表.成绩desc
(4)查询“成果果”的学号和成绩。
select 学生表.姓名,成绩表.学号,成绩表.成绩from 成绩表
join 学生表on 成绩表.学号=学生表.学号
where 学生表.姓名='成果果'
(5)查询“张娟娟”的学号和出生日期。
select 学号,姓名,出生日期from 学生表where 姓名='张娟娟'
(6)查询课程号为“K01”的成绩。
select 课程号,成绩from 成绩表where 课程号='K01'
(7)查询“王亮晶”的“计算机文化基础”成绩。
select 学生表.姓名,课程表.课程名,成绩表.成绩from 成绩表
join 课程表on 成绩表.课程号=课程表.课程号
join 学生表on 学生表.学号=成绩表.学号
where 课程表.课程名='计算机文化基础'and 学生表.姓名='王亮晶'
8. 已知一个教学管理数据库JXGL,包含以下三张数据表:学生表、课程表以及学生成绩表。它们的结构如下:
1.IF EXISTS (SELECT * FROM sysobjects WHERE
name = 'view_stuInfo')
DROP VIEW view_stuInfo
GO
CREATE VIEW view_stuInfo
AS
SELECT a.学号,a.姓名,b.课程号,c.成绩 from 学生表 a,课程表 b,学生成绩表 c
where a.学号=c.学号 and b.课程号=c.课程号
GO
2.insert into 学生表 values(21,‘王玲’,女,20,‘计算机’)
3.select count(*) from 学生表
9. 用SQL对学生表、课程表、成绩表进行多表查询。
CREATE TABLE 选课表
(学号 CHAR(8) REFERENCES 学生表内(学号),
课程编号 CHAR(6) REFERENCES 课程表(课程编号),
成绩 smallint)
GO
INSERT INTO 学生表 VALUES('20100101','李丹','女','1993-6-6','管理系容')
GO
SELECT 学号,姓名,所在系
FROM 学生表
GO
SELECT 学生表.学号,姓名
FROM 学生表 JOIN 选课表 ON 学生表.学号=选课表.学号
WHERE 课程编号='A01-02'
GO
SELECT *
FROM 学生表
WHERE 姓名 LIKE '[赵李张]%'
GO
SELECT 课程名称,COUNT(*) AS 选修总人数
INTO 修课统计
FROM 课程表 JOIN 选课表 ON 课程表.课程编号=选课表.课程编号
GROUP BY 课程名称
10. 数据库多表查询,学生表,课程表,成绩表
直接将三表关联查询就可以了
select b.姓名,c.课程,a.成绩
from 成绩表 a,学生表 b,课程表 c
where a.学生学号 = b.学号 and a.课程编号 = c.编号 and a.成绩 < 60