官术网_书友最值得收藏!

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中不區分大小寫。

主站蜘蛛池模板: 来凤县| 武邑县| 石泉县| 安丘市| 呼图壁县| 陇西县| 日土县| 平湖市| 韶关市| 霍城县| 砀山县| 仙游县| 松阳县| 蕉岭县| 英吉沙县| 托克逊县| 宁德市| 韶山市| 柳河县| 来凤县| 昌吉市| 肃北| 平原县| 报价| 甘德县| 大关县| 宁南县| 永州市| 牡丹江市| 玉龙| 容城县| 邯郸市| 江口县| 三穗县| 榆中县| 岳普湖县| 黑河市| 华亭县| 隆子县| 称多县| 延寿县|