oracle查詢連線

2021-06-16 09:36:47 字數 2476 閱讀 7242

select * from emp;

select * from dept;

--左連線

--1、查詢與左邊表dept(4)相關聯的資料,如deptno=40在右邊沒有對應的資料,則顯示為空

select * from dept left join emp on dept.deptno=emp.deptno;

--查詢與左邊表相關聯的資料,並統計dept表每個dname的記錄條數,由1可知,dname='operations'的條數為0

select dname,count(ename) from dept left join emp on dept.deptno=emp.deptno group by dname;

--2、查詢與左邊表emp表相關的資料,因為emp表中的deptno中沒有等於40的號,所以dept表中deptno=40的資料不會顯示

select * from emp left join dept on dept.deptno=emp.deptno;

--查詢與左邊表相關的資料,由2可知,只會顯示dept.deptno=emp.deptno的資料

select dname,count(ename) from emp left join dept on dept.deptno=emp.deptno group by dname;

--右連線

select * from dept right join emp on emp.deptno=dept.deptno;

select dname,count(ename) from dept right join emp on emp.deptno=dept.deptno group by dname;

--完全外連線

select dname,count(ename) from dept full join emp on emp.deptno=dept.deptno group by dname;

--內連線

select * from dept inner join emp on emp.deptno=dept.deptno;

--等價於

select * from scott.dept,scott.emp where dept.deptno=emp.deptno;

--自連線

select m.ename from scott.emp m,scott.emp w where m.empno=w.mgr group by m.ename;

select m.ename from scott.emp m,scott.emp w where m.empno=w.mgr and w.ename='blake';

select * from scott.emp;

--建立表myemp

create table myemp

(empno number(4) not null,

empname varchar2(20),

mgr number(4)

)---important@……@

--從emp表中查詢資料並新增到myemp中-----(注意:rownum表示記錄的行數,例如:rownum<6表示獲取前6行記錄)

insert into myemp select empno,ename,mgr from emp where rownum<6;

select * from myemp;

--使用集合操作符

--建立表emps

create table emps

(empno number(4),

ename varchar2(20),

job varchar2(20),

mgr number(4),

hirdate date ,

sal number(10,2),

comm number(10,2),

deptno number(4)

)--從emp中查詢資料並新增到表emp

insert into emps select * from emp where rownum<6;

select * from emps;

--1、union----返回檢索到的所有不重複的行

select * from emp

union

select * from emps

--2、union all---查詢檢索的所有行,包括重複行

select * from emp

union all

select * from emps;

--3、intersect---返回兩個查詢都檢索到的行,(即兩張表的交集)

select * from emp

intersect

select * from emps;

--4、minus---返回第乙個查詢檢索到的行減去第二個查詢檢索到的行所剩餘的行

select * from emp

minus

select * from emps;

Oracle連線查詢

1 內連線 select e.d.dname from emp e,dept d where e.deptno d.deptno 隱式內連線查詢實際的語句可以為 select e.d.dname from emp e inner join dept d on d.deptno e.deptno 2 ...

oracle連線查詢

8i create table dali.test1 a int,b int create table dali.test2 a int,b int insert into dali.test1 values 1,456 insert into dali.test1 values 2,427 ins...

Oracle連線查詢

交叉連線 會產生笛卡爾積 select from emp cross join dept 自然連線 可自動匹配關聯欄位並消除笛卡爾積 select from emp natural join dept join.using,using子句後跟關聯的字段 select from emp e join ...