重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
select e.empno, e.ename, d.deptno, d.dname
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的渭城网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
from emp e, dept d
where e.deptno = d.deptno;
在之前所使用的查询操作之中,都是从一张表之中查询出所需要的内容,那么如果现在一个查询语句需要显示多张表的数据,则就必须应用到多表查询的操作,而多表查询的语法如下:
SELECT [DISTINCT] * | 字段 [别名] [,字段 [别名] ,…] FROM 表名称 [别名], [表名称 [别名] ,…] [WHERE 条件(S)] [ORDER BY 排序字段 [ASC|DESC] [,排序字段 [ASC|DESC] ,…]]。
扩展资料:
Oracle 常用的关联查询:
Oracle外连接:
(1)左外连接 (左边的表不加限制)。
(2)右外连接(右边的表不加限制)。
(3)全外连接(左右两表都不加限制)。
outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。
外连接分为三种: 左外连接,右外连接,全外连接。 对应SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常我们省略outer 这个关键字。 写成:LEFT/RIGHT/FULL JOIN。
在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。 如果基表的数据在另一张表没有记录。 那么在相关联的结果集行中列显示为空值(NULL)。
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数据库的指令将其关联。
1 这个是表与表关联 创建视图
2 表与视图关联创建新的视图
创建视图 使用group by 计算出每一个人销售总额
表与视图关联创建新的视图
有两种办法:
第一种方法是通过外键:
假设有两张表,
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表了。
呵呵
就是在表与表之间建立起链接就行了,这个链接就叫做外键—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表的桥梁。
例如下面这两个表中分别存的时员工的基本信息和公司的部门信息。我们为\x0d\x0acreate table dept\x0d\x0a(deptno number(10) not null,\x0d\x0adeptname varchar2(30) not null,\x0d\x0aconstraint pk_dept primary key(deptno));\x0d\x0a和\x0d\x0acreate table emp\x0d\x0a( empno number(10) not null,\x0d\x0afname varchar2(20) ,\x0d\x0alname varchar2(20) ,\x0d\x0adept number(10) ,\x0d\x0aconstraint pk_emp primary key(empno));\x0d\x0a\x0d\x0a然后我们现在增加外键试一下on delete cascade\x0d\x0a\x0d\x0aalter table emp\x0d\x0aadd constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete cascade;\x0d\x0a先增加外键。然后插入数据。\x0d\x0ainsert into dept values(1,’销售部’);\x0d\x0ainsert into dept values(2,’财务部’);\x0d\x0ainsert into emp values (2,’Mary’,'Song’,1);\x0d\x0ainsert into emp values (3,’Linda’,'Liu’,2);\x0d\x0ainsert into emp values (4,’Linlin’,'Zhang’,1);\x0d\x0a然后现在我要删除销售部,会有什么后果呢?\x0d\x0adelete from dept where deptno = 1;\x0d\x0a我们发现除了dept中的一条数据被删除了,emp中两条数据也被删除了,其中emp中的两条数据是参照了销售部的这条数据的,这就很容易理解on delete cascade了。