oracle学习记录-DML

oracle学习记录-DML

简介

DML(Data Manipulation Language-数据操纵语言)可以在下列条件下执行:

  • 向表中插入数据
  • 修改现存数据
  • 删除现存数据
    事务是由完成若干项工作的DML语句组成的

insert语法

在这里插入图片描述

插入数据

在这里插入图片描述

向表中插入空值

在这里插入图片描述

插入指定的值

SYSDATE 记录当前系统的日期和时间
在这里插入图片描述
在这里插入图片描述

创建脚本

  • 在SQL 语句中使用 & 变量指定列值。
  • & 变量放在values子句中。
    在这里插入图片描述

从其它表中拷贝数据

在这里插入图片描述

update

在这里插入图片描述

删除数据

在这里插入图片描述

数据库事务

  • 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。
  • 数据库事务由以下的部分组成:
    一个或多个DML 语句
    一个 DDL(Data Definition Language – 数据定义语言) 语句
    一个 DCL(Data Control Language – 数据控制语言) 语句
  • 以第一个 DML 语句的执行作为开始
  • 以下面的其中之一作为结束:
                                              COMMITROLLBACK 语句
                                                 DDL 语句(自动提交)
                                                 用户会话正常结束
                                                 系统异常终止

COMMIT和ROLLBACK语句的优点

使用COMMIT 和 ROLLBACK语句,我们可以:
确保数据完整性。
数据改变被提交之前预览。
将逻辑上相关的操作分组。

控制事务

在这里插入图片描述

回滚到保留点

在这里插入图片描述

事务进程

  • 自动提交在以下情况中执行:
  1. DDL 语句。
  2. DCL 语句。
    不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。
  • 会话异常结束或系统异常会导致自动回滚。

提交或回滚前的数据状态

改变前的数据状态是可以恢复的
执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正

其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
DML语句所涉及到的行被锁定, 其他用户不能操作

提交后的数据状态

数据的改变已经被保存到数据库中。
改变前的数据已经丢失。
所有用户可以看到结果。
锁被释放,其他用户可以操作涉及到的数据。
所有保存点被释放。

提交数据

在这里插入图片描述

数据回滚后的状态

在这里插入图片描述

总结

在这里插入图片描述

constraint(约束)

约束是表级的强制规定
有以下五种约束:

NOT NULL
UNIQUE 
PRIMARY KEY
FOREIGN KEY
CHECK

在这里插入图片描述

表级约束和列级约束

在这里插入图片描述

语法

在这里插入图片描述
在这里插入图片描述

NOT NULL 约束

非空约束:值不能为空
在这里插入图片描述

UNIQUE 约束

唯一约束:允许出现多个空值:Null,不允许出现列的值重复
在这里插入图片描述

PRIMARY KEY 约束

主键约束:不允许空值
可以定义在表级或列级:
在这里插入图片描述

FOREIGN KEY 约束

外键约束
可以定义在表级或列级:
在这里插入图片描述

FOREIGN KEY 约束的关键字

在这里插入图片描述

CHECK 约束

检查约束:定义每一行是否满足条件
在这里插入图片描述

添加约束

在这里插入图片描述
在这里插入图片描述

删除约束

从表 EMPLOYEES 中删除约束
在这里插入图片描述

无效化约束

在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。
在这里插入图片描述

激活约束

ENABLE 子句可将当前无效的约束激活
在这里插入图片描述
当定义或激活UNIQUE 或 PRIMARY KEY 约束时系统会自动创建UNIQUE 或 PRIMARY KEY索引

查询约束

在这里插入图片描述

查询定义约束的列

在这里插入图片描述

视 图

常见的数据库对象

在这里插入图片描述
视图是一种虚表。
视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
视图向用户提供基表数据的另一种表现形式

视图的好处

  • 控制数据访问
  • 简化查询
  • 避免重复访问相同的数据

简单视图和复杂视图

在这里插入图片描述

创建视图

create view empview as
 select * from employees; # 创建视图empview从employees表

在这里插入图片描述
在这里插入图片描述

查询视图

select * from empview ;#  select * from empview (视图名)

在这里插入图片描述

修改视图

在这里插入图片描述

创建复杂视图

在这里插入图片描述

视图中使用DML的规定

在这里插入图片描述
当视图定义中包含以下元素之一时不能使用update:
组函数
GROUP BY子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
当视图定义中包含以下元素之一时不能使insert:
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
表中非空的列在视图定义中未包括

屏蔽 DML 操作

在这里插入图片描述
在这里插入图片描述

删除视图

在这里插入图片描述

Top-N 分析

Top-N 分析查询一个列中最大或最小的 n 个值:
销售量最高的十种产品是什么?
销售量最差的十种产品是什么?

最大和最小的值的集合是 Top-N 分析所关心的
在这里插入图片描述
在这里插入图片描述

select *
from(
select rownum rn,employee_id,salary
from(
select employee_id,salary,last_name
from employees
order by salary desc
)
)where rn <=50 and rn >40

序列

