Oracle數據庫 語法操作彙總(三)

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則會自動提交。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章