1、在使用where进行查询的时候,对于查询条件中的字段要指定归属表或者表别名。如下图。
创新互联提供成都网站设计、成都做网站、网页设计,品牌网站设计,广告投放等致力于企业网站建设与公司网站制作,10余年的网站开发和建站经验,助力企业信息化建设,成功案例突破1000多家,是您实现网站建设的好选择.
2、如果改为using进行查询的话那就不用指定表别名,using关键字的使用规则就是等值连接而且连接的字段名称和字段类型必须要一致。
3、如果在使用了using关键字进行查询的时候如果添加了表的别名或者是表名,则直接会报如下错误,对于using关键字指定的列名 在查询中是不能使用表名或者表别名的。
4、并且还有一点需要注意的是using后只能接字段名不能使用 大于 等于 小于等符号进行比对。
1 这个是表与表关联 创建视图
2 表与视图关联创建新的视图
创建视图 使用group by 计算出每一个人销售总额
表与视图关联创建新的视图
oracle中在WHERE条件里写输入:
select * from usermenu
left join sysuser on sysuser.yhdh=usermenu.yhdh
left join program on program.cxdh=usermenu.cxdh
即可关联起来。
关联也分为好几种:
SELECT * FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.FIELD_KEY=B.FIELD_KEY AND B.FIELD_KEY=C.FIELD_KEY (正常关联)
SELECT * FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.FIELD_KEY=B.FIELD_KEY(+) AND B.FIELD_KEY=C.FIELD_KEY(+) (左关联)
SELECT * FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.FIELD_KEY(+)=B.FIELD_KEY AND B.FIELD_KEY(+)=C.FIELD_KEY (右关联)
要把Oracle将三张表关联起来时可以使用Oracle Database的指令,也就是Oracle数据库的指令将其关联。
create public batabase link a_to_b
connect to (被操作表所在库的用户名) identified by (被操作表所在库的密码)
using ‘(被操作表所属实例名)’;
然后在操作实例中进行测试:
select 1 from dual@a_to_b;
如果有正确结果 那么你就建立了一个dblink了。
这个时候就可以 跨库查询了。
A表中的LBBH是否为主键,如果这个是主键那么在B表的LBBH字段建立一个关于A表的LBBH字段的外键就可以了(别忘了级联)。
如果A表的LBBH字段有重复(也就是不是主键),那就最好的办法就是再建立一张表,将A表的LBBH去重后的数据灌入这张表(我们假定为C表,C表只有LBBH一个字段),然后建一个触发器,当A表更新的时候,在C表查重,如果重复则不更新,如果不重复则insert。然后定义这个C表的LBBH字段为主键,然后定义B表的LBBH字段为C表的LBBH字段的外键。当然A表删除数据的时候,也要找到删除数据项的LBBH字段,看看其他字段时候还有,如果还有则C表不用动,如果没有那么C表也要删除的。然后B表也就能级联删除了。(当然这一段都是建立在A表的LBBH存在重复的前提下的。)
至于右面那个B表中的MXBH不能重复,只要在该字段建个唯一约束就可以了。
例如下面这两个表中分别存的时员工的基本信息和公司的部门信息。我们为
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了。