Oracle PL/SQL编程入门篇(oracle数据库plsql使用)
sinye56 2024-09-21 02:29 7 浏览 0 评论
Windows启动/关闭Oracle数据库
启动就用start,关闭就用stop
# 打开命令行(管理员权限)启动监听
lsnrctl start/stop
# 监听启动成功后,启动服务
net start/stop OracleServiceORCL
解锁scott用户
- 打开sqlplus,使用SYSDBA的身份登录
- 执行如下命令alter user scott account unlock解锁账户
- 然后执行commit,提交
- 使用scott用户登录,默认密码为tiger,登录成功后需要重新修改密码即可。具体实例如下:
请输入用户名: sys as sysdba
输入口令:
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter user scott account unlock;
用户已更改。
SQL> commit;
提交完成。
SQL> conn scott/tiger
ERROR:
ORA-28001: the password has expired
更改 scott 的口令
新口令:
重新键入新口令:
口令已更改
已连接。
查询Oracle的版本号
-- 查询Oracle版本号
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
使用SQLPlus创建匿名块
DECLARE
v_name varchar2(20) := '郑大钱';
begin
DBMS_OUTPUT.PUT_LINE(v_name||'给您拜年了');
end;
知识点:
- PL/SQL编程,变量需要先声明才能使用
- :=表示为变量赋值
- 所有的字符串都要放在单引号内
- ||表示字符串的拼接符
- DBMS_OUTPUT为Oracle提供的I/O包,PUT_LINE的作用就是将信息打印出来
我们创建好了之后如何在SQLPlus中执行呢?具体如下:
SQL> DECLARE
2 v_name varchar2(20) := '郑大钱';
3 begin
4 DBMS_OUTPUT.PUT_LINE(v_name||'给您拜年了');
5 end;
6 /
PL/SQL 过程已成功完成。
SQL>
值得注意的是,要在输入语句后,需要在下一行加一个/,才会执行,执行完成后,但是我们并没有看到打印的信息,这是因为要开启DBMS_OUTPUT的功能才行,命令如下:
-- 查看DBMS_OUTPUT的状态,OFF表示关闭
SQL> show serveroutput
serveroutput OFF
-- 开启DBMS_OUTPUT
SQL> set serveroutput on
SQL> show serveroutput
serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPED
SQL>
我们再次执行,结果如下:
SQL> DECLARE
2 v_name varchar2(20) := '郑大钱';
3 begin
4 DBMS_OUTPUT.PUT_LINE(v_name||'给您拜年了');
5 end;
6 /
郑大钱给您拜年了
PL/SQL 过程已成功完成。
SQL>
常用的SQLPlus命令
查询表结构(DESC)
SQL> desc emp;
名称 是否为空? 类型
----------------- -------- ----------------------------
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>
- NOT NULL 表示该字段不能为空,无则表示可以为空
- SQLPLUS的命令可以不加;号
设置控制台显示字符长度
set line 100;
L命令,显示刚刚输入的SQL缓冲区命令
SQL> select *
2 from emp
3 where empno>7900
4 order by empno desc;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7934 MILLER CLERK 7782 23-1月 -82 1300 10
7902 FORD ANALYST 7566 03-12月-81 3000 20
SQL> L
1 select *
2 from emp
3 where empno>7900
4* order by empno desc
SQL>
值得注意的是,SQL缓冲区只能存储一个SQL语句。
n text 修改SQL缓冲区命令
SQL> L
1 select *
2 from emp
3 where empno>7900
4* order by empno desc
SQL> 3 where empno>7875
SQL> L
1 select *
2 from emp
3 where empno>7875
4* order by empno desc
SQL>
SQL>
比如我们想修改L命令中的第2行,此时我们就可以指定行号和修改的内容,然后就可以把第二行的内容替换了。
N和A命令追加
SQL> l
1 select empno,ename,job
2 from emp
3 where empno>7875
4* order by empno desc
SQL> /
EMPNO ENAME JOB
---------- -------------------- ------------------
7934 MILLER CLERK
7902 FORD ANALYST
7900 JAMES CLERK
7876 ADAMS CLERK
SQL>
这里我们看第4行,4后面有个*号,此时表示当前行在第四行,如果我们想要在在查询的字段后面再加个mgr字段,需要我们先将当前行切换到第一行,具体操作如下:
SQL> L
1 select empno,ename,job
2 from emp
3 where empno>7875
4* order by empno desc
SQL> 1
1* select empno,ename,job
SQL>
输入行号即可,切换完当前行后,就可以使用A命令修改了,具体如下:
SQL> L
1 select empno,ename,job
2 from emp
3 where empno>7875
4* order by empno desc
SQL> 1
1* select empno,ename,job
SQL> A ,MGR
1* select empno,ename,job,MGR
SQL> L
1 select empno,ename,job,MGR
2 from emp
3 where empno>7875
4* order by empno desc
SQL> /
EMPNO ENAME JOB MGR
---------- -------------------- ------------------ ----------
7934 MILLER CLERK 7782
7902 FORD ANALYST 7566
7900 JAMES CLERK 7698
7876 ADAMS CLERK 7788
SQL>
/执行命令
我们上面修改了L的命令,此时执行就需要/命令,具体如下:
SQL> L
1 select *
2 from emp
3 where empno>7900
4* order by empno desc
SQL> 3 where empno>7875
SQL> L
1 select *
2 from emp
3 where empno>7875
4* order by empno desc
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7934 MILLER CLERK 7782 23-1月 -82 1300 10
7902 FORD ANALYST 7566 03-12月-81 3000 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
SQL>
DEL删除命令
此时我们想删除L命令的第4行,实例如下:
SQL> L
1 select empno,ename,job,MGR
2 from emp
3 where empno>7875
4* order by empno desc
SQL> del 4
SQL> L
1 select empno,ename,job,MGR
2 from emp
3* where empno>7875
SQL>
我们也可以删除多行,实例如下:
SQL> l
1 select empno,ename,job,MGR
2 from emp
3 where empno>7875
4* order byempno desc
SQL> DEL 3 4
SQL> l
1 select empno,ename,job,MGR
2* from emp
SQL>
C修改命令
将某一行的某个字串修改成另一个字串,实例如下:
SQL> 1
1* select enamename,job,MGR
SQL> c /enamename/ename
1* select ename,job,MGR
SQL> l
1 select ename,job,MGR
2* from emp
SAVE命令(生成脚本文件)
实例如下:
SQL> save E:\SQL\temp.sql
已创建 file E:\SQL\temp.sql
@运行脚本文件
通过@/start命令直接运行脚本文件,示例如下:
SQL> @ E:\SQL\temp.sql
ENAME JOB MGR
-------------------- ------------------ ----------
SMITH CLERK 7902
ALLEN SALESMAN 7698
WARD SALESMAN 7698
JONES MANAGER 7839
MARTIN SALESMAN 7698
BLAKE MANAGER 7839
CLARK MANAGER 7839
SCOTT ANALYST 7566
KING PRESIDENT
TURNER SALESMAN 7698
ADAMS CLERK 7788
ENAME JOB MGR
-------------------- ------------------ ----------
JAMES CLERK 7698
FORD ANALYST 7566
MILLER CLERK 7782
已选择14行。
SQL> start E:\SQL\temp.sql
ENAME JOB MGR
-------------------- ------------------ ----------
SMITH CLERK 7902
ALLEN SALESMAN 7698
WARD SALESMAN 7698
JONES MANAGER 7839
MARTIN SALESMAN 7698
BLAKE MANAGER 7839
CLARK MANAGER 7839
SCOTT ANALYST 7566
KING PRESIDENT
TURNER SALESMAN 7698
ADAMS CLERK 7788
ENAME JOB MGR
-------------------- ------------------ ----------
JAMES CLERK 7698
FORD ANALYST 7566
MILLER CLERK 7782
已选择14行。
值得注意的是@命令与脚本文件路径空格可有可无,但是start命令与路径之间必须要有空格。
help命令
帮助命令,使用方法help 命令名,示例如下:
SQL> help set;
SET
---
Sets a system variable to alter the SQL*Plus environment settings
for your current session. For example, to:
- set the display width for data
- customize HTML formatting
- enable or disable printing of column headings
- set the number of lines per page
SET system_variable value
where system_variable and value represent one of the following clauses:
APPI[NFO]{OFF|ON|text} NEWP[AGE] {1|n|NONE}
ARRAY[SIZE] {15|n} NULL text
AUTO[COMMIT] {OFF|ON|IMM[EDIATE]|n} NUMF[ORMAT] format
AUTOP[RINT] {OFF|ON} NUM[WIDTH] {10|n
...
spool命令
当我们想要把控制台的内容输出到文件的时候,我们就可以使用此命令,具体如下:
SQL> spool E:\SQL\output
SQL> l
1 select ename,job,MGR
2* from emp
SQL> /
ENAME JOB MGR
-------------------- ------------------ ----------
SMITH CLERK 7902
ALLEN SALESMAN 7698
WARD SALESMAN 7698
JONES MANAGER 7839
MARTIN SALESMAN 7698
BLAKE MANAGER 7839
CLARK MANAGER 7839
SCOTT ANALYST 7566
KING PRESIDENT
TURNER SALESMAN 7698
ADAMS CLERK 7788
ENAME JOB MGR
-------------------- ------------------ ----------
JAMES CLERK 7698
FORD ANALYST 7566
MILLER CLERK 7782
已选择14行。
SQL> spool E:\SQL\output
SQL> spool off
SQL> l
1 select ename,job,MGR
2* from emp
SQL> /
ENAME JOB MGR
-------------------- ------------------ ----------
SMITH CLERK 7902
ALLEN SALESMAN 7698
WARD SALESMAN 7698
JONES MANAGER 7839
MARTIN SALESMAN 7698
BLAKE MANAGER 7839
CLARK MANAGER 7839
SCOTT ANALYST 7566
KING PRESIDENT
TURNER SALESMAN 7698
ADAMS CLERK 7788
ENAME JOB MGR
-------------------- ------------------ ----------
JAMES CLERK 7698
FORD ANALYST 7566
MILLER CLERK 7782
已选择14行。
-- 先指定输出结果文件的位置
SQL> spool E:\SQL\output
-- 然后在执行SQL语句
SQL> l
1 select ename,job,MGR
2* from emp
SQL> /
ENAME JOB MGR
-------------------- ------------------ ----------
SMITH CLERK 7902
ALLEN SALESMAN 7698
WARD SALESMAN 7698
JONES MANAGER 7839
MARTIN SALESMAN 7698
BLAKE MANAGER 7839
CLARK MANAGER 7839
SCOTT ANALYST 7566
KING PRESIDENT
TURNER SALESMAN 7698
ADAMS CLERK 7788
ENAME JOB MGR
-------------------- ------------------ ----------
JAMES CLERK 7698
FORD ANALYST 7566
MILLER CLERK 7782
已选择14行。
-- 最后再关闭文件
SQL> spool off;
将Oracle数据导出给其他系统
- 创建一个SQL文件,内容如下:
set line 20
set pagesize 10000
-- 查询语句的输出结果不显示列名
set heading OFF
-- 内容输出到data.text文件
spool e:\sql\data.txt
-- 选择输出的数据
select deptno||','||dname||','||loc from dept;
spool off
- 使用@命令执行刚才的SQL文件,然后数据就写入到data.txt文件中
10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON
利用AUTOTRACE追踪SQL语句
开启auttrace需要使用管理员账户才可以
-- 查看autotrace状态
SQL> show autotrace
autotrace OFF
-- 开启autotrace
-- 开启追踪,set autotrace off,可关闭追踪
SQL> set autotrace on
SQL> show autotrace
autotrace ON EXPLAIN STATISTICS
-- 执行查询语句
select * from hr.employees;
-- 除了执行结果,还有执行计划内容
执行计划
----------------------------------------------------------
Plan hash value: 1445457117
-------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 107 | 7383 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| EMPLOYEES | 107 | 7383 | 3 (0)| 00:00:01 |
-------------------------------------------------------------------------------
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
15 consistent gets
0 physical reads
0 redo size
9843 bytes sent via SQL*Net to client
496 bytes received via SQL*Net from client
9 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
107 rows processed
我们也可以关闭查询结果和执行计划,只显示统计信息
-- 关闭统计信息和查询结果,只显示执行计划
set autotrace traceonly explain
-- 关闭统计信息和查询结果,只显示统计信息
set autotrace traceonly statistics
相关推荐
- 程序员:JDK的安装与配置(完整版)_jdk的安装方法
-
对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...
- Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置
-
一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...
- 麒麟系统安装JAVA JDK教程_麒麟系统配置jdk
-
检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...
- 学习笔记-Linux JDK - 安装&配置
-
前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...
- Linux新手入门系列:Linux下jdk安装配置
-
本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...
- 测试员必备:Linux下安装JDK 1.8你必须知道的那些事
-
1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...
- Linux 下安装JDK17_linux 安装jdk1.8 yum
-
一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...
- 在Ubuntu系统中安装JDK 17并配置环境变量教程
-
在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...
- 如何在 Linux 上安装 Java_linux安装java的步骤
-
在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...
- Windows和Linux环境下的JDK安装教程
-
JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...
- linux安装jdk_linux安装jdk软连接
-
JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...
- linux安装jdk,全局配置,不同用户不同jdk
-
jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...
- 运维大神教你在linux下安装jdk8_linux安装jdk1.7
-
1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...
- window和linux安装JDK1.8_linux 安装jdk1.8.tar
-
Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...
- 最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?
-
默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)