sqlplus 命令

對於oracle 數據庫主要的使用命令,是sqlplus來完成。
在linux上的風格是:

[oracle@station ~]$ sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 2 21:02:13 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter user-name: scott
Enter password:   ---密碼是不會顯示出來的

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL>

——————————————————————————————————

SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE                  SAL
---------- ---------- --------- ---------- ------------------ ----------
      COMM     DEPTNO
---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80                 800
                   20

      7499 ALLEN      SALESMAN        7698 20-FEB-81                1600
       300         30

      7521 WARD       SALESMAN        7698 22-FEB-81                1250
       500         30


我們查詢scott下的emp表,一個數據庫下有多張數據表。但是這個查詢有折行,命令行的寬度就怎麼大不能在改了吧。我們可以使用windows的oracle客戶端上的sqlplusw.exe,因爲可以進行一些顯示數據的調整(只是看的舒服點)。
要取消折行可以用sqlplus中的一個命令:set linesize 300;

SQL> set linesize 300;
SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE                  SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80                 800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81                1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81                1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81                2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81                1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81                2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81                2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87                3000                    20
      7839 KING       PRESIDENT            17-NOV-81                5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81                1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87                1100                    20

     EMPNO ENAME      JOB              MGR HIREDATE                  SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
      7900 JAMES      CLERK           7698 03-DEC-81                 950                    30
      7902 FORD       ANALYST         7566 03-DEC-81                3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82                1300                    10

14 rows selected.

設置每頁顯示的記錄的長度:set pagesize 30   ---每頁顯示30條記錄;

這兩個命令統一被稱爲格式化命令。

在linux下如何執行一個腳本文件,我們可以通過vim編輯器進行編輯並保存成:*.sql (*帶表文件名);

[oracle@station ~]$ ls
a.txt

如何在sqlplus下執行a.txt腳本:


SQL> @a.txt

     EMPNO ENAME      JOB              MGR HIREDATE                  SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80                 800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81                1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81                1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81                2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81                1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81                2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81                2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87                3000                    20
      7839 KING       PRESIDENT            17-NOV-81                5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81                1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87                1100                    20
      7900 JAMES      CLERK           7698 03-DEC-81                 950                    30
      7902 FORD       ANALYST         7566 03-DEC-81                3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82                1300                    10

14 rows selected.

這裏我們用@a.txt執行腳本,如果a.txt的後綴是"*.sql"的話,則不用輸入文件後綴,我們把a.txt 改成 a.sql

[oracle@station ~]$ ls
a.txt
[oracle@station ~]$ mv a.txt a.sql
[oracle@station ~]$ ls
a.sql
[oracle@station ~]$

再次執行@a.sql腳本:

SQL> @a

     EMPNO ENAME      JOB              MGR HIREDATE                  SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80                 800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81                1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81                1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81                2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81                1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81                2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81                2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87                3000                    20
      7839 KING       PRESIDENT            17-NOV-81                5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81                1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87                1100                    20
      7900 JAMES      CLERK           7698 03-DEC-81                 950                    30
      7902 FORD       ANALYST         7566 03-DEC-81                3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82                1300                    10

14 rows selected.

看到了把我這時是用@a就可以執行了,不用加後綴。神奇吧!!!

在我們oracle數據庫之中,會有許多的用戶(現在已知的是4個用戶),這每個用戶下都會有多張自己的數據表,所以要想查看所有的數據表,則可以使用如下的命令:

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
BONUS                          TABLE
SALGRADE                       TABLE

而且由於用戶衆多,所以如果要想知道當前的登入用戶,則可以用show user命令完成。
SQL> show user
USER is "SCOTT"

在我們sqlplus下如何進行用戶的切換,使用的語法是:
CONN 用戶名/密碼 [AS SYSDBA];

我們使用sys用戶登入:conn sys/oracle as sysdba

SQL> conn sys/oracle as sysdba
Connected.

以上表示連接成功。

SQL> conn sys/oracle
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

如果不寫 as sysdba;這提示叫你選擇sysdba or sysoper (dba工作者或普通用戶)

但是我們連接sys用戶的時候我們則無法直接查詢我們emp表。

SQL> select * from emp;
select * from emp
              *
ERROR at line 1:
ORA-00942: table or view does not exist

我們可以這樣理解:如windows中的用戶,當前用戶都有自己的一個桌面,和自己的桌面文件夾。在這個用戶下創建的文件是不是隻有這個用戶可以看見,如果是是其他用戶登入的話,就要在其他用戶下找到這個桌面。

所以對每個表而言,都有其屬於自己的用戶;對於表名稱而言就是“用戶名.表”。如果其他用戶要訪問emp表的時候就是要加上scott.emp;

如:
SQL> show user
USER is "SYS"
SQL> select * from scott.emp;

     EMPNO ENAME      JOB              MGR HIREDATE                  SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80                 800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81                1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81                1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81                2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81                1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81                2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81                2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87                3000                    20
      7839 KING       PRESIDENT            17-NOV-81                5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81                1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87                1100                    20
      7900 JAMES      CLERK           7698 03-DEC-81                 950                    30
      7902 FORD       ANALYST         7566 03-DEC-81                3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82                1300                    10

14 rows selected.

超級管理員登入的話,可以對數據庫的實例的打開和關閉;


關閉數據庫的實例命令是:shutdown immediate


開啓數據庫的實例命令是:startup


總結:

以上是sqlplus中的簡單操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章