對於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中的簡單操作。