学生可以学习多种课程
同班同学所学习的课程不完全相同
教师可以教授不同课程
课程可以不同教师教授
1.将字段分配给各个表(确定主建和外部键)
学生姓名 学生出生日期 家庭住址 学号 学生性别
教师姓名 教师证号 教师性别 课程编号 课程名称
试验时间 教学时间 是否选修
班级编号 班级名称 成绩学生性别
教师表:
课程表
班级表:
成绩表:
2.用SQL查询"计算机1班"选修"孔夫子"
老师"C语言"课程学生的学号,姓名,成绩.小弟参加公务员考试的题目,帮别人问的,请高手帮忙写一下,十分感谢
在线等
同班同学所学习的课程不完全相同
教师可以教授不同课程
课程可以不同教师教授
1.将字段分配给各个表(确定主建和外部键)
学生姓名 学生出生日期 家庭住址 学号 学生性别
教师姓名 教师证号 教师性别 课程编号 课程名称
试验时间 教学时间 是否选修
班级编号 班级名称 成绩学生性别
教师表:
课程表
班级表:
成绩表:
2.用SQL查询"计算机1班"选修"孔夫子"
老师"C语言"课程学生的学号,姓名,成绩.小弟参加公务员考试的题目,帮别人问的,请高手帮忙写一下,十分感谢
在线等
教师证号 int identity(1,1) primary key,
教师姓名 varchar(20),
教师性别 char(1),
教学时间 datetime
)--, 试验时间,不知道这个字段是什么意思create table 课程表(
课程编号 int identity(1,1)primary key,
课程名称 varchar(20) ,
是否选修 int --1必修
)create table 班级表(
班级编号 int identity(1,1) primary key,
班级名称 varchar(20)
)-- 成绩 create table 学生表(
学号 int identity(1,1) primary key,
学生姓名 varchar(20),
学生出生日期 datetime,
家庭住址 varchar(50),
学生性别 char(1),
班级编号 int FOREIGN KEY (班级编号) REFERENCES 班级表(班级编号)
)create table 教师_课程表(
id int identity(1,1) primary key,
教师证号 int FOREIGN KEY (教师证号) REFERENCES 教师表(教师证号),
课程编号 int FOREIGN KEY (课程编号) REFERENCES 课程表(课程编号)
)create table 班级_课程表(
--同班同学所学习的课程不完全相同,
--我的理解是一个班级必然有相同的课程,
--而所谓的不完全相同应该是从选修的角度来考虑的
--也就是说这个表是放必修的.不知道我见解是否正确
id int identity(1,1) primary key,
班级编号 int FOREIGN KEY (班级编号) REFERENCES 班级表(班级编号),
课程编号 int FOREIGN KEY (课程编号) REFERENCES 课程表(课程编号)
)create table 学生_选修课程表(
id int identity(1,1) primary key,
学号 int FOREIGN KEY (学号) REFERENCES 学生表(学号),
选修课程编号 int FOREIGN KEY (选修课程编号) REFERENCES 课程表(课程编号)
)--插入测试数据
insert into 班级表
select '计算机1班'
union all
select '计算机2班'--
insert into 学生表(学生姓名,班级编号)
select '张三',1
union all
select '张三2',1
union all
select '张三3',2
union all
select '张三4',2
union all
select '张三5',1--
insert into 课程表
select '孔夫子',0
union all
select '孔夫子',1 --必修孔夫子
union all
select '计算机',1--
insert into 学生_选修课程表
select 1,1 --计算机1班,选修孔夫子
union all
select 3,1 --计算机2班,选修孔夫子-------------------------------------------------------------------------------------
select a.* from (
select * from 学生表 where 学生表.班级编号 in(
select 班级编号 from 班级表 where 班级名称 like '%计算机1班'
)
) as a,学生_选修课程表
where 学生_选修课程表.学号=a.学号 and
学生_选修课程表.选修课程编号 =(
select 课程表.课程编号 from 课程表 where 课程名称 like'%孔夫子' and 是否选修=0
)
-----------------------------------------------------------------------------------------
drop table 学生_选修课程表
drop table 班级_课程表
drop table 教师_课程表
drop table 教师表
drop table 课程表
drop table 学生表
drop table 班级表
--不知道符合不~~~,学习一把 :)