- Oracle從入門到精通(第5版)
- 明日科技編著
- 1626字
- 2024-12-27 22:36:46
3.1 SQL*Plus工具
在Oracle 19c數據庫系統中,用戶對數據庫的操作主要是通過SQL*Plus來完成的。SQL*Plus作為Oracle的客戶端工具,既可以建立位于數據庫服務器上的數據連接,也可以建立位于網絡中的數據連接。
3.1.1 啟動SQL*Plus
下面介紹如何啟動SQL*Plus和如何使用SQL*Plus連接數據庫。
(1)選擇“開始”/Oracle-OraDb19c_home1/SQLPlus,打開如圖3.1所示的SQL*Plus啟動界面。
(2)在命令提示符的位置輸入登錄用戶(如system或sys等系統管理賬戶)和登錄密碼(密碼是在安裝或創建數據庫時指定的),若輸入的用戶名和密碼正確,則SQL*Plus將連接到數據庫,如圖3.2所示。

圖3.1 SQL*Plus啟動界面

圖3.2 使用SQL*Plus連接數據庫
另外,還可以通過先在“運行”中輸入cmd命令來啟動命令行窗口,然后在該窗口中輸入SQL*Plus命令來連接數據庫,如圖3.3和圖3.4所示。使用SQL*Plus命令連接數據庫實例的語法格式如下。
SQLPLUS username[/password][@connect_identifier] [AS SYSOPER|SYSDBA]
username:表示登錄用戶名。
password:表示登錄密碼。
@connect_identifier:表示連接的全局數據庫名,若連接本機上的默認數據庫,則可以省略。

圖3.3 使用SQL*Plus命令連接數據庫實例

圖3.4 通過命令啟動的SQL*Plus命令行窗口
說明
在輸入Oracle數據庫命令時,其關鍵字不區分大小寫(例如,輸入sqlplus或SQLPLUS都可以),但參數區分大小寫。
3.1.2 使用SQL*Plus連接SCOTT用戶
SCOTT用戶是Oracle數據庫系統中常用的用戶,用戶名為scott,密碼為tiger。SCOTT用戶中包含員工信息表emp、部門信息表dept、獎金表bonus和工資等級表salgrade,本書中的大多數實例操作的就是這四張表。
但是在Oracle 19c中并不存在SCOTT用戶,所以需要用戶自行創建,下面演示如何創建SCOTT用戶,并創建SCOTT用戶中的數據表。
(1)打開SQL*Plus命令行窗口之后,在“請輸入用戶名”后輸入scott,在“輸入口令”后輸入tiger,按Enter鍵之后的結果如圖3.5所示。
(2)通過圖3.5可知,不能連接SCOTT用戶,所以首先應以sysdba的身份連接數據庫(用戶名為“sqlplus/as sysdba”,輸入口令后直接按Enter鍵,即可連接sys數據庫),然后創建scott用戶,命令如下。
sqlplus /as sysdba create user scott identified by tiger;
命令執行結果如圖3.6所示。

圖3.5 不能連接數據庫

圖3.6 創建scott用戶
(3)設置用戶使用的表空間,命令如下。
ALTER USER scott DEFAULT TABLESPACE USERS; ALTER USER scott TEMPORARY TABLESPACE TEMP;
命令執行結果如圖3.7所示。
(4)為scott用戶賦予權限,并使用scott用戶登錄,命令如下。
GRANT dba TO scott; CONNECT scott/tiger;
命令執行結果如圖3.8所示。

圖3.7 設置用戶使用的表空間

圖3.8 為scott賦予權限并登錄
(5)輸入以下代碼,創建部門信息表dept、員工信息表emp、獎金表bonus和工資等級表salgrade,并插入測試數據。
-- 創建數據表 CREATE TABLE dept ( deptno NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, dname VARCHAR2(14) , loc VARCHAR2(13) ) ; CREATE TABLE emp ( empno NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT ); CREATE TABLE bonus ( enamE VARCHAR2(10) , job VARCHAR2(9) , sal NUMBER, comm NUMBER ) ; CREATE TABLE salgrade ( grade NUMBER, losal NUMBER, hisal NUMBER ); -- 插入測試數據 —— dept INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO dept VALUES (20,'RESEARCH','DALLAS'); INSERT INTO dept VALUES (30,'SALES','CHICAGO'); INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON'); -- 插入測試數據 —— emp INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20); INSERT INTO emp VALUES (7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30); INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30); INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20); INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30); INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30); INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10); INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,to_date('13-07-87','dd-mm-yyyy')-85,3000,NULL,20); INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10); INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30); INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,to_date('13-07-87','dd-mm-yyyy')-51,1100,NULL,20); INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30); INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20); INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10); -- 插入測試數據 —— salgrade INSERT INTO salgrade VALUES (1,700,1200); INSERT INTO salgrade VALUES (2,1201,1400); INSERT INTO salgrade VALUES (3,1401,2000); INSERT INTO salgrade VALUES (4,2001,3000); INSERT INTO salgrade VALUES (5,3001,9999); -- 事務提交 COMMIT;
3.1.3 使用SQL*Plus查詢數據庫
以上代碼執行完畢之后,為了驗證是否成功連接上了系統的scott用戶,可以通過在SQL *Plus中查詢部門表的所有信息(dept表)來進行測試。
【例3.1】查詢scott用戶的部門表(dept表)的所有信息。(實例位置:資源包\ TM\sl\3\3.1)
使用scott用戶連接Oracle后,在提示符“SQL>”后輸入如下語句。
select * from dept;
語句執行結果如圖3.9所示。
說明
在Oracle中,命令不區分大小寫,并且在SQL*Plus編輯器中每條命令都以分號(;)作為結束標志。
編寫SQL代碼時,標點符號應采用英文形式,不允許出現中文形式。如執行“SELECT * FROM dept;”將會出現如圖3.10所示的結果。因為在SQL*Plus編輯器中是以英文形式的分號(;)作為結尾的,相當于結束符。如果輸入的是中文形式的分號(;),SQL*Plus編輯器沒有遇到結束符,會認為這段SQL代碼沒有結束,從而讓使用者繼續輸入。

圖3.9 通過SQL*Plus查詢部門表dept

圖3.10 SQL代碼中出現中文形式的標點符號
3.1.4 退出SQL*Plus
當不再使用SQL*Plus時,只需要先在提示符“SQL>”后面輸入exit或者quit命令,然后按Enter鍵,即可退出SQL*Plus環境,如圖3.11所示。

圖3.11 退出SQL*Plus
使用命令退出SQL*Plus為正常退出方式,單擊右上角紅叉退出是非正常退出。在對數據庫進行數據操作后,非正常退出可能會造成數據的丟失。
說明
輸入小寫或大寫的EXIT或QUIT都可退出SQL*Plus會話。SQL*Plus中不區分大小寫。
- Deploying Node.js
- Spring 5企業級開發實戰
- 程序員面試算法寶典
- 區塊鏈架構與實現:Cosmos詳解
- Learning ELK Stack
- 深入淺出RxJS
- Mastering Apache Spark 2.x(Second Edition)
- Spring Boot企業級項目開發實戰
- ElasticSearch Cookbook(Second Edition)
- Unity 2018 Augmented Reality Projects
- Qlik Sense? Cookbook
- Building Business Websites with Squarespace 7(Second Edition)
- 現代CPU性能分析與優化
- LabVIEW數據采集
- JBoss AS 7 Development