1. SQL * Plus工具
在Oracle 19c数据库系统中,用户对数据库的操作主要是通过SQL * Plus来完成的。SQL * Plus作为Oracle的客户端工具,既可以建立位于数据库服务器上的数据连接,也可以建立位于网络中的数据连接。
使用SQL * Plus命令连接数据库实例的语法格式如下:
SQLPLUS username[/password][@connect_identifier] [AS SYSOPER|SYSDBA]
username:表示登录用户名。 password:表示登录密码。 @connect_identifier:表示连接的全局数据库名,若连接本机上的默认数据库,则可以省略。
SQL Plus工具在开始菜单里可以找到;

2. PL/SQL Developer工具
SQL* Plus和PL/SQL Developer都是用于数据库管理的工具;
PL/SQL Developer则是一个可视化界面,使用户能够通过图形界面操作数据库;
PL/SQL Developer除了基本的数据库操作功能外,还提供了更多的高级功能,例如数据库管理、存储过程开发、事务处理等;
PL/SQL Developer提供了更友好的用户界面和更多的帮助文档,使初学者更容易上手;
2.1. PL/SQL Developer 15 下载
公众号回复:012 获取PL/SQL Developer 15安装包+注册机下载地址;
2.2. PL/SQL Developer 15 安装
将下载的安装包解压,运行plsqldev1501x64进行PL/SQL Developer 15 安装;

安装界面是英文的,不要紧,直接点击Next;

选择 I accept the terms in the license agreement ,点击Next;

直接Next;

安装路径可以改一下,不改也行,直接Next;

直接Next;

直接Install进行安装;

安装完成,点击Finish关闭安装窗口;

解压注册机压缩包KeyGen-ZWT,建议关闭Windows自带的病毒威胁防护,会查杀注册机;运行keygen;

运行PL/SQL Developer 15,弹出Register注册窗口,复制注册机的Product code和Serial number到注册窗口相应位置,点击Register;

提示Registration successful,注册成功;

设置中文方式:Congigure——Preferences找到User Interface——Appearance中的Language,选择Chinese.lang,点击OK即可;


设置Oracle主目录和OCI库,点击右侧三角一般会自动识别出;

退出PL/SQL Developer,重新打开,可以选择安装的数据库实例了;

3. 学习使用的用户、表等数据准备
我是在CentOS上安装的Oracle数据库,下面的教程是在CentOS环境下进行的,Windows环境下操作基本一样,都是启动SQL * Plus工具并登录,进行用户、表等数据的创建;
在CentOS系统中启动SQL * Plus工具需要切换到oracle用户下;下面演示如何创建SCOTT用户,并创建SCOTT用户的数据表;
#切换到oracle用户
su - oracle
#以sysdba身份登录sqlplus
sqlplus / as sysdba
--创建scott用户,密码为tiger
create user scott identified by tiger;
创建用户时报错:ORA-65096: 公用用户名或角色名无效

错误原因:
Oracle 12C以后的版本引入了CDB与PDB的新特性,在ORACLE 19C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。用户想在PDBORCL中创建新用户,却未设置会话container到PDB,而在CDB中创建公有用户因无法通过名称或角色验证出错。
解决方法
方法1:建用户的时候用户名以c##或者C##开头(不建议,c##开头的为全局用户,会在所有PDB中都创建这个用户)
--此时创建的用户名会在所有PDB中创建
create user c##scott identified by tiger;
方法2:切换到PDB数据库进行创建
--查询PDB
show pdbs;

可以看到所有的PDB及状态,切换到NEWPDB,进行本地用户创建;
--切换到NEWPDB
alter session set container=NEWPDB;
--在NEWPDB中创建本地用户scott
create user scott identified by tiger;
--设置用户scott默认表空间为NEWITPRO
ALTER USER scott DEFAULT TABLESPACE NEWITPRO;
--设置用户scott默认临时表空间为TEMP
ALTER USER scott TEMPORARY TABLESPACE TEMP;
--为scott用户赋予权限
GRANT dba TO scott;
退出SQLPlus,在oracle账号下修改tnsnames.ora文件;
vim /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
在tnsnames.ora最后添加如下内容:
NEWPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = NEWPDB)
)
)
#使用scott账号登录NEWPDB
sqlplus scott/tiger@NEWPDB
创建部门信息表dept、员工信息表emp、奖金表bonus和工资等级表salgrade,并插入测试数据。
-- 创建数据表
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('13-07-87','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('13-07-87','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;
在Oracle中,命令不区分大小写,并且在SQL* Plus编辑器中每条命令都以分号(;)作为结束标志。
退出SQL* Plus时使用exit或者quit命令。
今天的文章就到这里,感谢阅读。




