.Net程式員學用Oracle系列(17):資料庫管理工具(SQL Plus)

来源:http://www.cnblogs.com/hanzongze/archive/2017/02/18/Oracle-SQLPlus.html
-Advertisement-
Play Games

1、 " Oracle 資料庫管理工具概述 " 2、 " SQL Plus 實用命令參考 " 2.1、 "連接/斷開命令" 2.2、 "執行 SQL 語句" 2.3、 "執行 PL/SQL 語句" 2.4、 "文件操作命令" 2.5、 "修改用戶密碼" 2.6、 "執行存儲過程" 2.7、 "其它命 ...


1、Oracle 資料庫管理工具概述

顧名思義,資料庫管理工具就是用來管理資料庫的,一般分為命令行工具和圖形化工具兩類。平常大家說的資料庫管理工具一般是指圖形化工具。常見的每種資料庫都有很多管理工具,還有支持多種資料庫管理的工具,可謂是五花八門。一般資料庫廠商都會提供針對自家資料庫的管理工具,譬如微軟的 SQL Server Management Studio(SSMS),甲骨文的 SQL Developer、SQL*Plus(由於*不易寫,下文將統一省略為 SQL Plus)、Enterprise Manager(EM) 等。

如果你用 SQL Server,那麼 SSMS 將是你唯一明智的選擇,因為 SSMS 是一個包羅萬象的集成環境,幾乎你需要的所有功能都能從中找到,而且它界面較為美觀、操作也比較方便和流暢,第三方工具實在難以望其項背。但如果你用 Oracle,你會發現 SQL Plus 和 EM 根本用不順手,可能 DBA 更喜歡這兩個工具,而 SQL Developer 明顯比較卡頓。所以程式員一般都不用 Oracle 官方的工具,反倒是用 PL/SQL Developer、Toad for Oracle 等三方工具的比較多。

我發現身邊的同事基本上都是用 PL/SQL Developer,只有極少數在用 Toad for Oracle 或 SQL Developer;而且有經驗的程式員一般都用過 SQL Plus,但普遍都是通過 cmd 來調用,說實話 SQL Plus 里有些命令的確很好用。下麵將簡述幾個常見工具以供大家參考:

2、SQL Plus 實用命令參考

SQL Plus 支持的命令非常多,絕大部分我也沒用過,但有些好用的命令偶爾也會用用。本節將按功能介紹一些我個人覺得還比較實用的命令。在具體介紹之前,我先做兩點說明,第一,SQL Plus 總是會通過一個右尖括弧“>”來提示輸入下一行;第二,很多命令都有簡寫形式,本文會同時給出兩種形式,為減少累贅敘述和增強排版美觀,書寫格式統一定為:完全命令/簡寫命令

2.1、連接/斷開命令

連接命令:打開 cmd 輸入sqlplus並按下回車(即打開 SQL Plus),結果如圖:
sqlplus-01
根據提示輸入用戶名並按下Enter,會進一步提示輸入口令,然後輸入密碼並按下Enter,即可連上 Oracle,結果如圖:
sqlplus-02
這裡有個需要註意的小細節就是密碼不會回顯,所以你得確保一次性輸對,過程中不能按其它鍵,儘管按什麼都看不見。

如果你內心是拒絕看不到輸入的,那麼還可以更簡單一些,只要在提示輸入用戶名的時候一次性把用戶名和密碼都輸入,然後回車也能連上 Oracle。具體寫法有 4 種,語法示例:

username/password
username/password@tnsname
username/password@//host:port/sid
/ as sysdba

其中,第 1 種寫法通過本地連接,不需要資料庫伺服器啟動監聽,只要資料庫伺服器處於可用狀態即可。第 2 種寫法通過網路連接,需要資料庫伺服器啟動監聽。第 3 種寫法與第 2 種寫法功能類似,而且不用配置監聽名。第 4 種寫法通過操作系統認證,不需要資料庫伺服器啟動監聽,也不需要資料庫伺服器處於可用狀態。

其實還有更簡單的方式,一步就能連上 Oracle——打開 cmd 之後一次性輸入sqlplus和上文 4 種用戶名密碼寫法中的任何一種即可。示例如圖(寫法 1):
sqlplus-03

斷開命令:連上資料庫之後,如果想要回到 cmd,可以用exitquit,這兩個命令的功能相同,都是終止 SQL Plus 並返回到操作系統。示例如圖:
sqlplus-04

假如要向資料庫提交修改並斷開連接,但不想退出 SQL Plus,可以用disconnect/disc,示例如圖:
sqlplus-05

斷開連接後如果想再連上資料庫就得用connect/conn了,該命令之後可以跟上文 4 種用戶名密碼寫法中的前 3 種。示例如圖(寫法 1):
sqlplus-06

2.2、執行 SQL 語句

可以在 SQL Plus 中執行任何 SQL 語句。有個/命令專門用於執行 SQL 語句或 PL/SQL 語句塊,寫完整個語句後回車,然後在下一行輸入一個/再回車,即可執行上面的語句。示例如圖:
sqlplus-07
我本人不太喜歡/命令,因為它的用法讓我感覺到不適,尤其是得按多次回車,比較繁瑣。後來我發現只要在 SQL 語句末尾加上;並回車也能執行,除有些多行 PL/SQL 語句塊必須用/才能執行以外,其它情況都可以用;替代/。所以我平常是能用;就用;,實在不行再用/。示例如圖:
sqlplus-08

可以通過在行的尾部輸入一個連字元-並回車把較長的 SQL 語句分成多行輸入,為了排版也可以在連字元的前面輸入空格,甚至可以省略連字元。示例如圖:
sqlplus-09

2.3、執行 PL/SQL 語句

也可以在 SQL Plus 中執行 PL/SQL 命令或塊。譬如你可以通過show命令來查看當前登錄用戶的用戶名,示例如圖:
sqlplus-10
show用於顯示 SQL Plus 系統變數或 SQL Plus 環境的值。與之相對的set用於設置系統變數的值以改變當前會話的 SQL Plus 環境。如果查詢結果集的列數或行數較多的話,SQL Plus 的顯示結果可能會很亂,這時候就可以通過set來改變linesizepagesize的值,從而使得顯示結果更為美觀。示例如圖:
sqlplus-11

另外,show命令還有幾個與linesize用法完全相同的參數,如release/rel用於顯示版本,sga用於顯示 SGA,all用於顯示所有系統參數的當前值,具體寫法可參考上例。set命令有一對類似開關的參數分別是time ontime off,前者用於在視窗每一行前顯示當前系統時間部分,而後者則用於關閉時間顯示,也就是預設的效果,有興趣的讀者可自行試試set time on的效果。

有個非常好用的命令describe/desc,官方釋義為:列出指定的表、視圖或同義詞的列定義,或者列出指定函數或過程的規範。示例如圖:
sqlplus-12

2.4、文件操作命令

有時候好不容易寫了一條比較長的語句,而且往後可能還會用到,這就需要保存下來備用了,或者你想執行某個腳本文件中的腳本,又或者你只是想看看某個腳本文件,甚至你還想直接打開腳本文件編輯它……很顯然,如果沒有相關命令的支持,在 cmd 視窗里是很不方便完成這類文件操作的,好在 SQL Plus 已經提供了相關命令。命令說明如下:

  • save:把緩衝區中的內容保存到一個操作系統文件中(我試過尾碼用 sql 或 txt 都行)。
  • start\@:執行指定腳本中的 SQL Plus 語句。可調用本地文件系統或 Web 伺服器中的腳本。
  • @@:執行腳本。這個命令與@命令類似。所不同的是在執行嵌套的腳本時,它會在與調用它的腳本相同的路徑中查找要執行的腳本。簡單的說就是它可以在一個腳本中調用另一個腳本。
  • get:把操作系統文件中的內容讀取到緩衝區中。
  • edit:調用操作系統的一個文本編輯器來編輯指定文件或緩衝區中的內容。
  • spool\spo:把查詢結果保存到操作系統文件中,也可以發送到印表機。

前 5 個命令用法是一樣的,只需要在命令後面跟腳本文件全路徑回車即可。也可以只寫文件名,即預設腳本文件在當前用戶目錄中(格式:“C:\Users\用戶名\腳本文件名”,我只在 Windows 7 中測試過)。這 5 個命令相對來說比較簡單,結果也顯而易見,就不再提供示例了。

spo命令相對複雜,我感覺它就相當於一個文件操作開關,它可以把打開後到關閉前所有查詢語句及查詢結果都保存到指定的文件中。示例如圖:
sqlplus-13
結果如圖:
sqlplus-14

