重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以,表与表关系,主要就是主外健及级联关系等,例如,通过OEM,你可以在ORACLE自带的方案SCOTT中,可以看到EMP表的部门字段与DEPT的主外关联关系。点下面的《显示SQL》你就可以看到对应的SQL语句。(在oracle9i下,选中EMP表,点右边的约束条件,就可以看到)这是图形方式,如果想在SQLPLUS下看,等你深入一点后自然明白.
创新互联建站:从2013年开始为各行业开拓出企业自己的“网站建设”服务,为成百上千家公司企业提供了专业的成都网站建设、做网站、网页设计和网站推广服务, 按需开发由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。
例如下面这两个表中分别存的时员工的基本信息和公司的部门信息。我们为
create table dept
(deptno number(10) not null,
deptname varchar2(30) not null,
constraint pk_dept primary key(deptno));
和
create table emp
( empno number(10) not null,
fname varchar2(20) ,
lname varchar2(20) ,
dept number(10) ,
constraint pk_emp primary key(empno));
然后我们现在增加外键试一下on delete cascade
alter table emp
add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete cascade;
先增加外键。然后插入数据。
insert into dept values(1,’销售部’);
insert into dept values(2,’财务部’);
insert into emp values (2,’Mary’,'Song’,1);
insert into emp values (3,’Linda’,'Liu’,2);
insert into emp values (4,’Linlin’,'Zhang’,1);
然后现在我要删除销售部,会有什么后果呢?
delete from dept where deptno = 1;
我们发现除了dept中的一条数据被删除了,emp中两条数据也被删除了,其中emp中的两条数据是参照了销售部的这条数据的,这就很容易理解on delete cascade了。
怎样在oracle里面建立一对多关系
一个分类下面有多个分类吗 比如说,电器分类下面有电视机,电脑之类的分类吗,这个可以用一个表自身一对多来实现 就是一个表,有 typeid,name ,note,visible,这四个字段之外,增加一个字段parentid,其中parentid又是跟本身这个表通过外键相关联的。parentid代表的是这个类型的父类型的id。这个字段可以为空,因为你总有一些顶级的分类,是没有父类型的。至于完整性,你的自己添加数据的时候,注意就可以了,违反完整性约束的话,你是不能把数据加入到数据库里面的。在加入数据的时候,你得保证parentid必须与这个表的某个主键相同。
就是在表与表之间建立起链接就行了,这个链接就叫做
外键
—FC;列入:create
table
stu(stuid
int,sName
varchar2(20));
create
table
score(stid
int,cid
int);
alter
table
stu
add
constraint
pk_stuid
primary
key(stuid);
alter
table
score
add
constraint
fk_stuid
foreign
key(stid)
references
stu(stuid);
stuid这个属性就是foreign
key就是外键;他就是链接stu表和score表的桥梁。
有两种办法:
第一种方法是通过外键:
假设有两张表,
A表(AId,AName) B(BId,BName)表 ,要想把这两者关联起来的话。可以通过外键来关联,在B表或者A表中添加一个外键。这里就以B表把B(BId,AId(外键),BName),这样通过外键两张表就可以联系起来了,例如我们在查询的时候通过AId就可以关联查询两张表的数据了。
第二种方法就是增加一张表:
还是拿A表(AId,AName) B(BId,BName)表来举例把,
我们可以增加个C表来联系AB表之间的关系
C表中只要放AB表的主键就行了
C(AId,BId),这样我们就可以通过C表来关联AB表了。
呵呵
主外键需要依托多表来创建,方法如下:
创建主表:
CREATE TABLE SCOTT.DEPT
(DEPTNO NUMBER(2,0) PARIMARY KEY,
DNAME VARCHAR2(14),
LOC VARCHAR2(13));
创建副表及外键:
CREATE TABLE EMP
(EMPNO NUMBER(4,0) PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4,0),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2,0),
CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO));