怎么根据外键查询关联表数据?

fengshuo850420 2012-06-19 03:15:01
study表:
id name class
11001 张三 110
11002 李四 110
11101 张三 111
11202 王五 112
exam表:
id subject scores
11001 数学 80
11002 数学 90
11101 数学 67
11201 数学 87
11001 语文 54
11002 语文 90
11101 语文 98
11201 语文 67
我已经将EXAM表的id设为主键,那么外键应该怎么设置,怎么查询这个外键呢?
...全文
886 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
menglingwen 2012-06-24
  • 打赏
  • 举报
回复
主键列的值不可以重复,主键设置错了
陈字文 2012-06-23
  • 打赏
  • 举报
回复
联合主键
  • 打赏
  • 举报
回复
列举简单的例子 查询存在分数的学员姓名学科分数


create table study (id number(10),name varchar2(20),class number(5));
insert into study values (11001,'张三',110);
insert into study values (11002,'李四',110);
insert into study values (11101,'张三',111);
insert into study values (11202,'王五',112);

create table exam (id number(10),subject varchar2(20),scores number(5));
insert into exam values (11001,'数学',80);
insert into exam values (11002,'数学',90);
insert into exam values (11101,'数学',67);
insert into exam values (11202,'数学',87);
insert into exam values (11001,'语文',54);
insert into exam values (11002,'语文',90);
insert into exam values (11101,'语文',98);
insert into exam values (11202,'语文',87);
commit;

select a.name,b.subject,b.scores
from study a,exam b
where a.id = b.id
order by a.id

id name subject scores
---------------------------------
1 11001 张三 数学 80
2 11001 张三 语文 54
3 11002 李四 数学 90
4 11002 李四 语文 90
5 11101 张三 语文 98
6 11101 张三 数学 67
7 11202 王五 语文 87
8 11202 王五 数学 87


  • 打赏
  • 举报
回复
应该是study表的id为主键吧? 学员ID应该不会重复

然后exam表的id 对应的是study表的id 相当于外键


查询的时候 如果是要查询每个人的姓名学科分数 直接关联就可以了

人生无悔 2012-06-19
  • 打赏
  • 举报
回复
LZ你太有才了,exam表中id有重復也可以設為主鍵呀

alter table study add constraint pk_study(id) primary key

alter table exam add constraint pk_exam(id,subject) primary key

alter table exam add constraint fk_exam_id foreign key(id)
references study(id)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