2019-05-20

连表查询

外连接:

select dname, nu

from dept d, (select count(1) nu, deptno from emp

group by deptno)

e

where

d.deptno(+)=e.deptno;

看+和, 主表在,的左边就叫左外连接主表在,的右边叫右连接。


99连接

交叉连接 cross join --->笛卡尔积

自然连接(主外键、同名列) natural

join -->等值连接

 join using连接(同名列) -->等值连接

 [inner]join on连接 -->等值连接非等值自连接 (解决一切) 关系列必须区分

 left|right [outer] join on|using -->外连接

full join

on|using -->全连接满足直接匹配,不满足相互补充null ,确保所有表的记录都至少出现一次。


1、交叉连接

Select * from

emp cross join dept;

2、自然连接

Select * from

emp natual join dept;

Select deptno,e.ename,d.dname

from emp e natural join dept d;

在指定列过程中同名列归共同所有(*除外)。

3、using 连接

Select

deptno,e.ename,d.dname from emp e join dept d using (deptno);

4、on连接

-- natrual 等值

select ename,

dname

from emp

natural join

dept

where deptno =

30;

--using

select ename,

dname from emp join dept using (deptno) where deptno =

30;

--on

select ename,

dname

from emp

join dept

on emp.deptno =

dept.deptno

where emp.deptno = 30;

视图

视图是建立在表、结合集、视图上的虚拟表

1、简化:select 查询语句

2、重用:封装select语句命名

3、隐藏:内部细节

4、区分:相同数据不同查询

不是所有的用户都有创建视图的权限

1、前提: create view -->组 connect resource dba

2、授权: -->sqlplus /nolog

a)、sys登录 conn sys/123456@orcl as sysdba

b)、授权: grant dba to scott;

回收: revoke dba from scott;

c)、重新登录

create or

replace view 视图名 as select语句 [with read only];

要求:所有列必须存在名称。

对视图的删除不会删除原有表的数据

drop view 视图名;

索引

  索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检

索方式,从而提高检索效率

  索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表;

  索引一旦建立,在表上进行 DML 操作时(例如在执行插入、修改或者删除相关操作时),oracle 会

自动管理索引,索引删除,不会对表产生影响

  索引对用户是透明的,无论表上是否有索引,sql 语句的用法不变

  oracle创建主键时会自动在该列上创建索引。


索引: 提高查询速度的一种手段 -->目录

1、唯一性较好字段适合建立索引

2、大数据量才有效果

3、主键|唯一: 唯一索引

create index 索引名 on表名 (字段列表...)

drop index 索引名

create index

idx_emp on emp(sal,ename);

drop index

idx_emp;

select * from

emp order by sal,ename;

你可能感兴趣的:(2019-05-20)