oracle sqlplus命令详解
涉及到的知识要点
a、带有一个&的替换变量的用法
b、带有两个&的替换变量用法
c、define命令用法
d、accept命令用法
e、定制SQL*Plus环境
f、在glogin.sql文件中保存定制结果
g、sqlplus编辑命令
a、带有一个&的替换变量的用法
1)、使用带有一个&号的变量值来提示用户输入一个值。
eg、
SQL> SELECT empno, ename, sal, deptno FROM emp WHERE empno = &empno;
输入 empno 的值: 7369
原值 1: SELECT empno, ename, sal, deptno FROM emp WHERE empno = &empno
新值 1: SELECT empno, ename, sal, deptno FROM emp WHERE empno = 7369
EMPNO ENAME SAL DEPTNO
———- ———- ———- ———-
7369 SMITH 8888 20
2)、替换变量中的字串和日期值
使用单引号标志替换变量中的日期和字串值。
eg、
SQL> SELECT ename, deptno, sal*12 FROM emp WHERE job='&job';
输入 job 的值: ANALYST
原值 1: SELECT ename, deptno, sal*12 FROM emp WHERE job='&job'
新值 1: SELECT ename, deptno, sal*12 FROM emp WHERE job='ANALYST'
ENAME DEPTNO SAL*12
———- ———- ———-
SCOTT 20 106656
FORD 20 36000
3)、运行时指定列名、表达式、文本
SELECT empno, ename, job, &column_name
FROM emp
WHERE &condition
ORDER BY &order_column;
输入 column_name 的值: sal
原值 1: SELECT empno, ename, job, &column_name
新值 1: SELECT empno, ename, job, sal
输入 condition 的值: sal>=3000
原值 3: WHERE &condition
新值 3: WHERE sal>=3000
输入 order_column 的值: ename
原值 4: ORDER BY &order_column
新值 4: ORDER BY ename
EMPNO ENAME JOB SAL
———- ———- ——— ———-
7902 FORD ANALYST 3000
7839 KING PRESIDENT 5000
7788 SCOTT ANALYST 8888
7369 SMITH CLERK 8888
b、带有两个&的替换变量用法
使用带有两个&的变量可以使得该变量可以重复使用,而不必在每次使用时提醒用户输入。
SQL> SELECT empno, ename, job, &&column_name FROM emp ORDER BY &column_name;
输入 column_name 的值: deptno
原值 1: SELECT empno, ename, job, &&column_name FROM emp ORDER BY &column_name
新值 1: SELECT empno, ename, job, deptno FROM emp ORDER BY deptno
EMPNO ENAME JOB DEPTNO
———- ———- ——— ———-
7782 CLARK MANAGER 10
7839 KING PRESIDENT 10
7934 MILLER CLERK 10
…
c、define命令用法
创建CHAR类型的用户变量,当定义一个包含空格的变量时,要用单引号将该变量括起来。
eg、
SQL> define deptname = sales
SQL> define deptname; –查看该变量
DEFINE DEPTNAME = "sales" (CHAR)
SQL> SELECT * FROM dept WHERE dname=UPPER('&deptname');
原值 1: SELECT * FROM dept WHERE dname=UPPER('&deptname')
新值 1: SELECT * FROM dept WHERE dname=UPPER('sales')
DEPTNO DNAME LOC
———- ————– ————-
30 SALES CHICAGO
说明:一个变量将保持在被定义的状态,直到使用undefine命令将它清除或离开sql*plus。
d、accept命令用法
接收用户输入时,创建可定制的用户提示。
eg、
–提示你输入一个数值给dept,dept是个变量,可用define命令查看该变量
SQL> accept dept prompt 'Provide the department name: '
Provide the department name: Sales
SQL> define dept; –查看该变量
DEFINE DEPT = "Sales" (CHAR)
SQL> SELECT * FROM dept WHERE dname = UPPER('&dept');
原值 1: SELECT * FROM dept WHERE dname = UPPER('&dept')
新值 1: SELECT * FROM dept WHERE dname = UPPER('Sales')
DEPTNO DNAME LOC
———- ————– ————-
30 SALES CHICAGO
e、定制SQL*Plus环境
使用SET命令来控制当前的会话。
语法:SET system_variable value
eg、SQL> set arraysize 20;
可以使用SHOW命令来查看set设置。
eg、SQL> show arraysize
arraysize 20
说明: set命令用法具体请看” oracle set命令详解.txt”
f、在glogin.sql文件中保存定制结果
glogin.sql文件包含在登录时需要执行的标准SET命令及其他命令,我们可以更改glogin.sql以包含其他SET命令。
如:设置sqlplus环境的linesize为300,并让这个变量永久生效在$ORACLE_HOME/sqlplus/admin/glogin.sql(D:\dev\oracle\product\10.2.0\db_1\sqlplus\admin)文件中添加如下内容:set linesize 300
a
g、sqlplus编辑命令
1)、执行def命令查看编辑器的设置:
SQL> def
2)、总结下:
l–列sql
n–切换活动行(n代表行数字)
a–活动行后增加(append)
i–活动行后插入新行增加(input)
c–替换(change)
eg、c /emp_name/emp_age/
del n–删除行n
/–执行sql
eg、
SQL> select deptno, dname from dept;
DEPTNO DNAME
———- ————–
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
SQL> i where deptno>20
SQL> l
1 select deptno, dname from dept
2* where deptno>20
SQL> /
DEPTNO DNAME
———- ————–
30 SALES
40 OPERATIONS
SQL> del 2
SQL> l
1* select deptno, dname from dept
SQL> a where deptno>30
1* select deptno, dname from dept where deptno>30
SQL> l
1* select deptno, dname from dept where deptno>30
SQL> /
DEPTNO DNAME
———- ————–
40 OPERATIONS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
2011-06-24 socket案例二
2011-06-24 socket案例一
2011-06-24 树TreePanel
2011-06-24 表格GridPanel
2011-06-24 表单Ext.form.FormPanel
2011-06-24 布局Layout