Oracle數據庫常見的增刪改查操作語句大全

回收站:
show recyclebin (命令行語句)
清空回收站:
purge recyclebin
回收站還原已刪除表:
flashback table table_name to before dorp
獲取系統時間:
sysdate
平均值:
avg
條件爲真:where 1=1 條件爲假:where 1=2
分頁:rownum 索引:rowid
左右模糊查詢(INSTR相比LIKE效率高):

INSTR(column_name,value) > 0 或 LIKE '%value%'

INSTR(column_name,value) = 0 或 NO LIKE '%value%'

日期精確到日:
TRUNC(date)
數字精度截取(截取時不進行四捨五入。number截取的數字,num_digits截取精度,默認爲0):
TRUNC(number,num_digits)
NVL函數(expr1爲空,返回expr2,否則返回expr1):
NVL(expr1,expr2)
求總和:sum(column_name)求個數:count(column_name)
where和having的區別:
1、where不能放在group by後面
2、having通常跟group by一起使用,放在group by後面,此時作用相當於where

3、where後面的條件中不能有聚集函數,比如SUM(),AVG()等,而having可以


字段默認系統時間
create table users(id number(5) primary key,birthday date default sysdate)
創建視圖(只讀):
create view view_name(view_column1,view_column2) as select column1,column2 from table_name with read only;
修改視圖:
create or replace view view_name...
創建索引:
create index 索引名 on 表名(字段,...)

刪除表內容(相比delete速度快,不可帶where):
truncate table
刪除字段:
alter table table_name drop column_name datatype;
刪除表:
drop table table_name;
徹底刪除表:
drop table table_name purge;
刪除表中多餘的重複記錄,重複記錄是根據單個字段來判斷,只留有rowid最小的記錄
delete from table_name where column_name in (select column_name from table_name group by column_name having count(column_name) > 1) and rowid not in (select min(rowid) from table_name group by column_name having count(column_name ) > 1);
刪除索引:

drop index 索引名


更改字段數據類型:
alter table table_name modify column_name datatype;
修改字段名:
alter table table_name rename column column_name to new_column_name;
修改表名:
rename table_name to new_table_name;
多表關聯更新:
update unicom_card_detail u set u.zone = (select d.zone from unicom_device_info d where d.deviceip = u.ip) where EXISTS (select 1 from unicom_device_info d where d.deviceip = u.ip);
已有表添加字段:
alter table table_name add column_name datatype;

查詢表中多餘的重複數據(多個字段)
select column_name1,column_name2 from table_name group by column_name1,column_name2 having count(*) > 1;
查詢表有多少條數據:
select count(primary_key) from table_name;
查詢表中某字段有多少個不重複的數據:
select count(distinct column_name) from table_name;
查看錶結構(命令行語句):
desc table_name;
查看序列當前值和下一個值:
select seq_name.currval from dual;
select seq_name.nextval from dual;
左連接查詢(以左表爲基礎,加上左表和右表匹配後的數據):
select t.column_name1,t.column_name2,u.column_name1 from table_name1 t left join table_name2 u on t.column_name1 = u.column_name1 where ...

右連接查詢(以右表爲基礎,加上左表和右表匹配後的數據):

select t.column_name1,t.column_name2,u.column_name1 from table_name1 t right join table_name2 u on t.column_name1 = u.column_name1 where ...


最近整理的常用Oracle數據庫常用語句,筆者用的是Oracle客戶端PL/SQL工具,需要注意一點是,文章用到兩種語句窗口:SQL窗口和Command窗口,如果SQL窗口不能執行那就有命令行窗口,反之,同理。後面有必要會持續更新,記錄下來。如有筆誤或建議,請及時聯繫筆者,萬分感謝!歡迎加QQ羣一起探討學習成長:583138104







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