
create table Teacher(
t_id char(8) primary key,
t_name char(10),
)
create table Student (
s_id char(8) primary key,
t_name char(10),
sex char(1),
age int,
birhtday datetime,
class_name char(10),
foriegn key teacher_id reference class(tclass_name)
)
create table class(
teacher_id char(8),
class_name char(10) primary key
foriegn key teacher_id reference Teacher(t_id)
)
select S
from Teacher T, Student S, Class C
where Tt_id=Cteacher_id and Cclass_name=Sclass_name and Tt_name='A' and Cclass_name='B'
说实话,这题出的有问题,给出的表结构和提问都有问题。
1) select sName from Student s join StuCur c on sid=csid
join Course cu on cuid=ccid where cuName='自然'
2) select cName from Course c join StuCur sc on cid=scCID
join Student s on scsid=sid where sEntranceTime between '1999-01-01' and '2012-12-31'
不用这么复杂,假设学生和老师编号都是唯一不重复的,那么一张表就行。例如用户表(用户编号,密码,标记),其中用户编号能包含学生和老师编号的最大长度,每次用户登录时检测(用户编号+密码)匹配上了就根据记录中的标记字段判断用户是学生还是老师,再根据判断结果跳转到对应的页面(按给出的说明标记字段可区分学生或老师)即可,其中用户编号是主键。如果学生和老师编号存在重复,设计略麻烦点,加个姓名字段,登录匹配用户编号、密码、姓名,则匹配错误的几率就很低了。修改密码时也是对同一张表进行 *** 作即可,建议按照复核旧密码,输入新密码2次的方式来做。
ER图中有三种实体对应关系,一对一,一对多,多对多。多对多关系的话,必然会生成中间表,你的借还记录表就是中间表,因为学生和图书是多对多的关系(注意不是一对多,因为一本书能被多个同学借,虽然不会同时被借,但是借还记录会保持在表中,从数据库角度来讲是多对多)。
select from S where Sno in (select Sno from SC where Sno in (select Sno from SC where Cno = 1) and Cno = 3) 这是我想到的最简单的哈,还有优化的余地。
----------------------------
可以啊,不一定要我这么写。如你所述的话,可以这么:
select stuSno,stuSname from S stu ,SC sc1, SC sc2 where sc1Sno=sc2Sno and stuSno = sc1Sno and sc1Cno=1 and sc2Cno = 3
以上就是关于数据库有三张表,老师,学生和班级 结果如下:全部的内容,包括:数据库有三张表,老师,学生和班级 结果如下:、数据库中有四张表:Teacher(教师)表、Student(学生)表、Course(课 程)表和StuCur(选课)表、关于教师和学生登录系统数据库设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)