sql plus命令
Sqlplus的使用

Sql*plus的使用Sql*plus的使用Sql*plus介绍Sql*plus是oracle提供的一个工具程序,既可以在oracle服务器使用,也可以在oracle 客户端使用。
在windows下分两种,sqlplus.exe是命令行程序,sqlplusw.exe是窗体程序,通常我们在开始菜单中启动的是后者,两者的功能是一致的。
Sql*plus是一个最常用的工具,具有很强的功能,主要有:1. 数据库的维护,如启动,关闭等,这一般在服务器上操作。
2. 执行sql语句执行pl/sql。
3. 执行sql脚本。
4. 数据的导出,报表。
5. 应用程序开发、测试sql/plsql。
6. 生成新的sql脚本。
7. 供应用程序调用,如安装程序中进行脚本的安装。
2 dual表dual是一张系统表,同时也被定义成了public同义词。
它只有一个字段和一条记录。
该表本身的结构和数据没有什么意义,主要是借助该表进行其它操作。
如:select sysdate from dual; --获取函数值select 21+15*3 from dual; --计算表达式的值说明:不要对dual表进行ddl与dml操作,只进行查询操作。
3 sql*plus使用3.1 启动sql*plus1. 不带参数启动启动sqlplusw.exe程序,会弹出登陆框,让输入用户名、密码和连接字符串,在用户名中输入“/nolog”,表示先进入sql>提示符,先不连接数据库,下面可以利用connect命令连接数据库。
启动sqlplus.exe程序,会提示输入用户名与密码。
如果用户名输入2. 带参数启动下面列举一些最常见的方式,还有很多可选参数。
1) 不连接数据库sqlplus /nolog2) 连接数据库sqlplus username/password3) 使用net8连接字符串连接数据库sqlplus username/password@connstr4) 连接后执行filename指定的sql脚本,sql脚本中是sql命令和sql*plus的设置命令sqlplus username/password[@connstr] @filename3.2 sql*plus的命令3.2.1 帮助命令1. help命令格式:help 命令名,用于知道某个具体命令的帮助信息。
sqlplus常用命令

6、显示一个表结构:
SQL> desc tab --如果tab不是表,则只显示其类型和名字
7、保存所有输入:
SQL> spool D:\xxx --建立一个xxx.LST文件
SQL> spool --显示当前spool状态
SQL> COLUMN id TRUNCATED --直接按长度截断
7、COLUMN--显示当前列所有属性
SQL> COLUMN id --后面不加列名时显示所有的COLUMN
8、OFF|ON--设置某一字段关闭
设置一行可以容纳的字符数
SQL> SET LIN[ESIZE] {80|n}
如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。
设置页与页之间的分隔
SQL> SET NEWP[AGE] {1|n|NONE}
当set newpage 0 时,会在每页的开头有一个小的黑方框。
常用的SQLPLUS输出格式化命令:
执行一个SQL脚本文件
SQL>start file_name
SQL>@ file_name
将显示的内容输出到指定文件
SQL> SPOOL file_name
关闭spool输出
SQL> SPOOL OFF
只有关闭spool输出,才会在输出文件中看到输出的内容。
SQL> BTITLE def --添加页脚“def”
SQL> TTITLE OFF --取消页眉显示
三、COLUMN[COL]命令修改字段属性:
可以修改的属性有:
ALI[AS] alias
SQL PLUS指令说明

