Oracle数据库之SQLPLUS
三、SQLPLUS
SQLPlus 是 Oracle 数据库提供的一个专门用于数据库管理的交互式工具,使用 SQLPlus 可以管理 Oracle 数据库的所有任务,SQLPlus 通过命令的方式对数据库进行管理,也可以通过 SQLP lus 执行 SQL 语句的操作。

3.1、SQLPlus设置
如果要想了解 sqlplus 命令,首先要解决一个新的问题:数据问题。
在 Oracle 12C 中由于存在了 CDB 和 PDB 概念,所以所谓的测试数据,默认是找不到的,所以下面必须首先针对数据做一个恢复。
在 D:\app\Oracleuser\product\12.1.0\dbhome_1\RDBMS\ADMIN 目录之中提供有一个 scott.sql 的创建脚本,但是这个脚本需要修改,而且要想会修改肯定要学习完后面的高级内容,所以为了方便学习,这里提供了一个 c##scott.sql 的文件,虽然名称是 c##scott ,本质还是 scott 。
c##scott.sql 脚本文件代码:
-- 使用超级管理员登录
CONN sys/change_on_install AS SYSDBA ;
-- 创建c##scott用户
CREATE USER c##scott IDENTIFIED BY tiger ;
-- 为用户授权
GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO c##scott CONTAINER=ALL ;
-- 设置用户使用的表空间
ALTER USER c##scott DEFAULT TABLESPACE USERS;
ALTER USER c##scott TEMPORARY TABLESPACE TEMP;
-- 使用c##scott用户登录
CONNECT c##scott/tiger
-- 删除数据表
DROP TABLE emp PURGE ;
DROP TABLE dept PURGE ;
DROP TABLE bonus PURGE ;
DROP TABLE salgrade PURGE ;
-- 创建数据表
CREATE TABLE dept (
deptno NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
dname VARCHAR2(14) ,
loc VARCHAR2(13) ) ;
CREATE TABLE emp (
empno NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT );
CREATE TABLE bonus (
enamE VARCHAR2(10) ,
job VARCHAR2(9) ,
sal NUMBER,
comm NUMBER ) ;
CREATE TABLE salgrade (
grade NUMBER,
losal NUMBER,
hisal NUMBER );
-- 插入测试数据 —— dept
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
-- 插入测试数据 —— emp
INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO emp VALUES (7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,to_date('19-04-1987','dd-mm-yyyy')-85,3000,NULL,20);
INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,to_date('23-05-1987','dd-mm-yyyy')-51,1100,NULL,20);
INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
-- 插入测试数据 —— salgrade
INSERT INTO salgrade VALUES (1,700,1200);
INSERT INTO salgrade VALUES (2,1201,1400);
INSERT INTO salgrade VALUES (3,1401,2000);
INSERT INTO salgrade VALUES (4,2001,3000);
INSERT INTO salgrade VALUES (5,3001,9999);
-- 事务提交
COMMIT;
如果要想进行数据的配置,那么执行的顺序如下:
1、首先打开 sqlplus.exe :
运行 -> 输入:sqlplus /nolog
2、执行 c##scott.sql 文件(一段一段执行)
打开窗口 - 属性 - 选项页面勾选快速编辑模式 - 颜色页面可以更改背景及文字颜色。
然后将c##scott.sql 文件中的代码一段一段复制到 sqlplus 里执行即可。
以上程序执行完毕后,就可以进行后面的命令讲解了。
3.2、SQLPlus 常用命令
设置每行显示的记录长度:SET LINESIZE 300;
设置每页显示的记录长度:SET PAGESIZE 30;
用户连接数据库:CONN 用户名/密码 [AS SYSDBA];
取得当前用户的全部数据对象:SELECT * FROM tab;
查看表结构:DESC 表名称;
使用本机的操作系统命令:HOST 命令...;
以上给出的是几个最为基本的常用操作命令,下面进行详细介绍。
3.2.1 格式化命令
现在在 c##scott 用户之中已经存在了相应的数据,开始执行查询命令:
SELECT * FROM emp;
此表示查询 emp 表中的全部数据信息。
可以发现此时的数据显示出现了折行的问题,数据的分页也出现问题,如果想要让数据变得好看一点,首先要解决屏幕的宽度问题:属性--窗口设置 。或者:
设置每行的数据显示长度:
SET LINESIZE 300;
设置每页的显示数据长度:
SET PAGESIZE 30;
3.2.2 编辑操作
在 sqlplus 之中为了方便用户编写很长的 SQL 语句,也专门提供了调用本机记事本的命令,可以在终端直接利用 ed 命令完成操作。
ed mldn
此时会直接询问用户是否需要创建一个新的 mldn.sql 文件,打开记事本后,在文本之中直接编写之前的数据的查询命令,保存退出,随后可以使用 “ @ ”标记,执行程序,输入 “ @mldn ”
3.2.3 连接操作
在 Oracle 之中有许多的用户,这些用户彼此之间是可以进行互相切换的,而进行切换的基本语法如下:
CONN 用户名/密码 [AS SYSDBA];
如果使用的是 sys 用户登录,那么请加上 AS SYSDBA 的选项
范例:使用 sys 用户登录
CONN sys change_on_install AS SYSDBA;
连接之后,如果要想知道当前是哪个用户,可以输入 “SHOW USER;”
SHOW USER;
而后如果说通过 sys 继续查询 c##scott 用户中的 emp 表,那么肯定无法查询,这时必须在表前面加上用户名,即:c##scott.emp;
SELECT * FROM c##scott.emp;
在数据库原理之中,用户名有时可以被简单的称为模式名称,所以所有的表都是具备模式名称的,即:模式名.表名称
如果现在要使用一个普通用户登录,输入命令时可以不编写 SYSDBA.
CONN c##scott tiger;
SELECT * FROM emp;
而且在一个用户下一定会存在多张数据表,可以用下面命令查看:
SELECT * FROM tab;
会发现表的格式不规范,可以使用下面命令局部格式化
COL tname FOR A20;
COL tabtype FOR A20;
COL clusterid FOR A20;
SELECT * FROM tab;
而同样道理,如果说现在要想知道某些数据表的表结构,那么可以使用DESC 命令。这是在开发中使用最多的。
范例:查看 emp 表结构
DESC emp;
- 在列的类型中主要有以下几种类型:
- NUMBER(4): 表示是数字,长度为4
- VARCHAR2(10): 表示的是字符串,只能容纳10个长度
- DATE: 表示日期
- NUMBER(7,2): 表示的是数字,其中小数位占2位,整数位占5位,总共是7位
- 在 sqlplus 中可以输入一个 “ / ” 表示重复执行上一条语句的操作。
在 sqlplus 之中除了执行自己的命令之外,也可以调用本机操作系统的命令,这时只需要在相关命令前加上 HOST 指令即可。
HOST dir;
HOST copy d:\mldn.jpg d:\hello.jpg;
3.3、关于原始数据问题(了解)
一直强调:现在的 Oracle 12c 中,虽然选择了要进行样本数据的创建,不过遗憾的是,发现根本就没有出现 scott 和 sh 用户。
scott 和 sh 用户真实存在,现在也在数据库里面,可是默认情况下用户所有操作的数据都保存在 CDB ,而且这里面的用户名称必须以 c## 开头,如:c##scott。
- 第一步:需要使用 sys 登录
CONN sys change_on_install AS SYSDBA;
- 第二步:查看现在的容器名称
SHOW con_name;
可以清楚的发现,现在返回的是一个“ CDB$ROOT ”,表示是一个 CDB 容器。
- 第三步:改变容器为 PDB
ALTER SESSION SET CONTAINER=pdbmldn;
SHOW con_name;
- 第四步:如果未打开数据库,执行命令先打开
ALTER DATABASE pdbmldn OPEN;
如果现在不是在 PDB 容器之中,那么还需要在命令上增加一个 PLUGGABLE 。
ALTER PLUGGABLE DATABASE pdbmldn OPEN;
再次查询,就会发现 scott 和 sh 两个用户真实存在了。
- 第五步:查看用户
SELECT username FROM dba_users WHERE username='scott' OR username='sh';
第六步:切换回 CBD
如果要想切换回 CDB ,只需要重新登录,或者直接输入切换命令。
ALTER SESSION SET CONTAINER=cdb$root;
3.4、SQL Developer 配置
在 Oracle 的学习之中,SQL Developer 应该算是现在的重点。而这个工具是在 Oracle 11 之后开始为用户提供的。
1、首先打开 SQL Developer
开始 -- 所有程序 -- Oracle -- 应用开发工具 -- SQL Developer
这个工具依赖 Java 环境,所以需要进行 Java 相关命令的配置。
2、弹出的窗口中点击 浏览,找到以下路径:
D;\app\oracleuser\produce\12.1.0\dbhome_1\jdk\bin
3、输入以上路径后,点击 OK ,稍等
4、弹出 “ 配置文件类型关联 ” 窗口,询问用户是否需要做文件关联,建议别做(也就是都不勾选),点击 确定 后,出现 SQL Developer 界面。
5、如果要想使用此工具,那么必须建立新的连接,而且为了后续学习方便,建议此处建立两个连接:
普通用户( c##scott/tiger )
管理员( sys/change_on_install )
6、点击连接 - 新建连接,弹窗中输入以下内容:
连接名:SCOTT_Connection
用户名:c##scott
口令:tiger
SID:mldn
口令下面勾选 “保存口令” ,点击 测试 -- 保存 -- 连接 ,然后工具页面 “连接” 下会出现 “ SCOTT_Connection ”,点击后在右边输入框中输入:
SELECT * FROM emp;
然后点击执行按钮(绿色三角形),下面就会以表格形式显示结果。
7、新建另一个,输入以下内容:
连接名:DBA_Connection
用户名:sys
口令:change_on_install
SID:mldn
口令下面勾选 “保存口令” ,连接类型选择 “基本”,角色选择 “SYSDBA”,点击 测试 -- 保存 -- 连接 ,然后工具页面 “连接” 下会出现 “ DBA_Connection ”,此时,管理员连接也创建成功了。
可以发现在 SQL Developer 之中具备了格式化的显示功能,所以一些 sqlplus 中的格式化命令意义就不大了
3.5、c##scott 用户表(背)
在以后所讲解的数据库知识之中,c##scott 用户是主要操作用户,那么在这个用户之中所存在的几张数据表要清楚(最好背下来)。
雇员表(EMP)
| NO. | 字段 | 类型 | 描述 |
|---|---|---|---|
| 1 | EMPNO | NUMBER(4) <pk> | 表示雇员编号,是唯一编号 |
| 2 | ENAME | VARCHAR2(10) | 表示雇员姓名 |
| 3 | JOB | VARCHAR2(9) | 表示工作单位 |
| 4 | MGR | NUMBER(4) | 表示一个雇员的领导编号 |
| 5 | HIREDATE | DATE | 表示雇佣日期 |
| 6 | SAL | NUMBER(7,2) | 表示月薪、工资 |
| 7 | COMM | NUMBER(7,2) | 表示奖金,或者称为佣金 |
| 8 | DEPTNO | NUMBER(2) <fk> | 部门编号 |
EMP 表:
EMPNO NUMBER(4) <pk>
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2) <fk>
部门表(DEPT)
| NO. | 字段 | 类型 | 描述 |
|---|---|---|---|
| 1 | DEPTNO | NUMBER(2) <fk> | 部门编号,是唯一编号 |
| 2 | DNAME | VARCHAR2(14) | 部门名称 |
| 3 | LOC | VARCHAR2(13) | 部门位置 |
DEPT 表:
DEPTNO NUMBER(2) <fk>
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
奖金表(BONUS)
| NO. | 字段 | 类型 | 描述 |
|---|---|---|---|
| 1 | ENAME | VARCHAR2(10) | |
| 2 | JOB | VARCHAR2(9) | |
| 3 | SAL | NUMBER | |
| 4 | COMM | NUMBER |
BONUS 表:
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
SAL NUMBER
COMM NUMBER
工资等级表(SALGRADE)
| NO. | 字段 | 类型 | 描述 |
|---|---|---|---|
| 1 | GRADE | NUMBER | 等级名称 |
| 2 | LOSAL | NUMBER | 此等级的最低工资 |
| 3 | HISAL | NUMBER | 此等级的最高工资 |
SALGRADE 表:
GRADE NUMBER
LOSAL NUMBER
HISAL NUMBER
说明:本学习资料是根据李兴华的Oracle开发实战经典整理
Oracle数据库之SQLPLUS的更多相关文章
- Oracle数据库入门——sql语句和函数详解
一.oracle常用数据类型 一. 数据定义语言(ddl) 数据定义语言ddl(data definition language)用于改变数据库结构,包括创建.更改和删除数据库对象. 用于操纵表结构 ...
- Oracle数据库启动和关闭
在介绍oracle数据库的启动和关闭前,先看一下Oracle的参数文件. oracle参数文件 1.初始化参数文件 oracle的初始化参数文件分为spfilesid.ora.spfile.ora.i ...
- Oracle数据库间的数据复制 - SQLPlus中的COPY命令
Copy命令可以实现不同Oracle数据库间的数据的复制,也是可以实现同一数据库的数据复制,其性能表现和导入/导出相同. 根据9i文档,说Copy命令未来会不支持,但实际上Oracle 11g仍然支持 ...
- sqlplus命令行登录oracle数据库的N种方法盘点
欢迎访问我的个人博客IT废柴,本文永久链接移至:sqlplus命令行登录oracle数据库的N种方法盘点 sqlplus有几种登陆方式Oracle数据库, 比如: 1.以操作系统权限认证的oracle ...
- 设置sqlplus访问远程oracle数据库的最快方法
设置sqlplus访问远程oracle数据库的最快方法 时间:2010-01-21 10:57来源: 作者: 点击: 2次 设置sqlplus访问远程oracle数据库的最快方法,如果要连接远程数据库 ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- Oracle数据库找回密码
Oracle数据库忘记用户的密码.经验证,可行的解决方案如下: 1.Ctrl + R 打开cmd窗口,输入 sqlplus / as sysdba (注意/左右两侧有空格) 2.运行cmd ,输入 ...
- Oracle数据库备份、恢复及常见问题
通常我们都是使用PL/SQL Developer来对Oracle中的数据对象和数据进行管理.如果我们想方便快速还原或者部署Oracle到新机器上,怎么进行数据库的备份.导入恢复呢? 这里我们必须要考虑 ...
- Oracle数据库全球化
一.自定义数据库和各个会话的语言相关行为 1.1 全球化功能 1.2 使用全球化支持功能 二.使用数据库和NLS字符集 2.1 语言排序与选择 2.2 Locale Builder 2.3 使用时区 ...
随机推荐
- 自实现input上传指定文件到服务器
遇到问题,解决问题,记录问题,成长就是一步一步走出来的. 一.添加 input 标签 我的工作中遇到了,需要上传pdf文件到服务器的需求,而且只能上传pdf文件,accept指定了 pdf 类型. & ...
- Excel催化剂100+大主题功能梳理导读
Excel催化剂历经1年4个月的开发时间,终于荣登100+个大主题功能,完成数据领域的功能大矩阵,可以说在日常的数据处理及分析上,绝大部分的共性场景已经囊括其中,是数据工作者难得一遇的优秀作品之一.因 ...
- C#3.0新增功能09 LINQ 基础04 基本 LINQ 查询操作
连载目录 [已更新最新开发文章,点击查看详细] 本篇介绍 LINQ 查询表达式和一些在查询中执行的典型操作. 获取数据源 在 LINQ 查询中,第一步是指定数据源. 和大多数编程语言相同,在使用 ...
- Linux 下载文件命令(wget)
wget是Linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径 例如: # wget http://www.linuxsense.org/xxxx/xxx. ...
- 推荐:经典SQL语句大全
一.基础 .说明:备份sql server--- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mss ...
- Linux学习(一)--VMware下Linux安装和配置
本片随便将给大家讲述linux在VM虚拟机上安装及终端的安装和配置 一.Linux介绍 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线 ...
- HelloDjango 系列教程:创建 Django 博客的数据库模型
文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 设计博客的数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个 ...
- js函数柯理化
所谓的函数柯理化,简单来说就是,一个需要接收多个参数的函数,进行分开一个个的传递参数,当函数执行的时候,传递剩余的参数. 主要作用在于增强函数的通用性. 如下举个例子: function custom ...
- Android Studio 蓝牙开发实例——基于Android 6.0
因项目需要做一个Android 的蓝牙app来通过手机蓝牙传输数据以及控制飞行器,在此,我对这段时间里写的蓝牙app的代码进行知识梳理和出现错误的总结. 该应用的Compile Sdk Version ...
- 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!
1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...