Oracle数据库

一、Oracle数据库概述
1. 数据库物理组成
  1. 数据文件-Data File

用于储存数据库中全部数据

  1. 日志文件-Redo Log File

记录数据库中的变更,便于出现错误时恢复数据

  1. 控制文件-Control File

二进制文件,用于储存数据库物理结构

  1. 配置文件

储存数据块大小,内存结构配置等

  • 这些文件不能直接操作,只能通过Oracle实例去操作
2. 用户
  1. sys:管理员用户 sysdba

    • 此用户具有所有权限
    • 此用户可以免密登录
    • 维护系统信息,管理实例
  2. system

    • 用来管理用户,权限,储存等
  3. scott

    • 默认密码tiger
    • 自带的普通用户,不能直接使用,需要解锁后重新设置密码
-- 创建用户
create user 用户名 identified by 密码;

-- 修改用户密码
alter user 用户名 identified by 密码;

-- 删除用户
drop user 用户名;
drop user 用户名 cascade;

-- 赋权限/角色
grant 权限/角色 to user;

-- 移除权限/角色
revoke 权限/角色 from user;
3. 数据库实例

实例是一个数据库对象

实例名就是数据库名

精简版:XE

完整版:ORCL

4. 启动服务并连接数据库

启动服务必须打开Service和Listener

登录:默认端口1521

二、约束和表关系
约束
  1. 实体完整性约束
  2. 域完整性约束
  3. 引用完整性约束
  4. 自定义约束
-- 添加主键约束
alter table 表名 
add constraint 约束名 primary key (字段名);  

-- 添加非空约束 (有非空和默认时,先写默认再写非空)
alter table 表名 
modify (字段名 not null );

-- 添加唯一约束
alter table 表名 
add constraint 约束名 unique (字段名);

-- 添加检查约束
alter table 表名 
add constraint 约束名 check (检查判断条件);

-- 添加外键约束
alter table 表名
add constraint 约束名 foreign key references 主表 (字段);

-- 删除约束
alter table 表名
drop constraint 约束名;
-- 创建表
create table 表名(字段名 数据类型(长度),字段名 数据类型(长度));

-- 删除表
drop  table 表名;

-- 添加表字段
alter table 表名
add (字段名 数据类型(长度));

-- 修改表字段
alter table 表名
modify (字段名 数据类型(长度));

-- 删除表字段
alter table 表名 drop (字段名);
alter table 表名 drop column 字段名;

-- 表重命名
rename 旧表名 to 新表名;

-- 增加注释
comment on table 表名 is ‘注释‘;
comment on table 表名.属性名 is ‘注释‘;

-- 表截断
-- 清空表 不可回滚 只生成一次日志文件
truncate table 表名;

-- 删除
-- 删除补空值
on delete set null;
-- 级联删除
on delete cascade;
数据类型
字符类型 数值类型 日期类型 大对象类型
char 固定长度字符串,长度为可储存字节数 number(总位数,小数位数) date 普通日期类型 BOLB保存非结构化二进制数据,最大4G
nchar 固定长度字符串,长度为可储存字符数 int 整数类型 datestamp有精度的日期类型,精度为0-9,默认为6
varchar2 不固定长度字符串,长度为可储存字节数
nvarchar2 不固定长度字符串,长度为可储存字符数
三范式
  1. 第一范式:原子性--每一列都是不可再分的最小数据单元
  2. 第二范式:唯一性--要求必须有唯一标识(主键),非主键字段完全依赖主键
  3. 第三范式:冗余性--字段之间不存在传递依赖,任何字段不能由其他字段派生而来
ER表达式
  1. 矩形:实体
  2. 圆形:属性
  3. 菱形:关系
三、基础操作
-- 1. select 查询
select 字段一,字段二,字段三 from 表名;

---------------------------------------------------------------------------------------------

-- 2. insert 添加
-- 给指定字段添加值
insert into 表名 (字段一,字段二,字段三) values (值一,值二,值三);

-- 按顺序添加所有字段值
insert into 表名 values (值一,值二,值三);

-- 将一个表中的数据赋值到新表中  【后面有个判断如果为false则只复制结构】
create table 新表名 as select 字段 from 旧表 [where 1 = 2];

-- 将一个表中的数据添加到令一个表中
insert into 表1(字段) select 字段 from 表2;

---------------------------------------------------------------------------------------------

-- 3. update 修改  【可以添加修改条件】
update 表名 set 字段名 = 字段值 [where 字段 = 值];

---------------------------------------------------------------------------------------------

-- 4. delete 删除 【可以添加删除条件】 可回滚 每次执行都会生成日志文件
delete from 表名 [where 字段 = 值];

-- 序列
create sequence 序列名;
-- 产生一个序列值
nextval
-- 删除序列
drop sequence 序列名;
四、Oracle运算符
1. distinct	去重 
2. where 	条件查询 
3. +-*/		算数运算符
4. = , !=(<>) , > , < , <= , >= , any , all , some	条件运算符
5. and , or , not	逻辑运算符
6. ||		sql中的拼接符
7. in 		在...中
8. between and	在...和...之间
9. is null	为空
10.like		模糊查询
11._ % 		模糊查询通配符
12.order by [acs|desc]	排序
13.group by [having]	分组【查询】	
五、高级查询
多表查询
  1. 内连接
表一 inner join 表二 on 连接条件
  1. 外连接
特殊关键词
1. identified by 由...确定
2. cascade 级联删除
3. create session 创建连接
4. resource 资源角色
5. connect 连接角色
6. primary key 主键(非空 唯一)
7. constraint 约束

Oracle数据库

上一篇:浅谈数据库并发控制 - 锁和 MVCC


下一篇:linux 安装 Logtash 同步mysql数据到Elasticsearch