Set 命令:該命令包含許多子命令:SET system_variable valuesystem_variable value 可以是如下的子句之一:APPI[NFO]{ON|OFF|text}ARRAY[SIZE] {15|n}AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}AUTOP[RINT] {ON|OFF}AUTORECOVERY [ON|OFF]AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]BLO[CKTERMINATOR] {.|c}CMDS[EP] {;|c|ON|OFF}COLSEP {_|text}COM[PATIBILITY]{V7|V8|NATIVE}CON[CAT] {.|c|ON|OFF}COPYC[OMMIT] {0|n}COPYTYPECHECK {ON|OFF}DEF[INE] {&|c|ON|OFF}DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}] ECHO {ON|OFF}EDITF[ILE] file_name[.ext]EMB[EDDED] {ON|OFF}ESC[APE] {\|c|ON|OFF}FEED[BACK] {6|n|ON|OFF}FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}FLU[SH] {ON|OFF}HEA[DING] {ON|OFF}HEADS[EP] {||c|ON|OFF}INSTANCE [instance_path|LOCAL]LIN[ESIZE] {80|n}LOBOF[FSET] {n|1}LOGSOURCE [pathname]LONG {80|n}LONGC[HUNKSIZE] {80|n}MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]NEWP[AGE] {1|n|NONE}NULL textNUMF[ORMAT] formatNUM[WIDTH] {10|n}PAGES[IZE] {24|n}PAU[SE] {ON|OFF|text}RECSEP {WR[APPED]|EA[CH]|OFF}RECSEPCHAR {_|c}SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ WRAPPED]|TRU[NCATED]}]SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}SHOW[MODE] {ON|OFF}SQLBL[ANKLINES] {ON|OFF}SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}SQLCO[NTINUE] {> |text}SQLN[UMBER] {ON|OFF}SQLPRE[FIX] {#|c}SQLP[ROMPT] {SQL>|text}SQLT[ERMINATOR] {;|c|ON|OFF}SUF[FIX] {SQL|text}TAB {ON|OFF}TERM[OUT] {ON|OFF}TI[ME] {ON|OFF}TIMI[NG] {ON|OFF}TRIM[OUT] {ON|OFF}TRIMS[POOL] {ON|OFF}UND[ERLINE] {-|c|ON|OFF}VER[IFY] {ON|OFF}WRA[P] {ON|OFF}1). 設置當前session是否對修改的數據進行自動提交SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}2).在用start命令執行一個sql腳本時,是否顯示腳本中正在執行的SQL語句SQL> SET ECHO {ON|OFF}3).是否顯示當前sql語句查詢或修改的行數SQL> SET FEED[BACK] {6|n|ON|OFF}默認只有結果大於6行時才顯示結果的行數。
SQLPLUS命令语法自定义环境命令

自定义环境变量Show命令、set命令使用show命令显示当前SQL*PLUS的环境变量的值,使用set命令设置或者修改环境变量的值Show all显示所有环节变量的值信息。
1、Autocommit变量用于设置是否自动提交,当设置为ON 时,每次用户DML语句时都会自动提交。
Set autocommit on2、Colsep变量Colsep用于设置在选定列之间的分隔符,默认为空格。
Set colsep | ;3、Feedback变量当一个查询选择至少N行记录时,就会显示返回的行数,默认值是6,如果要禁止显示行数,则将feedback设置为OFFSet feedback off;4、Heading表示是否显示列标题,默认设置为ON,OFF表示不显示Set heading off;5、Linesize和pagesizeLinesize表示行宽度,默认为80,如果行数据长度查过80个字符,那么会换行显示。
Pagesiez表示每月所显示的行数,默认为24。
Set linesize 10Set pagesize 106、Serveroutput 变量用于控制是否显示存储过程的输出,例如dbms_output.put_line(…hello sql*plus‟)默认值为OFF,要显示时设置为ON7、Sqlprompt用于设置SQL*PLUS的命令提示符,默认为SQL>例如Set sqlprompt printout>8、TIME命令符用于设置是否在命令提示符中显示时间Set time on9、Underline变量用于设置下划横线字符默认值为:‘_’Set underline “|”注意事项:保存SQL*PLUS环境可以使用store set filename(spool命令)命令将自己定义好的SQL*PLUS环境保存到一个脚本文件中另外,如果下午在每次启动SQL*PLUS时都会自动使用特定环境变量的设置,则可以修改为sqlplus\admin\glogin.sql脚本。
连接oracle数据库的语句

连接oracle数据库的语句连接Oracle数据库是开发人员常常遇到的一个任务,下面我将列举一些连接Oracle数据库的语句,希望能够帮助你。
1. 使用SQL*Plus连接Oracle数据库:```sqlplus username/password@host:port/service_name```其中,`username`是Oracle数据库的用户名,`password`是密码,`host`是主机名,`port`是端口号,`service_name`是服务名。
2. 使用JDBC连接Oracle数据库:```import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class OracleJdbcExample {public static void main(String[] args) {String url = "jdbc:oracle:thin:@host:port:service_name";String username = "username";String password = "password";try {Connection connection = DriverManager.getConnection(url, username, password);System.out.println("Successfully connected to Oracle database!");// 执行其他操作...connection.close();} catch (SQLException e) {System.out.println("Failed to connect to Oracle database!");e.printStackTrace();}}}```其中,`url`是连接Oracle数据库的URL,`username`是用户名,`password`是密码,`host`是主机名,`port`是端口号,`service_name`是服务名。
slqplus命令

下面就介绍一下一些常用的sql*plus命令:1. 执行一个SQL脚本文件SQL>start file_nameSQL>@ file_name我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
@与@@的区别是什么?@等于start命令,用来运行一个sql脚本文件。
@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。
该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。
@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。
如:在c:\temp目录下有文件start.sql和nest_start.sql,start.sql 脚本文件的内容为:@@nest_start.sql - - 相当于@ c:\temp\nest_start.sql则我们在sql*plus中,这样执行:SQL> @ c:\temp\start.sql2. 对当前的输入进行编辑SQL>edit3. 重新运行上一次运行的sql语句SQL>/4. 将显示的内容输出到指定文件SQL> SPOOL file_name在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
5. 关闭spool输出SQL> SPOOL OFF只有关闭spool输出,才会在输出文件中看到输出的内容。
6.显示一个表的结构SQL> desc table_name7. COL命令:主要格式化列的显示形式。
该命令有许多选项,具体如下:COL[UMN] [{ column|expr} [ option ...]]Option选项可以是如下的子句:ALI[AS] aliasCLE[AR]FOLD_A[FTER]FOLD_B[EFORE]FOR[MAT] formatHEA[DING] textJUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}LIKE { expr|alias}NEWL[INE]NEW_V[ALUE] variableNOPRI[NT]|PRI[NT]NUL[L] textOLD_V[ALUE] variableON|OFFWRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]1). 改变缺省的列标题COLUMN column_name HEADING column_headingFor example:Sql>select * from dept;DEPTNO DNAME LOC---------- ---------------------------- ---------10 ACCOUNTING NEW YORKsql>col LOC heading locationsql>select * from dept;DEPTNO DNAME location--------- ---------------------------- -----------10 ACCOUNTING NEW YORK2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:Sql>select * from empDepartment name Salary---------- ---------- ----------10 aaa 11SQL> COLUMN ENAME HEADING ’Employee|Name’Sql>select * from empEmployeeDepartment name Salary---------- ---------- ----------10 aaa 11note: the col heading turn into two lines from one line.3). 改变列的显示长度:FOR[MAT] formatSql>select empno,ename,job from emp;EMPNO ENAME JOB---------- ---------- ---------7369 SMITH CLERK7499 ALLEN SALESMAN7521 WARD SALESMANSql> col ename format a40EMPNO ENAME JOB---------- ---------------------------------------- --------- 7369 SMITH CLERK7499 ALLEN SALESMAN7521 WARD SALESMAN4). 设置列标题的对齐方式JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}SQL> col ename justify centerSQL> /EMPNO ENAME JOB---------- ---------------------------------------- --------- 7369 SMITH CLERK7499 ALLEN SALESMAN7521 WARD SALESMAN对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边5). 不让一个列显示在屏幕上NOPRI[NT]|PRI[NT]SQL> col job noprintSQL> /EMPNO ENAME---------- ----------------------------------------7369 SMITH7499 ALLEN7521 WARD6). 格式化NUMBER类型列的显示:SQL> COLUMN SAL FORMAT ,990SQL> /EmployeeDepartment Name Salary Commission---------- ---------- --------- ----------30 ALLEN ,600 3007). 显示列值时,如果列值为NULL值,用text值代替NULL值COMM NUL[L] textSQL>COL COMM NUL[L] text8). 设置一个列的回绕方式WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]COL1--------------------HOW ARE YOU?SQL>COL COL1 FORMAT A5SQL>COL COL1 WRAPPEDCOL1-----HOW ARE YOU?SQL> COL COL1 WORD_WRAPPEDCOL1-----HOWAREYOU?SQL> COL COL1 WORD_WRAPPEDCOL1-----HOW A9). 显示列的当前的显示属性值SQL> COLUMN column_name10). 将所有列的显示属性设为缺省值SQL> CLEAR COLUMNS8. 屏蔽掉一个列中显示的相同的值BREAK ON break_columnSQL> BREAK ON DEPTNOSQL> SELECT DEPTNO, ENAME, SALFROM EMPWHERE SAL < 2500ORDER BY DEPTNO;DEPTNO ENAME SAL---------- ----------- ---------10 CLARK 2450MILLER 130020 SMITH 800ADAMS 11009. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。
sqlplus中arraysize描述

