存储过程
存储过程在大新数据库系统中,一组为了完成特定功能的SQL语句集 存储在SQL数据库中

优势: SQL进行封装 调用方便
            存储过程会进行编译 提升用户执行SQL语句集的速度
            系统管理员 通过执行某一存储过程的权限进行限制 ,能实现对相应数据的访问权限的限制 保障数据安全

# 创建存储过程
create or replace procedure if not exists schema.procedure_name IS|AS
begin
insert into table_name values(1,"xxx");
commit;
end;
/

执行存储过程
# 自定义存储过程如果和函数重名 优先执行函数
   执行存储过程时 不允许使用常亮对INPUT OUT类型 输入参数赋值
   执行不带参数的存储过程 不需要带括号
   执行存储过程时 可以用; 和 / 作为结束符 但是两个结束符 不能一起使用 如果一起会报错
[ exec | call ]  schema.procedure_name;

自定义函数
函数用于返回特定的值 需要有一个return或者多个

create or replace if not exists function schema.funtion_name(a int ,b varcahr2) return int 

as

  c int;

  d int;

begin

   c:=a;

   d:=b;

return 2*(c+d);

end perimeter;

/

# 删除自定义函数 


drop function if exists schema.function_name

同义词 数据对象的别名

代表数据对象的一种映射关系

节省数据库空间 扩展数据库使用范围 能在不同数据库用户之间实现无缝交互

简化对象访问 和提高对象访问的安全性

私有同义词 共有同义词 public关键字

私有同义词需要授权 才允许其他用户访问

# 为sys用户表staff 创建一个私有同义词 

create or replace synonmn st for omm.staffs;

# 给smith 用户授权st 同义词的对象权限

grant select|create session  ON st TO smith ;

# 删除synonmn

drop public synonmn if exists st force;

触发器 

特殊种类的存储过程 通过制定某个事件触发 执行 一般用于数据审计 数据备份等

对表的select insert update delete merge 进行监控 当发生事件触发触发器

数据更改访问前触发 或者数据更改访问后触发触发器

create trigger

触发器不能出现 DDL DCL

一个表上最多有个触发器

不支持本地临时表上创建触发器

普通用户的触发器 不允许基于SYS用户表创建

创建触发器时,最后/ 作为结束 不能省略 必须单独成行

create or replace trigger trig_alter_insert after on staffs 

begin 

    insert into t_trig_log values(trig_log_seq.nextval, 'after insert');

end;
/

# 修改触发器


alter  trigger schema.trigger_name enable| disable   # 启动 不生效


drop trigger trig_after_insert # 删除

 

大对象 

BLOB 可变长对象 CLOB 可变长字符串  IMAGE 图像

 数据库并发管理

并发概念 数据库允许多个用户连接 访问

如果对数据的并发和访问 没有修改和加以控制 会破坏数据库的一致性

在数据库中并发控制 以事务为单位进行的 并发控制机制是对性能的核心及基石

事务的概念 

事务是数据库的逻辑工作单位 是用户定义的一组操作列 一个事务可以是一条sql语句 一组sql语句或整个程序

事务内的操作要不不做 要么全做 是一个不可分割的单位

ACID 原子性 一致性 持续性 隔离性

原子:一个事务是原子的 ,要么完整的执行下来 要么干脆就不做

隔离:并发执行事务全部结束后 其效果等同于事务串行执行

持久性: 事务的操作 一旦提交 对数据中数据的改变是永久的

一致性:事务执行之前和事务执行之后必须处于一致性状态

 

事务具有以下特性

事务隐形启动 第一次对数据修改自动启动事务 没有显示start transation 语句

事务启动时 分配事务的唯一标识 XID

默认非自动提交事务 语句结束不提交事务 可以通过设置会话参数 auto commit 改为自动提交

事务结束 产生事务唯一的属性SCN

DDL在独立事务内运行 执行前会结束当前会话已经运行的事务

并发场景DDL DCL DML 

事务有唯一的XID 事务状态 SCN时间戳

事务状态 END BEGIN  xa prepare xa rollback

事务级别 : read commit

读提交  语句执行时,获取当前系统SCN作为当前语句查询的SCN

整个语句的可见结果由语句开始的那一刻决定 不受后续其他事务影响

结果集默认保持一致性读原则

事务级别 :read current commited

语句开始执行时 获取当前的SCN做当前语句查询SCN

语句执行过程中 获取当前访问最近一次提交记录作为可见版本

读已提交的一种 单结果集不一致的用于对一直 较低的场景

事务级别 :serializable

事务内所有执行语句 获取当前事务开始SCN 作为语句的查询SCN

语句的可见结果在事务开始那一刻决定 不受后续其他事务影响

事务更新冲突时 等待对方事务结束 如果记录发生变化则报错 否则继续操作

串行化 数据快照级别的串行化 访问记录不对记录加锁

启动事务:隐形启动
提交事务:自动提交 显性提交
回退事务:事务执行失败 自动回滚 ,手动rollback

读写并发
写会将上一个版本 记录到UNDO区域
查询不加锁 通过读undo获取可见版本
行锁不阻塞读 只阻塞其他事务 对改行的修改

