Oracle数据库

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、DML操作

DML的主要操作:
在这里插入图片描述

1、insert

操作:

insert into 表名 [(字段列表)] values(值列表); 添加记录

2、update

操作:

update 表名 set 字段=[,....] where 过滤行记录;

3、delete

操作:

delete [from] 表名 where 过滤行记录

4、截断数据

定义:runcate: 截断所有的数据 ,如果截断的是主表,结构不能存在外键关联,截断数据同时从结构上检查

截断数据与删除数据区别 truncate 与delete 区别

truncatedelete
ddl ,不涉及事务,就不能回滚dml ,涉及事务,可以回滚
截断所有的数据可以删除全部或者部分记录
从结构上检查是否存在主外键,如果存在,不让删除从记录上检查是否存在主外键,如果存在,按参考外键约束进行删除

二、事务

事务是指作为单个逻辑工作单元执行的一组相关操作。这些操作要求全部完成或者全部不完成。使用事
务是为了保证数据的安全有效。

事务的特点:ACID

  1. 原子性(Atomic):事务中所有数据的修改,要么全部执行,要么全部不执行。
  2. 一致性(Consistence):事务完成时,要使所有所有的数据都保持一致的状态,换言之:通过事
    务进行的所有数据修改,必须在所有相关的表中得到反映。
  3. 隔离性(Isolation):事务应该在另一个事务对数据的修改前或者修改后进行访问。
  4. 持久性(Durability):保证事务对数据库的修改是持久有效的,即使发生系统故障,也不应该丢
    失。

在这里插入图片描述
丢失更新:两个事务同时存储, 一个存储 100 , 一个存储 200,最终可能至存储了 200 或者 100,那另一个的更新就没成功,即结果不为预想的 300

脏读:事务 T1 更新了一行数据,还没有提交所做的修改,T2 读取更新后的数据,T1回滚,T2 读取的数据无效,这种数据称为脏读数据。

不可重复读:事务 T1 读取一行数据,T2 修改了 T1 刚刚读取的记录,T1 再次查询,发现与第一次读取的记录不相同,称为不可重复读。

幻读:事务 T1 读取一条带 WHERE 条件的语句,返回结果集,T2 插入一条新纪录,恰好也是 T1 的
WHERE 条件,T1 再次查询,结果集中又看到 T2 的记录,新纪录就叫做幻读。

事务的开启:
自动开启于 DML 之 insert delete update

事务的结束:
失败:rollback ,手动回滚
非法退出 意外的断电
成功:正常执行完成的 DDL 语句:create、alter、drop
正常执行完 DCL 语句 GRANT、REVOKE
正常退出的 SQLPlus 或者 SQL Developer 等客户端
如果人工要使用隐式事务,SET AUTOCOMMIT ON (只针对一个连接)
手动提交 :使用 commit

三、DDL

创建表首先明确表的作用、明确表中的字段。不会对具体数据进行操作。

首先满足数据库表的设计三范式。

知道表与表之间的关系:

  1. 一对一
  2. 一对多
  3. 多对多
    在这里插入图片描述

1、约束

在 oracle中所有的一切都是对象, 约束也是一个个的对象,除了能创建约束我们还能对约束进行一些其他的操作。

1.1、查看某个用户的约束

select constraint_name, constraint_type
from user_constraints
where owner = upper('SCOTT');

1.2、查看表的约束

select constraint_name, constraint_type
from user_constraints
where table_name = upper('emp');

四、视图、索引和序列

4.1 视图

视图:建立在表|结果集|视图上的虚拟表,有以下作用

  1. 简化:select 查询语句
  2. 重用:封装select语句 命名
  3. 隐藏:内部细节
  4. 区分:相同数据不同查询

不是所有的用户都有创建视图的权限

  1. 前提: create view -->组 connect resource dba
  2. 授权: -->sqlplus /nolog
    a)、sys登录 conn sys/123456@orcl as sysdba
    b)、授权: grant dba to scott;
    回收: revoke dba from scott;
    c)、重新登录

4.2索引

前提 : 设计表首先应该按需遵循三范式

  1. 确定表名
  2. 确定字段名 类型 +约束(主键 外键 非空 默 检查认 唯一)
    主键: 唯一标识一条记录(唯一并且非空)
    唯一: 唯一
    非空:不能为空
    默认: 当没给值时使用给定一个默认值
alter table tb_user drop constraint uq_user_email cascade;

–非空

alter table tb_user modify (username varchar2(20));

–默认

alter table tb_user modify (age default null);
create or replace view 视图名 as select语句 [with read only];

外键:参考其他表(自己)的某个(某些)字段
检查:自定义的规则
索引: 提高查询速度的一种手段 相当于目录
1、唯一性较好字段适合建立索引
2、大数据量才有效果
3、主键|唯一: 唯一索引

4.3 序列

是一种工具,程序管理流水号,序列在创建时 没有与表关联 ,在操作数据时与表关联。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值