sqlplus中arraysize描述1. 介绍在Oracle数据库中,SQL*Plus是一个用于执行SQL语句的命令行工具。
它提供了许多有用的功能,包括数组大小(arraysize)设置。
数组大小是指在获取查询结果时,每次从数据库缓冲区中获取的行数。
通过适当地调整数组大小,可以优化查询性能并减少网络传输的开销。
2. 数组大小的设置在SQL*Plus中,可以使用SET ARRAYSIZE命令来设置数组大小。
该命令的语法如下:SET ARRAYSIZE {num | DEFAULT}其中,num表示要设置的数组大小,DEFAULT表示使用默认的数组大小。
3. 数组大小的影响数组大小的设置对查询性能有着重要的影响。
较大的数组大小可以减少从数据库缓冲区获取数据的次数,从而减少了与数据库之间的网络通信开销。
然而,如果数组大小设置得过大,可能会导致内存压力增大,甚至引起内存溢出的问题。
另外,较小的数组大小可能会导致频繁的网络通信,从而降低查询性能。
因此,设置合适的数组大小是优化查询性能的关键。
4. 数组大小的选择选择合适的数组大小需要根据具体的情况进行调整。
以下是一些选择数组大小的指导原则:4.1 查询结果的大小首先,需要考虑查询结果的大小。
如果查询结果较大,可以适当增大数组大小,以减少网络通信的次数。
如果查询结果较小,可以选择较小的数组大小,以减少内存的占用。
4.2 网络带宽和延迟其次,需要考虑网络带宽和延迟。
如果网络带宽较小或延迟较高,可以选择较小的数组大小,以减少网络传输的开销。
4.3 内存压力还需要考虑系统的内存情况。
如果系统内存较小,可以选择较小的数组大小,以减少内存的占用。
如果系统内存较大,可以适当增大数组大小,以提高查询性能。
4.4 实验和性能测试最后,可以通过实验和性能测试来选择合适的数组大小。
可以尝试不同的数组大小,并比较它们对查询性能的影响。
根据实验结果选择最佳的数组大小。
5. 示例下面是一个设置数组大小的示例:-- 设置数组大小为100SET ARRAYSIZE 100-- 执行查询语句SELECT * FROM employees;在上述示例中,数组大小被设置为100,然后执行了一个查询语句。
sqlplus -s用法