DML并发
DML对表加共享锁
修改一行数据前 对行加锁 阻塞其他事务对这行进行修改
已经对改行加锁的事务未提交之前 其他要修改的该行的事务只能等待事务提交
DML 结束时候 不释放锁和行锁 提交的时候放表锁和行锁

【HICP Gauss】数据库 数据库管理(存储过程 函数 对象 近义词 触发器 事务类型)-9的更多相关文章

  1. 基于WordNet的英文同义词、近义词相似度评估及代码实现

    源码地址:https://github.com/XBWer/WordSimilarity 1.确定要解决的问题及意义 在基于代码片段的分类过程中,由于程序员对数据变量名的选取可能具有一定的规范性,在某 ...

  2. 安装elasticsearch及中文IK和近义词配置

    安装elasticsearch及中文IK和近义词配置 安装java环境 java环境是elasticsearch安装必须的 yum install java-1.8.0-openjdk 安装elast ...

  3. python 近义词库包 synonyms 的使用

    最近接触到nlp的一些东西,需要找出中文词语的近义词,也接触到了一个synonyms 的库, 分词,去停用词,word2vector  等 一些列nlp 的操作,还可以输出中文词语的近义词 https ...

  4. 【中文同义词近义词】词向量 vs 同义词近义词库

    方案一:利用预训练好的词向量模型 优点: (1)能把词进行语义上的向量化(2)能得到词与词的相似度 缺点: (1)词向量的效果和语料库的大小和质量有较大的关系(2)用most_similar() 得到 ...

  5. 安装elasticsearch-1.7.1及中文IK和近义词配置

    安装elasticsearch及中文IK和近义词配置 https://www.cnblogs.com/yjf512/p/4789239.html 安装elasticsearch及中文IK和近义词配置 ...

  6. 条款20 STL函数对象

    继承标准STL的函数对象 1: struct PopLess : public atd::binary_function<state,state,bool> 2: { 3: bool op ...

  7. C++ Primer 学习笔记_62_重载操作符与转换 --调用操作符和函数对象

    重载操作符与转换 --调用操作符和函数对象 引言: 能够为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符! struct absInt { int operator() (int v ...

  8. 02--STL算法(函数对象和谓词)

    一:函数对象(仿函数):实现状态记录等其他操作<相对于普通函数> 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象. 即是重载了“ ...

  9. C++ 理解函数对象与lambda表达式

    参考<21天学通C++>第21与第22章节,对函数对象进行介绍,同时通过lambda表达式这一匿名函数对象的简洁方式加深对函数对象的理解.本篇博文的主要内容是: (1) 函数对象的概念: ...

随机推荐

  1. 添加tomcat8为服务

    跟上一篇添加zookeeper为服务基本类似 脚本如下: #!/bin/bash CATALANA_HOME=/usr/local/tomcat8 export JAVA_HOME=/usr/loca ...

  2. EXCEL中,在其中列 前面or后面加一个“元”字的技巧

    EXCEL小技巧,我们平常需要用到一些,记录下,供有需要的人参考! 案例: EXCEL其中的一列,每个后面加一个“元”字,如果要1个1个去加,相当麻烦,其实很简单,只需要一个公式即可! 解决方法: ( ...

  3. python的注释规范

    pydoc是python自带的一个文档生成工具,使用pydoc可以很方便的查看类和方法结构   本文主要介绍:1.查看文档的方法.2.html文档说明.3.注释方法.   一.查看文档的方法 方法1: ...

  4. python 计算文件夹里所有内容的大小总和

    计算文件夹里所有内容的大小总和 递归方法 '''计算文件夹的大小''' import os def dir_file_size(path): if os.path.isdir(path): file_ ...

  5. Word 查找替换高级玩法系列之 -- 把论文中的缩写词快速变成目录下边的注释表

    1. 前言 问题:Word写论文如何把文中的缩写快速转换成注释表? 原来样子: 想要的样子: 2. 步骤 使用查找替换高级用法,替换缩写顺序 选中所有文字 打开查找替换对话框,输入以下表达式: 替换后 ...

  6. 斜率优化dp学习笔记 洛谷P3915[HNOI2008]玩具装箱toy

    本文为原创??? 作者写这篇文章的时候刚刚初一毕业…… 如有错误请各位大佬指正 从例题入手 洛谷P3915[HNOI2008]玩具装箱toy Step0:读题 Q:暴力? 如果您学习过dp 不难推出d ...

  7. 20190705-Python数据驱动之DDT

    DDT ddt 是第三方模块,需安装, pip install ddt DDT包含的装饰器 包含一个类装饰器@ddt和两个方法装饰器@data和@file_data 通常情况下,@data中的数据按照 ...

  8. go map的定义和使用 键值对存储

    定义map    var m map[string]int //定义map 初始化map    m = make(map[string]int) //初始化map 修改map中ok 的值  m[&qu ...

  9. Idea中一个服务按多个端口同时启动

    1.勾选并行启动 2.-Dserver.port=9018

  10. harbor环境搭建及web使用

    概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基 ...