SQL之 SQL*PLUS
1、SQLplus安装(windows版本)
-
Oracle官网,点击链接进入界面,先接受协议选择
Accept License Agreement
-
下载解压这两个文件 instantclient-basic-windows.x64-18.5.0.0.0dbru.zip 和 instantclient-sqlplus-windows.x64-18.5.0.0.0dbru.zip 到同一个路径下(我的路径为
E:\ProgrameFile\OraClient\
) -
在解压目录下能看到
instantclient_18_5
(当然也可能不是18版本的)找到sqlplus.exe运行。 -
尝试登陆 打开一个命令提示框,显示
Enter user-name:
在后边直接输入数据库配置路径登陆远程数据库- username/password@ip:port/数据库名
- 实例如下test/test@172.16.111.11:1521/TESTDB
- 如果不能登陆成功可能需要关闭防火墙之类的。
-
配置环境变量 为了不用每次都到
E:\ProgrameFile\OraClient\instantclient_18_5
地址下寻找sqlplus.exe将;E:\ProgrameFile\OraClient\instantclient_18_5;
存入环境变量,放环境变量的方法自己百度 -
配置环境变量之后测试: WIN+R键 输入cmd进入命令行,输入sqlplus将会提示输入用户名
-
设置在
tnsnames
文件用来方便登陆E:\ProgrameFile\OraClient\
下新建文件夹效果效果为:E:\ProgrameFile\OraClient\network\admin
admin文件夹下创建tnsnames.ora文件。 -
tnsnames.ora文件内容为
# 将来要用的名称 TESTDB = (DESCRIPTION = (ADDRESS_LIST = #这里的ip和端口号就是你数据库的ip和端口号 (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.111.11)(PORT = 1521)) ) (CONNECT_DATA = # TESTDB就是服务名称 (SERVICE_NAME = TESTDB) ) )
-
我们在命令行中输入sqlplus提示需要输入用户名,我们输入
test/test@TESTDB
提示登陆成功 -
如果已经登陆数据库,又需要连接其他的数据库的时候,我们只需要执行如下代码
SQL> connect username/password @Orale net名称
2、 使用sqlplus
2.1 编辑命令
-
Append text
追加文本,执行完一句话,在上一句追加内容的时候,Append text
SQL> SELECT * FROM USER; --第一句执行查询查看会所有的,但是数据太多了,想加一句按年龄排序 SQL> Append order by age;--注意append之后要有两个空格,如果只有一个的话,就直接拼接到上一句话后头了 1* SELECT * FROM USER order by age; --执行完上面的语句后返回拼接后的语句但是还没有执行,需要再输入一个/来执行 SQL> /
-
Change /old text/new textc 修改字段
SQL> append order by name; 1* select * from userorder by name SQL> change /userorder /user order -------这里修改了字段 1* select * from user orderby name SQL> / select * from user orderby name
-
Del n删除行
SQL> select * from user --输入第一句 2 where a ='1'; --输入第二句 --完成后删除第一句 SQL> del 1 SQL> / --执行以下删除后的代码 where a ='1' --执行语句只有第二句了 * ERROR at line 1: ORA-00900: invalid SQL statement
-
clear buffer 清空缓存区
SQL> clear buffer --清空缓存区 buffer cleared SQL> del 1 --刚才还有一行,继续删除 SP2-0026: No lines to delete. --发现那一行没有了
-
INPUT text添加语句
- 和append比较类似
- 区别就是append是在末尾添加,input是添加行对象,新添加了一行
-
LIST[n/LAST/]显示缓存区
SQL> list 1 select * from test 2* SQL> list last/ 2* SQL> list 1 1* select * from test
2.2 使用SQL*PLUS保存命令
-
通过记事本保存缓存区域的内容
SQL> ed
这个时候会打开一个文本框,可以通过另存为保存到本地
-
通过save file_name保存缓存区域的内容
SQL> save test Created file test.sql --这个文件就被保存到 C:\Users\lenovo\test.sql下 SQL> save F:\test.sql Created file F:\test.sql --这个时候,就被保存到了F盘下边
2.3 使用sql*plus运行命令
- run命令运行语句 执行缓存中的命令
- start file_name;运行本地文件中的命令
2.4 使用sql*plus格式化查询结果
如果列比较多的话,查询出来的结果将会乱七八糟,基本上没有什么可看性。为了清晰的展示查询结果,可以使用如下的查询命令
-
column oldname HEADING newname / column column_name FORMAT dateformat
- 第一种如下代码块,第二种就是为了格式化数字日期之类的,懒得试了
SQL> select trans_id from transInfo where trans_id like 'O%'; TRANS_ID -------------------- OB19031416051530 OF18121210215789 OG18092714532836 OG18121211201665 OK18101713321692 OK19031516254537 OP18091318471077 OR18091211091572 OV19031513481437 OW19022116273295 OX19011709530439 11 rows selected. SQL> column trans_id HEADING 交易id;--将头信息进行修改 SQL> select trans_id from transInfo where trans_id like 'O%'; 交易id -------------------- OB19031416051530 OF18121210215789 OG18092714532836 OG18121211201665 OK18101713321692 OK19031516254537 OP18091318471077 OR18091211091572 OV19031513481437 OW19022116273295 OX19011709530439 11 rows selected.
-
SET语句
-
SET PAGESIZE
设置每页显示行数; -
SET NEWPAEG
; 设置两个新页面之间的空行数; - SET LINESIEZE;显示每行显示的字符数量;
- SET TIMING ON/OFF设置语句执行的时间;
- SET HEADING ON/OFF设置是否显示头信息 ;
- SET PEEDBACK ON/OFF设置是否显示已选行数
- 以上set改为show不加参数就是显示,show pagesize /show newpage
-
-
SPOOL语句
spool F:\test.sql ; --保存输出结果的文件名, 文件名的扩展可以写成.sql -- sql语句 select * from test; spool off; --只有执行这句话的时候才会把查询结果写入文件 spool F:\test2.sql ; --保存输出结果的文件名, 文件名的扩展可以写成.sql -- sql语句 @C:\tset.sql;--执行文件 spool off; --只有执行这句话的时候才会把查询结果写入文件
-
set term on/off 如果是on的话就显示查询结果,如果是off的话就不显示查询结果
-
ttitle title这个用来查看本地文件的-主要是为了看文件是否写入成功了
-