sqlplus -s用法
sqlplus是Oracle数据库的交互式命令行工具,-s选项是其中的一个参数,表示“静默模式”。
使用-s选项可以在执行sqlplus
命令时,不显示启动和退出信息,只显示查询结果。
这在需要在脚
本或者批处理中执行SQL语句时非常有用,可以避免额外的输出干扰。
举例来说,假设我们有一个脚本文件test.sql包含SQL查询语句,我们可以使用以下命令来执行该脚本并在静默模式下输出结果:
sqlplus-susername/password@*****************.
这样就会在不显示额外信息的情况下执行test.sql中的SQL语句,并将查询结果输出到标准输出。
需要注意的是,-s选项并不会隐藏错误信息,所以在实际使用中,仍然需要对SQL语句的执行结果进行适当的错误处理。
总之,sqlplus -s选项的主要作用是在执行SQL语句时以静默
模式输出结果,适用于需要在脚本或者批处理中执行SQL查询的场景。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字段的非唯一的结果集
DISTINCT 字段名1 [ ,字段名2]
数字类型字段名之间可以进行算术运算
+ - * / 等
例如: (字段名1*字段名2)/3
合并字段内容的连接字符 ||
字段名1 || 字段名2
DEL n 删除sql buffer里第n行
I[NPUT] text 在sql buffer后面插入text
L[IST] n 显示sql buffer里第n行
n 使第n行为当前行
n text 第n行替换成text
0 text 在第一行前面插入一行
(3) SQL*PLUS里的文件命令:
SAV[E] filename [REP[LACE] | APP[END] ]
3、PLSQL Developer 连接测试
输入正确的用户名/口令:
成功登陆:
4、创建表空间
打开sqlplus工具:
Sql代码
1.sqlplus /nolog
sqlplus /nolog
连接数据库:
Sql代码
1.conn /assysdba
conn /as sysdba
创建表空间:
Sql代码
1.createtablespace camds datafile'D:\oracle\product\10.2.0\oradata\camds\camds.dbf'size200m autoextendonnext10m maxsize unlimited;
imp userid/pwd@sid file=path/file fromuser=testcamds touser=userid
命令实例:
Sql代码
1.imp testcamds/123@camds file=c:\testcamds fromuser=testcamds touser=testcamds
说明: 一行只显示数字位的长度, 超过长度折行,加word_wrapped后, 单词不会折行
规定long字符的显示宽度
SQL>set long 200;
规定字段名的显示内容
SQL> column 字段名 heading '字段名显示内容';
SQL> set heading off; 查询时不显示字段名称
规定字段的对齐方向
SQL> column 字段名 justify [left | right | center];
清除字段的格式
SQL> column 字段名 clear;
5. SQL*PLUS里规定字段的显示格式例子
SQL> column last_name heading 'Employee|Name为你创建的数据库名,以后在访问数据,创建“本地Net服务名”时用到;
2)数据库口令在登录和创建“本地Net服务名”等地方会用到。
2、创建“本地Net服务名”
1)通过【程序】-》【Oracle - OraDb10g_home1】-》【配置和移植工具】-》【Net Configuration Assistant】,运行“网络配置助手”工具:
NVL(EXPR1, EXPR2)函数
解释: IF EXPR1=NULL RETURN EXPR2
ELSE RETURN EXPR1
编程技巧: NVL函数在多条件模糊查询的时候比较有用
nvl('+input_value+','0')='0' or filed_name like '%+input_value+%'
NVL函数可返回多种数据类型:
返回日期 NVL(start_date,'2002-02-01')
返回字符串 NVL(title,'no title')
返回数字 NVL(salary,1000)
3. 使用SQL*PLUS
(1)登录SQL*PLUS的方法
用户名,密码,数据库连接字符串
数据库连接字符串可以用net8 easy configuration建立本地网络服务名配置,
连接操作的字段名上最好要有索引
连接操作的字段最好用整数数字类型
有外连接时, 不能用OR或IN的比较操作
1、安装
Oracle 版本:Oracle Database 10gRelease 2 (10.2.0.1)
下载地址:
/technology/software/products/database/oracle10g/htdocs/10201winsoft.html
1. 数据表间的连接
简单的连接语法:
SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……]
WHERE 表名1.字段名 = 表名2. 字段名 [ AND ……] ;
SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……]
WHERE 表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;
create tablespace camds datafile 'D:\oracle\product\10.2.0\oradata\camds\camds.dbf' size 200m autoextend on next 10m maxsize unlimited;
5、创建新用户
运行“P/L SQL Developer”工具,以DBA(用户名:System)的身份登录:
SQL> column salary justify right format $99,999.99;
SQL> column start_date format a10 null 'Not Hired';
说明:如果start_date为null, 显示字符串'Not Hired'
6. 判断题(T/F)
SQL>delete from table_name t1
where t1.rowid >
(select min(rowid) from table_name t2
where t1.email = t2.email
group by email
having count(email) > 1);
找到手机用户的服务区域:
命令实例:
Sql代码
1.exp testcamds/123@camdsora file=c:\testcamds owner=testcamds
exp testcamds/123@camdsora file=c:\testcamds owner=testcamds
导入结果:
一、选择行
1. 简单的SELECT 语句
imp testcamds/123@camds file=c:\testcamds fromuser=testcamds touser=testcamds
导入结果:
2
命令语法:
Sql代码
1.exp userid/pwd@sid file=path/file owner=userid
exp userid/pwd@sid file=path/file owner=userid
STA[RT] filename 运行上次保存到文件filename里的SQL命令
@filename 运行上次保存到文件filename里的SQL命令
EDIT 打开编辑窗口,编辑sql buffer里的SQL命令
EDIT filename 打开编辑窗口,编辑文件filename里的SQL命令
SPO[OL] filename [OFF | OUT] 把SQL命令结果输出到OS下一个文件filename OFF结束输出到文件, OUT结束输出到文件并打印文件
SQL> set pause on; 可以使大量结果集在用户按“Enter”(回车)后翻页
SQL> set pagesize 100; 设定SQL语句返回结果集一页的行数100, 默认值是14
SQL> set linesize 100; 设定SQL语句返回结果集一行的宽度100, 默认值是80
(2)SQL*PLUS里的编辑命令
(1). SQL command are always held in sql buffer. [T]
(2). SQL*PLUS command assit with query data. [T]
SQL*PLUS命令只控制SELECT结果集的显示格式及控制文件.只有SQL命令能访问数据库.
四、从多个表里选取数据记录
1
2
3
4
5
6
输入新用户的“用户名/口令”:
新用户“testcamds”成功登陆:
6、导入导出数据库
先运行cmd命令,进入命令行模式,转到下面的目录:D:\oracle\product\10.2.0\db_1\BIN【该目录下有exp.exe文件】
1
命令语法:
Sql代码
1.imp userid/pwd@sid file=path/file fromuser=testcamds touser=userid
SQL> select a.handphoneno,nvl(,'null'),a.totalscore
from topscore a,chargeoperator cc,chargeoperatorinfo c
where substr(a.handphoneno,1,7)=cc.hpnohead(+)