![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
oracle学习笔记
秋忆夏伤
个人学习笔记。仅用作笔记使用,方便复习、查找知识点。
展开
-
oracle学习笔记(一):卸载 oracle
用 oracle 自带的卸载工具不能从根本上卸载 oracle,从而为下次的安装留下隐患,那么怎么才能完全卸载 oracle 呢?那就是直接从 注册表清除,步骤如下:1、到计算机管理中 停止所有 oracle 服务:2、运行 regedit 打开注册表,选择 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,删除这个入口。3、选择 HKEY_LOCAL_...原创 2019-09-27 11:08:49 · 95 阅读 · 0 评论 -
oracle学习笔记(二):安装 oracle
操作系统:win10系统;oracle 版本:win64_11gR2_database;1、Oracle 的安装程序分成2个文件,下载后将2个文件解压到同一目录;2、解压以后,双击目录中的 setup.exe;(等的时间有点长。。。)3、提示 "环境不满足最低要求":解决办法:打开 database\stage\cvu\cvu_prereq.xml,在 <...原创 2019-09-27 12:29:01 · 229 阅读 · 0 评论 -
oracle学习笔记(三):以管理员用户登录 oracle,并解锁其他普通用户
登录 oracle 数据库有两种方式:1、使用 用户名和角色 登录:oracle 安装成功以后,默认会生成一个 超级管理员用户,超级管理员具有最高权限,可以直接登录 oracle;超级管理员的用户名为 sys,角色为 dba;以超级管理员的 用户名和角色 登录 oracle 不需要密码,如下所示:注意:sqlplus 是 oracle 自带的一个客户端 DOS 界面...原创 2019-09-27 15:22:28 · 11989 阅读 · 3 评论 -
oracle学习笔记(四):select 语句(查询语句)
以 scott/tiger 登录 oracle:1、查看当前用户:show user;SQL> show user;USER 为 "SCOTT"2、查询 scott 用户下所有的对象:select * from tab;(其中 column tname format a10; 语句是用来设置显示的列宽,下面再讲)SQL> column tname format...原创 2019-09-27 17:31:49 · 779 阅读 · 1 评论 -
oracle学习笔记(五):将在 sqlplus 工具上写的 sql 语句保存到文件中,以及在 sqlplus 工具上导入外部文件中的 sql 语句
1、使用 spool 命令将在 sqlplus 工具上写的 sql 语句保存到指定的文件中:spool e:/oracle.sql 语句表示在 e 盘创建一个 oracle.sql 文件;后面在 sqlplus 上写的 sql 语句都会保存在此文件中;spool off 语句表示 保存 oracle.sql 文件;生成的 oracle.sql 文件中的内容为:...原创 2019-10-09 10:37:42 · 883 阅读 · 0 评论 -
oracle学习笔记(六):sql语句 和 sqlplus命令的区别
1)、sql 语句是 SQL92/99 的官方标准,只要按照该标准来写,在任何关系型数据库中都可以直接执行;sqlplus 命令是在 sqlplus 工具中才可以执行的命令,sqlplus 是 oracle 自带的一款工具;2)、sql 语句的关键字不能简写,例如:select、from、where;sqlplus 命令中的关键字可以简写,也可以不简写,例如:desc、colum...原创 2019-10-09 11:16:26 · 721 阅读 · 0 评论 -
oracle学习笔记(七):where 子句(条件查询)
接上一篇 oracle学习笔记(四):select 语句(查询语句)1、查询 emp 表中 20 号部门的员工信息:SQL> select * from emp where deptno = 20;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ---------- --------...原创 2019-10-09 15:29:42 · 365 阅读 · 0 评论 -
oracle学习笔记(八):order by 子句(排序查询)
1、查询员工信息(编号,姓名,月薪,年薪),按月薪升序排序(默认,不写也行),如果月薪相同,按 oracle 内置的校验规则排序:SQL> select empno,ename,sal,sal*12 2 from emp 3 order by sal asc;EMPNO ENAME SAL SAL*12----- ---------- ----...原创 2019-10-09 16:06:00 · 395 阅读 · 0 评论 -
oracle学习笔记(九):单行函数
单行函数:只有一个参数输入,只有一个结果输出。多行函数:有多个参数输入,只有一个结果输出。上面的定义是老师说的,网上查的资料也大概都是这样定义的;但是,像 concat()、substr() 这样的函数,明明有多个参数,却属于单行函数;而下一节要讲的多行函数包括 count()、sum()、avg() 这样的函数,只有一个参数,却属于多行函数;所以,我的理解是 单行函数 或者 ...原创 2019-10-09 17:06:19 · 433 阅读 · 0 评论 -
oracle学习笔记(十):多行函数
1、count():该函数用于统计数量;统计 emp 表中员工总人数;注意:* 号适用于表字段较少的情况下;如果字段较多,扫描时间多,效率低;项目中提倡使用某一个非 null 且唯一的字段,通常是主键。SQL> select count(*) from emp; COUNT(*)---------- 14统计 emp 表中有多少个部门(去掉重复的...原创 2019-10-10 17:04:38 · 122 阅读 · 0 评论 -
oracle学习笔记(十一):多表查询
1、员工表 emp 和部门表 dept 的笛卡尔积:select * from emp,dept;笛卡尔积表 的列数 = 表1的列数 + 表2的列数(列数和);笛卡尔积表 的行数 = 表1的行数 x 表2的行数(行数积);笛卡尔积表中有些数据是不符合要求的(没有意义);2、内连接 查询:只能查询出符合条件的记录,不符合条件的记录无法查出;内连接又分为 等值连接 和 非等值...原创 2019-10-11 10:59:40 · 461 阅读 · 0 评论 -
oracle学习笔记(十二):子查询(嵌套查询)
子查询:查询条件未知的事务;查询条件已知的事务 举例:查询工资为 800 的员工信息;查询条件未知的事务 举例:查询工资比 10号部门平均工资 高的员工信息;(其中 10号部门平均工资 为未知条件)一个条件未知的查询,通常可以分解为多个 条件已知的查询;1、查询工资比 WARD 高的员工信息:分解查询:步骤一:先查询出 WARD 的工资:结果为 1250SQL&...原创 2019-10-11 14:16:09 · 302 阅读 · 0 评论 -
oracle学习笔记(十三):集合查询
1、union:并集运算,如果两个集合中有相同的部分,只取其一;union all:并集运算,如果两个集合中有相同的部分,都取出来;例如:查询 20 号部门或 30 号部门的员工信息(使用 并集 实现)查询结果是 既包含20号部门的员工信息,也包含30号部门的员工信息;SQL> select * from emp where deptno = 20 2 unio...原创 2019-10-11 14:54:58 · 179 阅读 · 0 评论 -
oracle学习笔记(十四):查看一条 sql 语句执行的时间
1、使用 set time on 和 set time off 可以打开和关闭 时间的显示:2、使用 set timing on 和 set timing off 可以打开和关闭 执行一条 sql 语句所显示的时间:...原创 2019-10-11 15:08:11 · 2035 阅读 · 0 评论 -
oracle学习笔记(十五):oracle 分页
mysql 中分页使用关键字 limit,但是 oracle 中没有这个关键字;oracle 中有一个跟分页有关的 很重要的关键字 rownum(行号);可以通过以下语句查看表中的 rownum:SQL> select rownum,emp.* from emp; ROWNUM EMPNO ENAME JOB MGR HIREDATE S...原创 2019-10-11 16:03:23 · 158 阅读 · 0 评论 -
oracle学习笔记(十六):oracle 中 表的创建 和 删除,以及 表结构的修改
1、mysql 中创建表:id 为主键;mysql 中数字类型为 int;auto_increment 表示自增长;name 为字符串类型;mysql 中用 varchar 表示字符串类型;最大 4 个字节长度,非空;birthday 日期类型,默认值为 "2015-4-27";mysql> create table users( -> id int a...原创 2019-10-11 17:12:05 · 469 阅读 · 0 评论 -
oracle学习笔记(十七):外键约束
创建两张表,添加外键约束:customers(用户表,一的一方),orders(订单表,多的一方);SQL> create table customers( 2 id number(3) primary key, 3 name varchar2(4) not null unique 4 );表已创建。SQL> insert into custom...原创 2019-10-12 14:10:18 · 294 阅读 · 0 评论 -
oracle学习笔记(十八):oracle 中的 检查约束(check 约束)
创建一个表 users,包括 id,name,gender,salary 字段,使用 check 约束【性别只能是 男或女,薪水介于 6000 到 8000 之间】SQL> create table users( 2 id number(5) primary key, 3 name varchar2(10) not null unique, 4 gende...原创 2019-10-12 14:28:27 · 1652 阅读 · 0 评论 -
oracle学习笔记(十九):增、删、改 操作
回顾 SQL92/99 标准的四大类(1)DML(数据操纵语言):select,insert,update,delete(2)DDL(数据定义语言):create table,alter table,drop table,truncate table(3)DCL(数据控制语言):grant select any table to scott/revoke select any table ...原创 2019-10-12 16:43:32 · 878 阅读 · 0 评论 -
oracle学习笔记(二十):事务
回顾什么是事务?多个不可分割的操作形成一个整体,该整体要么全部执行成功,要么全部执行失败。例如:转账;回顾为什么要用事务?如果不用事务的话,以转账为例,可能出现一个用户钱被扣了,但是另一个用户的钱却没有增加;回顾在项目中,事务应该用于哪一层?事务要放在业务层;回顾 jdbc 中,如何使用事务?connection.setAutoCommit(false); // ...原创 2019-10-14 11:06:08 · 136 阅读 · 0 评论 -
oracle学习笔记(二十一):访问其它用户下的对象
1、以 sysdba 身份登录 oracle,解锁 hr 用户,并设置密码为 lion:2、 以 hr 用户登录 oracle:3、我们知道,前面以 scott 登录 oracle 时,scott 查询自己用户下的表,用语句:select * from emp; 即可;但是以 hr 登录 oracle 后,用 hr 查询 scott 用户下的表,要指明所查询对象所属的用户,用如...原创 2019-10-14 13:37:58 · 273 阅读 · 0 评论 -
oracle学习笔记(二十二):视图
对于 scott 用户下的 emp 表:假设:张三 只关注 EMPNO、ENAME、JOB,张三希望用 select * from emp 语句只能查询到他所关注的字段,其他字段不要;李四 只关注 ENAME、JOB、MGR,李四希望用 select * from emp 语句只查询到他所关注的三个字段;王五 只关注 ENAME、SAL、COMM,同样王五也希望用 select...原创 2019-10-14 15:37:34 · 660 阅读 · 0 评论 -
oracle学习笔记(二十三):同义词
什么是同义词(Synonym)?对一些名字比较长的对象(表、视图、索引、序列...)做简化,用别名代替;这个别名就叫 同义词;同义词的作用:1、缩短对象名字的长度;2、方便访问其他用户的对象;1、创建与 salgrade 表对应的 同义词,语法:create synonym 同义词 for 表名/视图/其它对象;默认情况下,scott 用户没有创建同义词的权...原创 2019-10-14 16:19:01 · 180 阅读 · 0 评论 -
oracle学习笔记(二十四):序列
什么是序列(Sequence)?1、类似于 mysql 中的 auto_increment 自动增长机制(oracle 中无 auto_increment);2、是 oracle 提供的一个产生唯一数字型值的机制;3、通常用于表的主键值;4、默认情况下,序列只能保证唯一,不能保证连续; oracle 中,只有 rownum 永远保持从 1 开始,且连续;5、序...原创 2019-10-15 11:25:24 · 460 阅读 · 0 评论 -
oracle学习笔记(二十五):索引
什么是索引(index)?1、索引是一种快速查询表中内容的机制,类似于新华字典的目录;2、运用在表中某个/些字段上,但存储时,独立于表之外(表消亡了,索引还在,但是没有意义了);为什么要用索引?1、通过指针加速 oracle 的查询速度;2、通过 rowid 快速定位数据的方法,减少磁盘 I/O;rowid 的特点:1、rowid 是 oracle 中唯一确...原创 2019-10-15 15:09:51 · 323 阅读 · 0 评论 -
oracle学习笔记(二十六):PLSQL
一、概念:SQL99 标准:1、是操作所有 关系型数据库 的准则;2、是第四代语言;3、是一种结构化查询语言;4、只需发出合法合理的命令,就有对应的结果显示;SQL 的特点:1、交互性强,非过程化;2、数据库操纵能力强,只需发送命令,无需关注如何实现;3、多表操作时,自动导航简单,例如: select emp.empno,emp.sal,dep...原创 2019-10-17 16:48:51 · 618 阅读 · 0 评论 -
oracle学习笔记(二十七):存储过程
什么是存储过程(procedure)?事先运用 oracle 语法,写好的一段具有业务逻辑功能的片段,长期保存在 oracle 服务器中;供 oracle 客户端和 程序语言远程访问;类似于 java 中的函数;为什么要用存储过程?1、PLSQL 每次执行都要整体运行一遍,才有结果;2、PLSQL 不能将其封装起来,长期保持在 oracle 服务器中;3、PLSQL ...原创 2019-10-18 11:05:16 · 213 阅读 · 0 评论 -
oracle学习笔记(二十八):存储函数
存储函数(function):为一命名的存储程序,可带参数,并返回一个数值;存储函数 和 存储过程的结构类似,但必须有一个 return 子句,用于返回函数值;存储函数说明 要指定函数名、结果值的类型,以及参数等;存储函数的语法:create [or replace] function 函数名(参数列表)return 返回值类型asPLSQL 子程序体(beg...原创 2019-10-18 14:20:38 · 341 阅读 · 0 评论 -
oracle学习笔记(二十九):触发器
1、触发器是一个与表相关联的、存储的 PLSQL 程序,每当一个特定的 数据操作语言(insert、delete、update)在指定的表上发出时,oracle 自动的执行触发器中定义的 语句序列。2、触发器的类型:语句级触发器: 在指定的操作语句操作之前,或之后执行一次,不管这条语句影响了多少行;行级触发器(for each row): 触发...原创 2019-10-21 17:04:57 · 273 阅读 · 0 评论