Oracle 常用Sql 語句

2022-02-25 18:10:22 字數 4366 閱讀 2490

oracle資料庫常常被用作專案開發的資料庫之一;有時隔段時間沒使用就會忘記一些常用的sql語法,所以我們有必要記錄下常用的sql 語句,當我們需要時可以快速找到並運用。

1:建立臨時表空間

create temporary tablespace user_temp

tempfile 'q:\oracle\product\10.2.0\oradata\test\xyrj_temp.dbf'

size 50m

autoextend on

next 50m maxsize 20480m

extent management local;

2:建立資料表空間

create tablespace user_data

logging

datafile 'q:\oracle\product\10.2.0\oradata\test\xyrj_data.dbf'

size 50m

autoextend on

next 50m maxsize 20480m

extent management local;

第3步:建立使用者並指定表空間

create user username identified by password

default tablespace user_data

temporary tablespace user_temp;

第4步:給使用者授予許可權

grant connect,resource,dba to username;

oracle表空間之基本概念

oracle資料庫被劃分成稱作為表空間的邏輯區域——形成oracle資料庫的邏輯結構。乙個oracle資料庫能夠有乙個或多個表空間,而乙個表空間則對應著乙個或多個物理的資料庫檔案。表空間是oracle資料庫恢復的最小單位,容納著許多資料庫實體,如表、檢視、索引、聚簇、回退段和臨時段等

臨時表空間作用

臨時表空間用來管理資料庫排序操作以及用於儲存臨時表、中間排序結果等臨時物件,當oracle裡需要用到sort的時候,並且當pga中sort_area_size大小不夠時,將會把資料放入臨時表空間裡進行排序。像資料庫中一些操作: create index、 analyze、select distinct、order by、group by、 union all、 intersect、minus、sort-merge joins、hash join等都可能會用到臨時表空間。當操作完成後,系統會自動清理臨時表空間中的臨時物件,自動釋放臨時段。這裡的釋放只是標記為空閒、可以重用,其實實質占用的磁碟空間並沒有真正釋放。這也是臨時表空間有時會不斷增大的原因;

詳細請參考

exp help=y 檢視引數

1、全庫方式,匯出整個資料庫中所有的物件,但並不包括sys使用者中的物件

exp user/pwd@db_name full=y file=d:\database.dmp log=d:\database.log

2、使用者方式:匯出某一使用者下所有的物件,授權了許可權的使用者可以匯出其他使用者所擁有的物件。作為全庫匯出的補充應用

exp user/pwd@db_name owner=(system,sys) file=d:\owner.dmp log=d:\owner.log

3、表方式:只匯出某一使用者下指定的表,而不是所有的表。

exp user/pwd@db_name tables=(tb1,tb2) file= d:\table.dmp

4、條件匯出:將資料庫中的表table1中的字段filed1以"00"打頭的資料匯出

exp user/pwd@db_name tables=(table1) query=" where filed1 like '00%'" file=d:\query.dmplog=d:\query.log

只匯出表前200行資料

exp user/pwd@db_name tables=(table1) query="'where rownum<=200'"

用這個語句查詢你某一模式下的所有表

select object_name||',' as user_object

from user_objects where object_type='table';

同匯出exp一樣具有三種模式(完全、使用者、表)   

1、全部匯入 

imp user/pwd@db_name  file=d:\database.dmp log=d:\impdatabase.log  full=y ignore=y

2、imp user/pwd@db_name  file=d:\database.dmp  fromuser=user touser=user 

這樣使用者user的所有物件被匯入到檔案中。必須指定fromuser、touser引數,這樣才能匯入資料

3、選擇表匯入 將d:\table.dmp中的表table1 匯入

imp user/pwd@db_name file=d:\table.dmp log=d:\imptable.log tables=(table1) 

如果源表已經存在,匯入時報錯。在後面加上 ignore=y 就可以了。ignore作用是忽略錯誤繼續匯入的意思;不少情況要先是將表徹底刪除,然後匯入。

oracle建立directory

一般建立directory都是為了用資料幫浦匯入/匯出資料用

1、新建directory的語法

create [or replace] directory directory as 'pathname';

例如:create or replace directory dump_dir as 'd:\dump\dir'

這樣把目錄d:\dump\dir設定成dump_dir代表的directory

2、查詢有哪些directory

select * from dba_directories

drop user user_name cascade;

加了cascade就可以把使用者連帶的資料全部刪掉

建立database links 跨庫訪問

create public

database link sblink

connect to dgtest

using

'(description =

(address = (protocol = tcp)(host = 192.168.1.102)(port = 1521

)) (connect_data =(server =dedicated)

(service_name =orcl)))'

;

oracle儲存過程訪問其它使用者表許可權不足,為使用者設定可以訪問所有表的許可權

grant select any table to  user  with admin option

其他常用語句

檢視某張表是否被其他物件引用

select * from user_dependencies  where referenced_name='表名'

這裡表名是有區分大小寫的,必須跟表名一致才能查到資料。

oracle查詢某張表被其它表作為外來鍵

select

c.table_name,

c.constraint_name,

fc.table_name,

fc.constraint_name,

cc.column_name,

fcc.column_name

from

user_cons_columns fcc,

user_cons_columns cc,

user_constraints c,

user_constraints fc

where fc.constraint_name =

c.r_constraint_name

and fc.constraint_name =

fcc.constraint_name

and c.constraint_name =

cc.constraint_name

and c.constraint_type ='r

'and fc.table_name in ('

tb_user

')

oracle常用sql語句

1.解鎖oracle使用者下某個使用者 以內建的scott使用者為例 sql conn as sysdba sql alter user scott account unlock identified by tiger 解釋 首先要切換到sysdba使用者下,否則會提示 許可權不足 error at...

oracle常用SQL語句

最近專案中用到,現記錄一下 新增主鍵 alter table shop spec detail add constraint spec detail id primary key id 新增索引 create index spec detail id on shop spec detail id 給...

Oracle常用SQL語句

今天接到乙個新任務 任務的主要內容簡單點說就是乙個下拉框,乙個查詢條件,乙個 table 顯示。當聽完的時候感覺真的是很簡單,這樣的事情也並非沒有做過。但是當靜下心來仔細分析需求,則會發現其與眾不同之處。1 下拉框中顯示的是我們整個模組的表名稱 2 查詢條件初步設想是根據時間查詢 3 table 第...