0%

1. 含义

索引是与表相关的一个可选结构,索引可用以提高 SQL 语句执行的性能,并较少磁盘 I/O。索引在逻辑上和物理上都独立于表的数据,oaracle 会自动维护索引。

2.分类

索引大体上可以分为:B树索引(平衡树索引)、位图索引。其中 B 树索引分为:唯一索引、组合索引、反向键索引、基于函数的索引。

阅读全文 »

1. 语法

merge into 的语法如下所示:

1
2
3
4
5
MERGE INTO [target-table] T USING [source-table sql] S ON([conditional expression] and [...]...)
WHEN MATCHED
THEN [UPDATE sql]
WHEN NOT MATCHED
THEN [INSERT sql]

判断源表 S 和目标表 T 是否满足 ON 中的条件,如果满足则用 S 表去更新 T 表,如果不满足,则将 S 表数据插入 T 表中。但是有很多可选项,如下:

  • 普通模式
  • 只 update 或者只 insert
  • 无条件 insert 实现
  • 带 delete 的 update
阅读全文 »

1. 含义

视图以经过定制的方式显示来自一个或多个表的数据,视图可以视为“虚拟表”或“存储的查询”,创建视图所依据的表称为“基表”。

视图的有如下优点:

  • 提供了另外一种级别的表安全性
  • 隐藏的数据的复杂性
  • 简化的用户的SQL命令
  • 隔离基表结构的改变
  • 通过重命名列,从另一个角度提供数据
阅读全文 »

1. 含义

序列是用于生成唯一、连续序号的对象,序列可以是升序的,也可以是降序的。

2. 创建序列

使用CREATE SEQUENCE语句创建序列,创建示例如下所示:

1
2
3
4
5
6
7
create sequence stu_seq
start with 1 -- 从 1 开始,可选,默认为1
increment by 1 -- 每次增加 1,支持正负数,可选,默认为1
maxvalue 2000 -- 序列最大数,可选
minvalue 1 --序列最小值,可选,默认为1
nocycle -- 序列不循环,即取到最大值不再从起始值继续开始,可选,默认不循环
cache 10; -- 指定内存中预先分配的序号数。缓存 10 条序列值,避免取序列时 oracle 都要计算获取一次,可选,默认20
阅读全文 »

1. 含义

同义词是现有对象的一个别名。主要是用于简化SQL语句、隐藏对象的名称和所有者和提供对对象的公共访问。

同义词存在私有同义词和公有同义词两种类型。公有同义词可被所有的数据库用户访问,而私有同义词只能在其模式内访问,且不能与当前模式的对象同名。

阅读全文 »

1. 概念

  • 表分区允许用户将一个表分为多个分区;
  • 用户可以执行查询,只访问表中的特定分区;
  • 将不同的分区存储在不同的磁盘,提高访问性能和安全性;
  • 可以独立地备份和恢复每个分区。
阅读全文 »

1. 高水位线

高水位线(high-water mark,HWM)是一个很有趣的概念,但是也是一个非常重要的概念。顾名思义,高水位线有点类型于水文监测站里测水深度的标杆一样,当水涨的时候,水位线随之上升,并在标杆留下一个水印痕,这个水印痕就是高水位线。

在数据库中,上述比喻很恰当。如果把表想象成一个平面结构,或者想象成从左到右依次排开的一系列块,高水位线就是包含了数据的最右边的块。如下图所示:

在这里插入图片描述

阅读全文 »

1. 完整性简介

定义:就是正确性、准确性,包含三种:实体完整性、参照完整性、用户自定义完整性。Oracle中主要通过约束、触发器、过程函数实现的。维护数据的完整性,有not null、unique、check、primary key、foreign key五种。not null 只能在列内定义,其他4种约束可以在列定义结束后,在表内定义。

需要说明的是:当使用 unique 唯一约束时,根据NULL的定义,NULL表示的是未知,因此两个NULL比较的结果既不相等,也不不等结果仍然是未知。根据这个定义,多个NULL值的存在应该不违反唯一约束。

阅读全文 »

1. 用户

1.1 默认用户

  • SYS:数据库中所有数据字典表和视图都存储在 SYS 模式中。SYS 用户主要用来维护系统信息和管理实例;
  • SYSTEM:SYSTEM 是默认的系统管理员,该用户拥有 Oracle 管理工具使用的内部表和视图。通常通过 SYSTEM 用户管理数据库用户、权限和存储等
  • SCOTT:SCOTT 用户是 Oracle 数据库的一个示范账户,在数据库安装时创建。
阅读全文 »

1. SQL 的执行顺序

  • 常见的select、from、where的顺序:1, from 2, where 3, select

  • 完整的select、from、where、group by、having、order by的顺序:1, from 2, where 3, group by 4,having 5, select 6, order by

2. EXISTS 的使用

EXISTS用来判断查询所得的结果中,是否有满足条件的纪录存在。存在返回 true, 否则返回 false。

1
select * from student where exists(select * from address where zz='郑州');
阅读全文 »