序列: 可供多个用户用来产生唯一数值的数据库对象
自动提供唯一的数值
共享对象
主要用于提供主键值
将序列值装入内存可以提高访问效率

语法

在这里插入图片描述
在这里插入图片描述

查询序列

在这里插入图片描述

NEXTVAL 和 CURRVAL 伪列

NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用
CURRVAL 中存放序列的当前值
NEXTVAL 应在 CURRVAL 之前指定 ,否则会报CURRVAL 尚未在此会话中定义的错误。

举例

在这里插入图片描述

使用序列

将序列值装入内存可提高访问效率
序列在下列情况下出现裂缝:
回滚
系统异常
多个表同时使用同一序列
如果不将序列的值装入内存(NOCACHE), 可使用表 USER_SEQUENCES 查看序列当前的有效值

修改序列

在这里插入图片描述

注意事项

在这里插入图片描述

删除序列

在这里插入图片描述

索 引

在这里插入图片描述

创建索引

自动创建: 在定义 PRIMARY KEYUNIQUE 约束后系统自动在相应的列上创建唯一性索引
手动创建: 用户可以在其它列上创建非唯一的索引,以加速查询
在这里插入图片描述

什么时候创建索引

以下情况可以创建索引:
列中数据值分布范围很广
列经常在 WHERE 子句或连接条件中出现
表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%

什么时候不要创建索引

下列情况不要创建索引:
表很小
列不经常作为连接条件或出现在WHERE子句中
查询的数据大于2%到4%
表经常更新

Desc emp;
Create index name_index on emp(name);

索引不需要用,只是说我们在用name进行查询的时候,速度会更快。当然查的速度快了,插入的速度就会慢。因为插入数据的同时,还需要维护一个索引。

查询索引

在这里插入图片描述

删除索引

在这里插入图片描述

同义词-synonym

在这里插入图片描述

创建和删除同义词

在这里插入图片描述

控制用户权限

权 限

数据库安全性:
系统安全性
数据安全性
系统权限: 对于数据库的权限
对象权限: 操作数据库对象的权限

系统权限

超过一百多种有效的权限
数据库管理员具有高级权限以完成管理任务,例如:
创建新用户
删除用户
删除表
备份表

创建用户

在这里插入图片描述

用户的系统权限

在这里插入图片描述

赋予系统权限

在这里插入图片描述

创建用户表空间

用户拥有create table权限之外,还需要分配相应的表空间才可开辟存储空间用于创建的表
在这里插入图片描述

角 色

在这里插入图片描述

建角色并赋予权限

在这里插入图片描述

修改密码

在这里插入图片描述

对象权限

在这里插入图片描述
在这里插入图片描述

分配对象权限

在这里插入图片描述

WITH GRANT OPTION和PUBLIC关键字

在这里插入图片描述

查询权限分配情况

在这里插入图片描述

收回对象权限

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

SET 运算符

set操作符

在这里插入图片描述

union 操作实例

UNION 操作符返回两个查询的结果集的并集
在这里插入图片描述

UNION ALL

UNION ALL 操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。
在这里插入图片描述

INTERSECT 操作符

INTERSECT 操作符返回两个结果集的交集
在这里插入图片描述

MINUS

MINUS操作符:返回两个结果集的差集
在这里插入图片描述

SET 操作符注意事项

在SELECT 列表中的列名和表达式在数量和数据类型上要相对应
括号可以改变执行的顺序
ORDER BY 子句:
只能在语句的最后出现
可以使用第一个查询中的列名, 别名或相对位置

除 UNION ALL之外,系统会自动将重复的记录删除
系统将第一个查询的列名显示在输出中
除 UNION ALL之外,系统自动按照第一个查询中的第一个列的升序排列
在这里插入图片描述
在这里插入图片描述

高级子查询

子查询

子查询是嵌套在 SQL 语句中的另一个SELECT 语句

  • 子查询 (内查询) 在主查询执行之前执行
  • 主查询(外查询)使用子查询的结果
    在这里插入图片描述
    在这里插入图片描述

多列子查询

在这里插入图片描述
多列子查询中的比较分为两种:
成对比较
不成对比较

成对比较举例

在这里插入图片描述

不成对比较举例

在这里插入图片描述

在 FROM 子句中使用子查询

在这里插入图片描述
在这里插入图片描述

单列子查询表达式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关子查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EXISTS 操作符

EXISTS 操作符检查在子查询中是否存在满足条件的行
如果在子查询中存在满足条件的行:
不在子查询中继续查找
条件返回 TRUE
如果在子查询中不存在满足条件的行:
条件返回 FALSE
继续在子查询中查找

EXISTS 操作符应用举例

在这里插入图片描述

NOT EXISTS 操作符应用举例

在这里插入图片描述

相关更新

在这里插入图片描述
在这里插入图片描述

相关删除

在这里插入图片描述
在这里插入图片描述

WITH 子句

使用 WITH 子句, 可以避免在 SELECT 语句中重复书写相同的语句块
WITH 子句将该子句中的语句块执行一次并存储到用户的临时表空间中
使用 WITH 子句可以提高查询效率
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值