安装教程
概念
Oracle数据库服务器由两部分组成:
- 实例:理解为对象,看不见的
- 数据库:理解为类,看得见的
Oracle数据库把表、视图等都看成是对象。
null值
Oracle中如果存在字段是null值的话,那么在sqlplus中它是不会显示出来的….如果我们使用null值的数据与其他数据进行运算…那么最终得出的结果都是null值
因此,Oracle提供了NVL(表达式1,表达式2)函数供我们使用,如果表达式1的值为null值,那么就取表达式2的值…当然了,如果表达式1不是null,取的就是表达式1的值
还有值得注意的是:null值不能参数=号运算,null能参数number/date/varchar2类型运算
Oracle提供了 is null关键字来代替=号运算的问题
别名
Mysql中如果要用别名的话,需要使用as关键字 ,后面跟着别名就行了….Oracle可以省略as关键字…
并且,一般地,我们使用别名都是用双引号””把别名括起来,Oracle也支持我们直接写别名,但是呢,如果我们不写双引号,那么我们的别名是不能有空格的
还有一点的是:Oracle的别名是不能使用单引号来括起来的,Oracle默认认为单引号是字符串类型和日期类型的。
操作表细节
1 | 进入回收站 |
值得注意的是:修改表的时候,是不能回滚的!
Oracle中的级联操作:
- 【on delete cascade】级联删除
- 【on delete set null】将外键一方设置为null
分页
Oracle中的分页是依靠着rownum这个伪列来实现的,由于rownum只能使用的是<=或者<来获取数据。。。因为rownum的值可能会经常变【加入一条数据,那么rownum就+1,讲道理rownum可以是无穷大的,因此不能使用>来进行操作】….
那么Oracle分页的思路是这样子的:
- 先在子查询中获取前n条记录
- 由于返回的是多行多列,因此我们可以看做成一张表
- 那么将查询出来的数据放在from字句的后边
- 外套的查询可以通过where字句来对子查询出来的数据进行过滤
- 那么我们就可以查询出想要的数据了…
公式:
- Mysql从(currentPage-1)*lineSize开始取数据,取lineSize条数据
- Oracle先获取currentPage*lineSize条数据,从(currentPage-1)*lineSize开始取数据
语法
批量操作
我们查询出来的数据可看成是一张表,那么我们在插入数据的时候,可以根据查询出来的数据进行插入…这就可以看成是批量操作…
值得注意的是,如果没有指定插入哪些字段的话,那么查询出来的全部字段均会插入表中..
1 | 将xxx_emp表中所有20号部门的员工,复制到emp表中,批量插入,insert into 表名 select ...语法 |
删除操作对比
我们的删除语法有三种:
- delete from
- truncate from
- drop from
我们来对比一下他们的区别:
drop table
- 1)属于DDL
- 2)不可回滚
- 3)不可带where
- 4)表内容和结构删除
- 5)删除速度快
truncate table
- 1)属于DDL
- 2)不可回滚
- 3)不可带where
- 4)表内容删除
- 5)删除速度快
delete from
- 1)属于DML
- 2)可回滚
- 3)可带where
- 4)表结构在,表内容要看where执行的情况
- 5)删除速度慢,需要逐行删除
访问其他用户的对象
我们只要在访问表的时候,指定具体的用户.数据库表就行了,但是呢,还要看看该用户有没有权限查询别的用户的数据表,于是就需要赋予权限了…
1 | 声明:scott或hr叫用户名/方案名/空间名 |
视图
1 | 基于emp表所有列,创建视图emp_view_1,create view 视图名 as select对一张或多张基表的查询 |
序列
1 |
|
索引
(1)是一种快速查询表中内容的机制,类似于新华字典的目录
(2)运用在表中某个/些字段上,但存储时,独立于表之外
为什么要用索引
- (1)通过指针加速Oracle服务器的查询速度
- (2)通过rowid快速定位数据的方法,减少磁盘I/O
- rowid是oracle中唯一确定每张表不同记录的唯一身份证
rowid特点
- 位于每个表中,但表面上看不见,例如:desc emp是看不见的
- 只有在select中,显示写出rowid,方可看见
- 它与每个表绑定在一起,表亡,该表的rowid亡,二张表rownum可以相同,但rowid必须是唯一的
- rowid是18位大小写加数字混杂体,唯一表代该条记录在DBF文件中的位置
- rowid可以参与=/like比较时,用’’单引号将rowid的值包起来,且区分大小写
- rowid是联系表与DBF文件的桥梁
索引特点
- 索引一旦建立, Oracle管理系统会对其进行自动维护, 而且由Oracle管理系统决定何时使用索引
- 用户不用在查询语句中指定使用哪个索引
- 在定义primary key或unique约束后系统自动在相应的列上创建索引
- 用户也能按自己的需求,对指定单个字段或多个字段,添加索引
需要注意的是:Oracle是自动帮我们管理索引的,并且如果我们指定了primary key或者unique约束,系统会自动在对应的列上创建索引..
什么时候【要】创建索引
(1)表经常进行 SELECT 操作
(2)表很大(记录超多),记录内容分布范围很广
(3)列名经常在 WHERE 子句或连接条件中出现
什么时候【不要】创建索引
(1)表经常进行 INSERT/UPDATE/DELETE 操作
(2)表很小(记录超少)
(3)列名不经常作为连接条件或出现在 WHERE 子句中
1 | 为emp表的empno单个字段,创建索引emp_empno_idx,叫单列索引,create index 索引名 on 表名(字段,...) |
权限和用户
1 | 一)用户 |
PLSQL学习
PLSQL是Oracle对SQL99的一种扩展
- 是专用于Oracle服务器,在SQL基础之上,添加了一些过程化控制语句,叫PLSQL
- 过程化包括有:类型定义,判断,循环,游标,异常或例外处理。。。
- PLSQL强调过程
为什么要用PLSQL
- 因为SQL是第四代命令式语言,无法显示处理过程化的业务,所以得用一个过程化程序设计语言来弥补SQL的不足之处,
- SQL和PLSQL不是替代关系,是弥补关系