oracle sqlplus 常用命令大全
更新時(shí)間:2009年05月23日 22:18:35 作者:
show和set命令是兩條用于維護(hù)SQL*Plus系統(tǒng)變量的命令
SQL> show all --查看所有68個(gè)系統(tǒng)變量值
SQL> show user --顯示當(dāng)前連接用戶
SQL> show error --顯示錯(cuò)誤
SQL> set heading off --禁止輸出列標(biāo)題,默認(rèn)值為ON
SQL> set feedback off --禁止顯示最后一行的計(jì)數(shù)反饋信息,默認(rèn)值為"對(duì)6個(gè)或更多的記錄,回送ON"
SQL> set timing on --默認(rèn)為OFF,設(shè)置查詢耗時(shí),可用來估計(jì)SQL語句的執(zhí)行時(shí)間,測(cè)試性能
SQL> set sqlprompt "SQL> " --設(shè)置默認(rèn)提示符,默認(rèn)值就是"SQL> "
SQL> set linesize 1000 --設(shè)置屏幕顯示行寬,默認(rèn)100
SQL> set autocommit ON --設(shè)置是否自動(dòng)提交,默認(rèn)為OFF
SQL> set pause on --默認(rèn)為OFF,設(shè)置暫停,會(huì)使屏幕顯示停止,等待按下ENTER鍵,再顯示下一頁
SQL> set arraysize 1 --默認(rèn)為15
SQL> set long 1000 --默認(rèn)為80
說明:
long值默認(rèn)為80,設(shè)置1000是為了顯示更多的內(nèi)容,因?yàn)楹芏鄶?shù)據(jù)字典視圖中用到了long數(shù)據(jù)類型,如:
SQL> desc user_views
列名 可空值否 類型
------------------------------- -------- ----
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
SQL> define a = '''20000101 12:01:01''' --定義局部變量,如果想用一個(gè)類似在各種顯示中所包括的回車那樣的常量,
--可以用define命令來設(shè)置
SQL> select &a from dual;
原值 1: select &a from dual
新值 1: select '20000101 12:01:01' from dual
'2000010112:01:01
-----------------
20000101 12:01:01
問題提出:
1、用戶需要對(duì)數(shù)據(jù)庫用戶下的每一張表都執(zhí)行一個(gè)相同的SQL操作,這時(shí),一遍、一遍的鍵入SQL語句是很麻煩的
實(shí)現(xiàn)方法:
SQL> set heading off --禁止輸出列標(biāo)題
SQL> set feedback off --禁止顯示最后一行的計(jì)數(shù)反饋信息
列出當(dāng)前用戶下所有同義詞的定義,可用來測(cè)試同義詞的真實(shí)存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查詢當(dāng)前用戶下所有表的記錄數(shù)
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
把所有符合條件的表的select權(quán)限授予為public
select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
刪除用戶下各種對(duì)象
select 'drop '||tabtype||' '||tname from tab;
刪除符合條件用戶
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速編譯所有視圖
----當(dāng)在把數(shù)據(jù)庫倒入到新的服務(wù)器上后(數(shù)據(jù)庫重建),需要將視圖重新編譯一遍,
----因?yàn)樵摫砜臻g視圖到其它表空間的表的連接會(huì)出現(xiàn)問題,可以利用PL/SQL的語言特性,快速編譯。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然后執(zhí)行ON.SQL即可。
SQL> @ON.SQL
當(dāng)然,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶名;' FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶名.'||TNAME||';' FROM TAB;
命令列表:
假設(shè)當(dāng)前執(zhí)行命令為:select * from tab;
(a)ppend 添加文本到緩沖區(qū)當(dāng)前行尾 a order by tname 結(jié)果:select * from tab order by tname;
?。ㄗⅲ篴后面跟2個(gè)空格)
(c)hange/old/new 在當(dāng)前行用新的文本替換舊的文本 c/*/tname 結(jié)果:select tname from tab;
(c)hange/text 從當(dāng)前行刪除文本 c/tab 結(jié)果:select tname from ;
del 刪除當(dāng)前行
del n 刪除第n行
(i)nput 文本 在當(dāng)前行之后添加一行
(l)ist 顯示緩沖區(qū)中所有行
(l)ist n 顯示緩沖區(qū)中第 n 行
(l)ist m n 顯示緩沖區(qū)中 m 到 n 行
run 執(zhí)行當(dāng)前緩沖區(qū)的命令
/ 執(zhí)行當(dāng)前緩沖區(qū)的命令
r 執(zhí)行當(dāng)前緩沖區(qū)的命令
@文件名 運(yùn)行調(diào)入內(nèi)存的sql文件,如:
SQL> edit s<回車>
如果當(dāng)前目錄下不存在s.sql文件,則系統(tǒng)自動(dòng)生成s.sql文件,
在其中輸入"select * from tab;",存盤退出。
SQL> @s<回車>
系統(tǒng)會(huì)自動(dòng)查詢當(dāng)前用戶下的所有表、視圖、同義詞。
@@文件名 在.sql文件中調(diào)用令一個(gè).sql文件時(shí)使用
save 文件名 將緩沖區(qū)的命令以文件方式存盤,缺省文件擴(kuò)展名為.sql
get 文件名 調(diào)入存盤的sql文件
start 文件名 運(yùn)行調(diào)入內(nèi)存的sql文件
spool 文件名 把這之后的各種操作及執(zhí)行結(jié)果"假脫機(jī)"即存盤到磁盤文件上,默認(rèn)文件擴(kuò)展名為.lst
spool 顯示當(dāng)前的"假脫機(jī)"狀態(tài)
spool off 停止輸出
例:
SQL> spool a
SQL> spool
正假脫機(jī)到 A.LST
SQL> spool off
SQL> spool
當(dāng)前無假脫機(jī)
exit 退出SQL*PLUS
desc 表名 顯示表的結(jié)構(gòu)
show user 顯示當(dāng)前連接用戶
show error 顯示錯(cuò)誤
show all 顯示所有68個(gè)系統(tǒng)變量值
edit 打開默認(rèn)編輯器,Windows系統(tǒng)中默認(rèn)是notepad.exe,把緩沖區(qū)中最后一條SQL語句調(diào)入afiedt.buf文件中進(jìn)行編輯
edit 文件名 把當(dāng)前目錄中指定的.sql文件調(diào)入編輯器進(jìn)行編輯
clear screen 清空當(dāng)前屏幕顯示
二.Oracle sqlplus語句編輯命令
首先我們輸入這樣一條指令:
SELECT emp_id, emp_name
FROM Employees
input 命令可以接著上一條指令的后面添加語句,比如在上述語句運(yùn)行后輸入:
input WHERE emp_age > 30
便可得到如下指令:
SELECT emp_id, emp_name
FROM Employees
WHERE emp_age > 30
ln 命令用于指定對(duì)以輸入的第n行語句進(jìn)行操作,比如在上述語句運(yùn)行后輸入:
l1則當(dāng)前選中的語句行即為
SELECT emp_id, emp_name
(語句前有"*"表示)
a 命令用于直接在當(dāng)前行的末尾加上字符,比如在上述語句運(yùn)行后輸入:
a , emp_dept
則執(zhí)行的指令變?yōu)椋?
SELECT emp_id, emp_name, emp_dept
FROM Employees
WHERE emp_age > 30
c 命令用于修改當(dāng)前語句中的字符,比如在上述語句運(yùn)行后輸入:
c /emp_name/emp_age/則執(zhí)行的指令變?yōu)椋?
SELECT emp_id, emp_age, emp_dept
FROM Employees
WHERE emp_age > 30
del n 命令用于刪除第n行指令,比如在上述語句運(yùn)行后輸入:
DEL 3
則執(zhí)行的指令變?yōu)椋?
SELECT emp_id, emp_age, emp_dept
FROM Employees
SQL> show user --顯示當(dāng)前連接用戶
SQL> show error --顯示錯(cuò)誤
SQL> set heading off --禁止輸出列標(biāo)題,默認(rèn)值為ON
SQL> set feedback off --禁止顯示最后一行的計(jì)數(shù)反饋信息,默認(rèn)值為"對(duì)6個(gè)或更多的記錄,回送ON"
SQL> set timing on --默認(rèn)為OFF,設(shè)置查詢耗時(shí),可用來估計(jì)SQL語句的執(zhí)行時(shí)間,測(cè)試性能
SQL> set sqlprompt "SQL> " --設(shè)置默認(rèn)提示符,默認(rèn)值就是"SQL> "
SQL> set linesize 1000 --設(shè)置屏幕顯示行寬,默認(rèn)100
SQL> set autocommit ON --設(shè)置是否自動(dòng)提交,默認(rèn)為OFF
SQL> set pause on --默認(rèn)為OFF,設(shè)置暫停,會(huì)使屏幕顯示停止,等待按下ENTER鍵,再顯示下一頁
SQL> set arraysize 1 --默認(rèn)為15
SQL> set long 1000 --默認(rèn)為80
說明:
long值默認(rèn)為80,設(shè)置1000是為了顯示更多的內(nèi)容,因?yàn)楹芏鄶?shù)據(jù)字典視圖中用到了long數(shù)據(jù)類型,如:
SQL> desc user_views
列名 可空值否 類型
------------------------------- -------- ----
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
SQL> define a = '''20000101 12:01:01''' --定義局部變量,如果想用一個(gè)類似在各種顯示中所包括的回車那樣的常量,
--可以用define命令來設(shè)置
SQL> select &a from dual;
原值 1: select &a from dual
新值 1: select '20000101 12:01:01' from dual
'2000010112:01:01
-----------------
20000101 12:01:01
問題提出:
1、用戶需要對(duì)數(shù)據(jù)庫用戶下的每一張表都執(zhí)行一個(gè)相同的SQL操作,這時(shí),一遍、一遍的鍵入SQL語句是很麻煩的
實(shí)現(xiàn)方法:
SQL> set heading off --禁止輸出列標(biāo)題
SQL> set feedback off --禁止顯示最后一行的計(jì)數(shù)反饋信息
列出當(dāng)前用戶下所有同義詞的定義,可用來測(cè)試同義詞的真實(shí)存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查詢當(dāng)前用戶下所有表的記錄數(shù)
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
把所有符合條件的表的select權(quán)限授予為public
select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
刪除用戶下各種對(duì)象
select 'drop '||tabtype||' '||tname from tab;
刪除符合條件用戶
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速編譯所有視圖
----當(dāng)在把數(shù)據(jù)庫倒入到新的服務(wù)器上后(數(shù)據(jù)庫重建),需要將視圖重新編譯一遍,
----因?yàn)樵摫砜臻g視圖到其它表空間的表的連接會(huì)出現(xiàn)問題,可以利用PL/SQL的語言特性,快速編譯。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然后執(zhí)行ON.SQL即可。
SQL> @ON.SQL
當(dāng)然,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶名;' FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶名.'||TNAME||';' FROM TAB;
命令列表:
假設(shè)當(dāng)前執(zhí)行命令為:select * from tab;
(a)ppend 添加文本到緩沖區(qū)當(dāng)前行尾 a order by tname 結(jié)果:select * from tab order by tname;
?。ㄗⅲ篴后面跟2個(gè)空格)
(c)hange/old/new 在當(dāng)前行用新的文本替換舊的文本 c/*/tname 結(jié)果:select tname from tab;
(c)hange/text 從當(dāng)前行刪除文本 c/tab 結(jié)果:select tname from ;
del 刪除當(dāng)前行
del n 刪除第n行
(i)nput 文本 在當(dāng)前行之后添加一行
(l)ist 顯示緩沖區(qū)中所有行
(l)ist n 顯示緩沖區(qū)中第 n 行
(l)ist m n 顯示緩沖區(qū)中 m 到 n 行
run 執(zhí)行當(dāng)前緩沖區(qū)的命令
/ 執(zhí)行當(dāng)前緩沖區(qū)的命令
r 執(zhí)行當(dāng)前緩沖區(qū)的命令
@文件名 運(yùn)行調(diào)入內(nèi)存的sql文件,如:
SQL> edit s<回車>
如果當(dāng)前目錄下不存在s.sql文件,則系統(tǒng)自動(dòng)生成s.sql文件,
在其中輸入"select * from tab;",存盤退出。
SQL> @s<回車>
系統(tǒng)會(huì)自動(dòng)查詢當(dāng)前用戶下的所有表、視圖、同義詞。
@@文件名 在.sql文件中調(diào)用令一個(gè).sql文件時(shí)使用
save 文件名 將緩沖區(qū)的命令以文件方式存盤,缺省文件擴(kuò)展名為.sql
get 文件名 調(diào)入存盤的sql文件
start 文件名 運(yùn)行調(diào)入內(nèi)存的sql文件
spool 文件名 把這之后的各種操作及執(zhí)行結(jié)果"假脫機(jī)"即存盤到磁盤文件上,默認(rèn)文件擴(kuò)展名為.lst
spool 顯示當(dāng)前的"假脫機(jī)"狀態(tài)
spool off 停止輸出
例:
SQL> spool a
SQL> spool
正假脫機(jī)到 A.LST
SQL> spool off
SQL> spool
當(dāng)前無假脫機(jī)
exit 退出SQL*PLUS
desc 表名 顯示表的結(jié)構(gòu)
show user 顯示當(dāng)前連接用戶
show error 顯示錯(cuò)誤
show all 顯示所有68個(gè)系統(tǒng)變量值
edit 打開默認(rèn)編輯器,Windows系統(tǒng)中默認(rèn)是notepad.exe,把緩沖區(qū)中最后一條SQL語句調(diào)入afiedt.buf文件中進(jìn)行編輯
edit 文件名 把當(dāng)前目錄中指定的.sql文件調(diào)入編輯器進(jìn)行編輯
clear screen 清空當(dāng)前屏幕顯示
二.Oracle sqlplus語句編輯命令
首先我們輸入這樣一條指令:
SELECT emp_id, emp_name
FROM Employees
input 命令可以接著上一條指令的后面添加語句,比如在上述語句運(yùn)行后輸入:
input WHERE emp_age > 30
便可得到如下指令:
SELECT emp_id, emp_name
FROM Employees
WHERE emp_age > 30
ln 命令用于指定對(duì)以輸入的第n行語句進(jìn)行操作,比如在上述語句運(yùn)行后輸入:
l1則當(dāng)前選中的語句行即為
SELECT emp_id, emp_name
(語句前有"*"表示)
a 命令用于直接在當(dāng)前行的末尾加上字符,比如在上述語句運(yùn)行后輸入:
a , emp_dept
則執(zhí)行的指令變?yōu)椋?
SELECT emp_id, emp_name, emp_dept
FROM Employees
WHERE emp_age > 30
c 命令用于修改當(dāng)前語句中的字符,比如在上述語句運(yùn)行后輸入:
c /emp_name/emp_age/則執(zhí)行的指令變?yōu)椋?
SELECT emp_id, emp_age, emp_dept
FROM Employees
WHERE emp_age > 30
del n 命令用于刪除第n行指令,比如在上述語句運(yùn)行后輸入:
DEL 3
則執(zhí)行的指令變?yōu)椋?
SELECT emp_id, emp_age, emp_dept
FROM Employees
相關(guān)文章
Oracle數(shù)字類型number自增的實(shí)現(xiàn)代碼
這篇文章主要介紹了Oracle數(shù)字類型number自增的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-08-08Oracle數(shù)據(jù)庫"記錄被另一個(gè)用戶鎖住"解決方法(推薦)
數(shù)據(jù)庫是一個(gè)多用戶使用的共享資源。當(dāng)多個(gè)用戶并發(fā)地存取數(shù)據(jù)時(shí),在數(shù)據(jù)庫中就會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)存取同一數(shù)據(jù)的情況。這篇文章主要介紹了Oracle數(shù)據(jù)庫"記錄被另一個(gè)用戶鎖住"解決方法2018-03-03Oracle SQL語句實(shí)現(xiàn)數(shù)字四舍五入取整
本文介紹Oracle中一些對(duì)數(shù)字的常用操作,包括向上向下去整、四舍五入、保留N位小數(shù)等操作,希望對(duì)大家有所幫助。2016-05-05Oracle數(shù)據(jù)庫rownum和row_number的不同點(diǎn)
在Oracle中,有一個(gè)很有趣的東西,那就是rownum。當(dāng)你從某個(gè)表中查詢數(shù)據(jù)的時(shí)候,返回的結(jié)果集中都會(huì)帶有rownum這個(gè)字段,而且有時(shí)候也可以使用rownum進(jìn)行一些條件查詢2015-11-11oracle臨時(shí)表空間的作用與創(chuàng)建及相關(guān)操作詳解
Oracle可能會(huì)需要使用到一些臨時(shí)存儲(chǔ)空間,用于臨時(shí)保存解析過的查詢語句以及在排序過程中產(chǎn)生的臨時(shí)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于oracle臨時(shí)表空間的作用與創(chuàng)建及相關(guān)操作的相關(guān)資料,需要的朋友可以參考下2022-07-07Oracle查看和修改連接數(shù)(進(jìn)程/會(huì)話/并發(fā)等等)
查詢數(shù)據(jù)庫當(dāng)前進(jìn)程的連接數(shù)及會(huì)話的連接數(shù)、并發(fā)連接數(shù)以及會(huì)話情況等等,感興趣的你可以參考下哈,希望可以幫助到你2013-03-03plsql配置tnsnames.ora的實(shí)現(xiàn)方法
這篇文章主要介紹了plsql配置tnsnames.ora的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09