oracle各種語法操作的彙總第三部分
左右連接
左連接 左表全部顯示 select * from emp a left join emp b on a.no=b.no; 或者 select * from emp a,emp b where a.no=b.no(+)
右連接 右表全部表示 select * from emp a right join emp b on a.no=b.no; 或者 select * from emp a,emp b where a.no(+)=b.no
交叉連接 cross join 即笛卡爾乘積連接
自然連接 natural join
using子句 select 列名 from 表名 join 表名 using (共同列) eg.select * from sales join costs using (prod_id)
on子句 select 列名 from 表名 join 表名 on (條件)
組函數COUNT,MAX,MIN,AVG,SUM
GROUP BY後面接的一定要是SELECT裏有的
組函數不能放到where後 要用HAVING
eg. select deptno,AVG(sal)
from emp group by deptno HAVING AVG(sal)>2500;
行總計/列總計
ROLL UP/CUBE
eg.select groupid,job,sum(salary) from gt group by roll up(groupid,job)
先按groupid,job group by 再按groupid group by 以此順序循環
子查詢判斷符號in any all
in:用於指定一個子查詢的判斷範圍
any:三種用法 =any與in操作符完全一樣 >any 比最小的大的數據 <any 比最大的小的數據
合併查詢:個兵多個select 語句的查詢的結果
1)union 並集
2)union all 並集 不去掉重複行
3)intersect 交集
4)差集 minus
數據更新操作
插入
修改
刪除
複製表
create table 新表名 as 數據庫來源
eg. create table memp1 as select * from emp
數據更新:
1)insert into 表名(列名1,列名2) values(值1,值2)
eg.insert into memp1(empno) values(1234)
2)省略寫法(不推薦)
insert into 表明 values(...)
修改:
update+表名+set+列名1=值1,列名2=值2
全部 update+表名+set+列名1=值1,列名2=值2
局部 update+表名+set+列名1=值1,列名2=值2 where 條件
eg. update memp1 set sal=800,comm=100;
修改日期:
set hiredate = to_data('2019-02-13','yyyy-mm-dd') where...
插入單值
insert into 表名 (select empno,ename from myemp1) values(1,'TOM')
利用臨時表
insert into myemp1 (empno,empname) select 2,'allen' from dual;
利用子查詢插入批量數據
insert into myemp1 select * from emp;
刪除
全部刪除:
delete from 表名;
局部
delete 表名 where 條件
eg.刪除和7785崗位相同的員工的所有信息
DELETE FROM myemp1 WHERE job=(select job from myemp1 where empno=7785);
增加修改刪除語句後一定要記得加上commit(事物處理操作)
截斷表
truncate table 表名
eg.TRUNCATE TABLE dept;
與delete的區別 DELETE數據在未提交前可以回滾,TRUNCATE則會自動提交。