RDBMS关系型数据库管理系统
基于关系模型提出来的数据库
关系模型是用一个二维表,行和列的方式来保存数据的模型
Redis
Hadoop 相关的NoSQL数据库 HBase
Cassandra
MongoDB
Tomcat6以后支持集群
数据库集群防止内存块崩溃影响数据库的使用
Oracle集群:RAC real application cluster(实时应用集群)
集群的优点
Load Balance 负载均衡 每个机器均衡负载 减轻服务器压力
Fail Over失败迁移 事务在某个机器中断,可转移到集群中其他正常机器上执行
数据文件 dbf
多个数据文件(物理概念)组成的就是表文件逻辑概念()
控制文件 ctl
日志文件l og
OS进程
读写进程
SGA(system global area)
PAG(Process)
ORCL
用户
表
SCOTT 和 HR
一对多关系表
c /form/from
/执行上一条语句
ed将上一条语句放入编辑器
spool c:\data\导出.txt
spool off
第一第二种没区别
第三种如果有特殊符号,数字或关键字要加双引号
distinct去掉重复记录
作用于后面所有的列
包含表达式的空值为空
null永远!=null;
空值是无效的
如果集合中含有null,不能使用not in,但可以使用in
组函数如count(comm)会自动滤空,可以嵌套滤空函数来屏蔽它的滤空功能
SQL99标准
ANSI标准组织
select必须与from关联
与表无关的操作
select concat(‘Hello’,‘World’) from dual;
dual 伪表
select ‘Hello’ || ‘World’ from dual;
字符串:
可以是select列表中的一个字符,数字,日期
日期和字符只能在单引号中出现
每当返回一行时,字符创被输出一次
一种语言,ANSI标准,关键字不能缩写
使用语句控制数据库中的表的定义信息和表中的数据
一种环境
Oracle的特性之一,关键字可以缩写,命令不能改变数据库中数据的值,集中运行
mysql不区分字母的大小写,Oracle区分
Oracle日期格式
date 默认 DD -MM月 -RR
Java:int a = 0;
PL/SQL:a number := 0;
声明转义字符
where ename like ‘%_%’ escape ‘’
where ename like ‘%a_%’ escape ‘a’
mysql开启事务 start transaction
Oracle自动开启事务
order by 作用于后面所有的列,先按照第一个列排序,在后面的列
desc只作用于离他最近的列
排序后将空值放最后:nulls last(Oracle中null值最大)
lower转小写
upper转大写
initcap首字母大写
substr(a,b)从a中,第b位取
substr(a,b,c)从a中,第b位取,取c位
length字符数 lengthb字节数
instr(a,b)在a中查找b,找到返回下标,没找到返回0
lpad左填充rpad右填充
通用函数
NVL(a,b)a为null的时候返回b,不为空返回本身
NVL2(a,b,c)a为空返回c,否则返回b
nullif(a,b)当a=b时,返回null,否则返回a
coalesce从左往右找到第一个不为空的值
wm_concat(column)
在select列表中所有未包含在组函数中的列都有应该包含在group by子句中
而包含在group by子句中的列不必包含在select列表中
多个列的分组,先按照第一个列分组,如果相同,再第二个列分组,以此类推
where子句中不能使用组函数
内连接诶
左外连接
where e.deptno=d.deptno(+)
右外连接
where e.deptno(+)=d.deptno
自连接
通过表的别名,将一张表视为多张表(不适合操作大表)
单行子查询:返回单行
子查询都可以转换成多表查询
注意的问题:
将主查询中的值,作为参数传给子查询的值
select语句可以相加相减
union/union all 并集
intersect 交集
minus 差集
注意:
flashback
闪回删除
闪回数据归档
闪回表
闪回查询
闪回版本查询
闪回事务查询
闪回数据库
create table name
(tid number,tname varchar2(20));
alter table name
add/drop/rename column
drop删除表进回收站(管理员没有回收站)
show recyclebin
primary key主键约束
not null费控约束
unique唯一约束
foreign key外键约束(主表的外键必须是外表的主键)
check检查性约束
外键约束
foreign key references on delete cascade (删除主表时,级联删除表记录)
foreign key references on delete set null(将子表的相关依赖记录的外键的值置为null)选择
使用子查询创建表
create table name (column,column…)
as sequence(select * from emp where 1=2);假条件创建表结构,数据不拷贝;真条件把数据也拷贝
视图是一个虚表
作用:简化复杂的查询只需要select
with check option
with read only屏蔽DML操作
不建议对表中的数据进行修改
当视图定义中包含以下元素之一时,不能使用delete
组函数
group by子句
distinct关键字
rownum伪列
当视图定义中包含以下元素之一时,不能使用update
组函数
group by子句
distinct关键字
rownum伪列
列的定义为表达式
当视图定义中包含以下元素之一时,不能使用insert
组函数
group by子句
distinct关键字
rownum伪列
列的定义为表达式
表中非空的列在试图定义是未包括
sequence
主要提供主键值
auto_increment
起始标志:事务中的第一条DML语句
结束标志:提交:显示 commit 隐式 正常退出 DDL DCL
回滚:显示 rollback 隐式 非正常退出 掉电,宕机
DDL默认提交事务所以不能回滚
事务的撤销:
通过事务的保存点:savepoint a;rollback to savepoint a
通过闪回
隔离级别:
Read Commited(默认),Serializable,Read Only
查询薪水排名前三
通过伪列rownum选出前三
rownum使用注意:
例如分页查询中查询第二列记录,条件为5
通过每年入职的员工个数
index
列创建目录—>索引
索引表(目录) rowid
查询执行计划对比后,使用索引后查询cpu消耗更低,提高查询效率
单列索引
基于值的审计
数据物理上被存放在网络的多个节点,逻辑上是一个整体(异地容灾)
每个数据库是一个集群
通过触发器和快照
分布操作
面向过程,效率更高
cursor 游标名(参数 数据类型,参数名 数据类型…)is select 语句