2.5、修改用戶密碼

password\passw:修改指定用戶的密碼,省略參數預設修改當前用戶的密碼。註意密碼不在輸入設備上回顯。示例如圖:
sqlplus-15

2.6、執行存儲過程

  • execute\exec:執行 PL/SQL 語句。尤其是執行帶存儲過程的語句,比普通的 PL/SQL 語法要簡潔很多,尤其是執行不帶參數的存儲過程,直接在exec後跟存儲過程名字並回車即可。
  • variable\var:聲明可在 PL/SQL 中引用的綁定變數。
  • print:顯示綁定變數的當前值。

普通 PL/SQL 語法調用帶輸出參數的存儲過程,示例如圖:
sqlplus-17
利用exec調用帶輸出參數的存儲過程,示例如圖:
sqlplus-18

2.7、其它命令

  • help:訪問 SQL Plus 幫助系統。這應該是非常有用的一個命令,可以在這個命令之後跟其它命令來查看其它命令的幫助說明。
  • host:在不退出 SQL Plus 的情況下執行操作系統命令。譬如正在用 SQL Plus 的時候,急需看一下本機能不能訪問百度,示例如圖:
    sqlplus-16
  • startup:啟動 Oracle 實例,並可裝載和打開資料庫。
  • shutdown:關閉正在運行的 Oracle 實例。

3、總結

本文主要對常見 Oracle 資料庫管理工具做了個概括,並著重對 SQL Plus 中的實用命令做了個總結。可能大多數開發人員都覺得 SQL Plus 使用不方便,但我個人覺得某些特殊時候用一下 SQL Plus 反而能更方便快捷的解決問題。譬如你突然忘記了某個急需登錄的用戶的密碼,比起先打開其它資料庫管理工具,然後以管理員身份登錄,進而找到對應用戶,最後再來更改密碼而言,顯然是通過 SQL Plus 操作更為簡單快速,示例如圖:
sqlplus-19

本文鏈接http://www.cnblogs.com/hanzongze/p/Oracle-SQLPlus.html
版權聲明:本文為博客園博主 韓宗澤 原創,作者保留署名權!歡迎通過轉載、演繹或其它傳播方式來使用本文,但必須在明顯位置給出作者署名和本文鏈接!本人初寫博客,水平有限,若有不當之處,敬請批評指正,謝謝!



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 下麵舉一些小例子: 先假設的創建一個上下文環境 1.canvas做灰色圖像: 個人認為主要的知識點在於: (1)獲取當前畫布中圖像的各個像素點的值; (2)灰色圖像的求解方式(r+g+b)/3,再將這個值賦給原來的像素的R、G、B; (3)在用新的顏色值畫一張圖片 2.canvas刮刮樂 個人認為主 ...
  • No1. 必須搭建java環境 只需要最基礎的java環境,也就是cmd下可以運行java和javac即可, 具體教程請自行百度,都會有很詳細的教程,這裡不重點介紹。 No2. 下載安裝HBuilder 請在這裡下載HBuilder:http://www.dcloud.io/, 下載完成後請將zip ...
  • [1]效果演示 [2]原理解釋 [3]具體實現 [4]插件代碼 ...
  • 一、this.xx 和 xx 是兩回事 受後端語言影響,總把this.xx 和xx 當中一回事,認為在function中,xx 就是this.xx,其實完全兩回事; this.xx 是沿著this 原型鏈找變數,xx是沿著作用域鏈找變數 var func = function(){ console. ...
  • 本文將從頭開始編寫實際的代碼來完成一個angular2的demo。 題外話是其實angular2官網的快速開始項目已經很酷炫了,但其側重快速二字,只夠拿來練習玩耍,倒是github上確實已經有了一些不錯的angular2-starter。 1. 安裝必要的node環境與npm 當然TS環境也是必須的 ...
  • 微信公眾號開發,主要是移動端網頁的頁面開發,在這裡推薦3個移動端UI框架:WeUI、SUI和Mint UI。 ...
  • 1. 個人開發者賬號的申請 2. DUNS的申請 3. 個人開發者賬號轉公司賬號 ...
  • Navicatfor MySQL:快捷鍵整理, 使用快捷鍵,提升工作效率! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...