1、连接Oracle数据库
启动SQL*Plus,要求输入User Name、Password、Host String这三个参数,例如我在安装的时候默认创建的数据库为orcl,也就是SID,密码也为orcl,对应上面的三个参数如下所示:
User Name:orcl
Password:orcl
Host String:orcl as sysdba
就可以登录成功。
或者也可以使用默认的scott来登录:
User Name:scott
Password:tiger
Host String:orcl
当连接Oracle数据库成功的时候,可以通过在提示符“sql>”下使用如下命令来连接指定的数据库,比如我使用scott登录,现在使用conn命令连接:
conn orcl/orcl as sysdba
这时,切换为用户sys到数据库orcl的一个连接。
2、保存SQL脚本
使用save命令,可以将当前执行的命令保存到本地磁盘的某个文件中,例如查询scott.emp表,将查询命令保存到scott.emp.sql脚本文件中:
SQL> select
2 *
3 from
4 scott.emp
5 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
14 rows selected.
SQL> save c:/scott.emp.sql
Created file c:/scott.emp.sql
这时,可以打开c:/scott.emp.sql,看到键入的查询命令:
select
*
from
scott.emp
/
3、执行保存的sql脚本文件
有两种方式。
假设现在存在c:/scott.emp.sql脚本文件。
第一种通过get命令将sql脚本文件内容读入到缓冲区:
SQL> get c:/scott.emp.sql
1* select * from scott.emp
SQL> r
1* select * from scott.emp
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
14 rows selected.
SQL>
上面,get只是将sql脚本文件的内容调入到缓冲区,并没有执行,需要执行run命令(简写为r)才能真正执行sql脚本的命令行。
第二种通过start命令直接执行脚本:
SQL> start c:/scott.emp.sql
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
14 rows selected.
SQL>
上面,直接就执行了sql脚本文件中的命令行。
3、保存屏幕中信息
可以使用spool命令来选择保存屏幕中出现的信息。
首先需要通过spool命令来指定输出信息到目的文件的名称,然后就可以在屏幕上执行sql命令,全部都会自动保存到指定的目的文件,直到执行了spool off命令,停止保存信息:
SQL> spool c:/spool.txt
SQL> show user;
USER is "SCOTT"
SQL> desc scott.emp;
Name Null? Type
----------------------------------------------------------------------------------------- -------- ------------------------------------------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> get c:/rowid.sql
1 select
2 rowid,
3 dbms_rowid.rowid_object(rowid) obj_id,
4 dbms_rowid.rowid_relative_fno(rowid) df#,
5 dbms_rowid.rowid_block_number(rowid) blknum,
6 dbms_rowid.rowid_row_number(rowid) rowno
7* from scott.emp
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
14 rows selected.
SQL> spool off
可以查看文件c:/spool.txt,其中的所有信息都是上面输入的。
4、交互命令
可以使用&指定交互输入变量,如下所示:
SQL> select * from scott.emp where empno='&编号';
Enter value for 编号: 7788
old 1: select * from scott.emp where empno='&编号'
new 1: select * from scott.emp where empno='7788'
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
SQL>
当然,也可以通过设置多个交互变量,如下所示:
SQL> select * from scott.emp where sal>'&sal' and deptno='&deptno';
Enter value for sal: 800
Enter value for deptno: 30
old 1: select * from scott.emp where sal>'&sal' and deptno='&deptno'
new 1: select * from scott.emp where sal>'800' and deptno='30'
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7900 JAMES CLERK 7698 03-12月-81 950 30
6 rows selected.
SQL>