注意点:
查询结果里包含了许多重复行,如想去掉结果表中的重复行,必须指定distinct。
/*创建表s*/
create table s
(sno char(4) primary key,--定义主键。
sname char(20),
status char(4),
city char(20)
)
/*创建表p*/
create table p
(pno char(4) primary key,--定义主键。
pname char(20),
color char(6),
weight smallint
)
/*创建表j*/
create table j
(jno char(4) primary key,--定义主键。
jname char(20),
city char(20)
)
/*创建表spj*/
create table spj
(sno char(4) references s(sno),--sno属性参考s表的属性sno,sno为外键。
pno char(4) references p(pno),--pno属性参考p表的属性pno,pno为外键。
jno char(4) references j(jno),--jno属性参考j表的属性jno,jno为外键。
qty smallint,
primary key(sno,pno,jno)--定义主键。
)
/*创建spj表,定义外键另外一种写法*/
create table spj
(sno char(4),
pno char(4),
jno char(4),
qty smallint,
primary key(sno,pno,jno),
foreign key (sno) references s(sno),
foreign key (pno) references p(pno),
foreign key (jno) references j(jno)
)
/*求供应工程j1零件的供应商号码sno*/
select distinct sno
from spj
where jno='j1'
/*求供应工程j1零件p1的供应商号码sno*/
select distinct sno
from spj
where jno='j1'and pno='p1'