对于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中的简单操作。
本文出自 “strom的博客” 博客,谢绝转载!