当前位置: 首页 > news >正文

10.Oracle的同义词与序列

oracle11g的同义词与序列

  • 一、Oracle同义词:
    • 1、同义词的基本使用
    • 2、同义词的相关权限
    • 3、同义词的作用范围
  • 二、Oracle序列:
    • 1、序列的基本操作
    • 2、序列的相关权限

一、Oracle同义词:

同义词是一个数据库对象的别名,它允许用户通过不同的名称来引用同一个表、视图、序列或程序。同义词可以简化SQL语句,提高代码的可读性和可维护性。

1、同义词的基本使用

  1. 创建同义词的语法如下:

    CREATE [PUBLIC] SYNONYM synonym_name FOR object_name;
    

    其中,PUBLIC关键字表示创建公共同义词,可以被其他用户访问;synonym_name是同义词的名称;object_name是同义词所引用的对象名称。

    示例:

    创建或替换一个同义词,将表employees的名称改为emp:

    CREATE OR REPLACE SYNONYM emp FOR employees;
    
  2. 查询同义词:

    SELECT * FROM emp;
    
  3. 删除同义词

    DROP SYNONYM emp; 
    
    DROP PUBLIC SYNONYM emp; 
    

2、同义词的相关权限

同义词涉及到的相关权限包括 CREATE SYNONYM、DROP SYNONYM 以及对实际对象的权限。以下是相关权限以及不同同义词的作用范围的详细介绍,以及相应的代码示例。

  1. CREATE SYNONYM 权限:允许用户创建同义词。

    GRANT CREATE SYNONYM TO user_name;
    
  2. DROP SYNONYM 权限:允许用户删除同义词。

    GRANT DROP ANY SYNONYM TO user_name;
    

对实际对象的权限:用户在使用同义词时,实际上是在引用实际对象,因此用户需要有对实际对象的相应权限(比如 SELECT、INSERT、UPDATE、DELETE 等)。

3、同义词的作用范围

同义词的作用范围包括以下几种情况:

  1. 私有同义词(Private Synonym):创建用户自己的同义词,并且只有创建该同义词的用户可以使用它。

    CREATE SYNONYM synonym_name FOR object_name;
    
  2. 公有同义词(Public Synonym):创建公有同义词,所有用户都可以使用。

    CREATE PUBLIC SYNONYM synonym_name FOR object_name;
    
  3. 跨用户的同义词:一个用户可以创建指向其他用户拥有的对象的同义词。

    CREATE SYNONYM synonym_name FOR schema_name.object_name;
    

二、Oracle序列:

1、序列的基本操作

序列是一种数据库对象,它可以生成唯一的数字序列,通常用于为主键列提供唯一值。序列可以在多个表中使用,可以通过NEXTVAL和CURRVAL函数来获取下一个序列值和当前序列值。

  1. 创建序列的语法如下:

    CREATE SEQUENCE sequence_name[INCREMENT BY increment][START WITH start][MAXVALUE max_value | NOMAXVALUE][MINVALUE min_value | NOMINVALUE][CYCLE | NOCYCLE][CACHE cache_size | NOCACHE];
    

    其中,sequence_name是序列的名称;increment是序列的增量,默认为1;start是序列的起始值,默认为1;max_value是序列的最大值;min_value是序列的最小值;CYCLE表示序列达到最大值时是否重新从最小值开始循环;CACHE表示在内存中缓存的序列值的数量。

    示例:

    创建一个序列,名称为emp_seq,起始值为1,每次增加1:

    CREATE SEQUENCE emp_seqSTART WITH 1INCREMENT BY 1   ##可以为-1,当为-1是为递减MAXVALUE 2000MINVALUE 1NOCYCLECACHE 10;  ## 默认为20
    

    这段代码是用来创建一个名为"stu_seq"的序列(Sequence)的。序列是用来生成唯一数字值的对象,通常用于自动生成主键值或者其他需要唯一数字的场景。

    具体来说,这段代码设置了序列的起始值为1(START WITH 1),每次递增的步长为1(INCREMENT BY 1),最大值为2000(MAXVALUE 2000),最小值为1(MINVALUE 1),并且不会循环(NOCYCLE),意味着当达到最大值后不会重新从最小值开始。另外,它还设置了缓存为10(CACHE 10),这意味着系统会预先缓存10个序列值,以提高性能。

    总的来说,这段代码创建了一个序列,定义了它的起始值、递增步长、最大值、最小值、循环方式以及缓存设置。

  2. 获取序列的下一个值:

    SELECT emp_seq.NEXTVAL FROM dual;
    
  3. 获取序列的当前值:

    SELECT emp_seq.CURRVAL FROM dual;
    
  4. 在表中的使用

    在具体表中使用Oracle11g序列的常见方法包括:

    • 在INSERT语句中使用序列:

      INSERT INTO employee (id, name, age)
      VALUES (employee_seq.NEXTVAL, 'John Doe', 30);
      
    • 在UPDATE语句中使用序列:

      UPDATE employee
      SET id = employee_seq.NEXTVAL
      WHERE name = 'John Doe';
      
    • 在SELECT语句中使用序列:

      SELECT employee_seq.NEXTVAL
      FROM dual;
      
    • 在表的默认值中使用序列:

      ALTER TABLE employee
      MODIFY (id DEFAULT employee_seq.NEXTVAL);
      
    • 在Oracle11g中,可以使用序列的CURRVAL和NEXTVAL函数来生成一串有规律的数。下面是一个示例代码,可以将序列的值拼接为一个有规律的字符串:

      CREATE SEQUENCE my_seqSTART WITH 1INCREMENT BY 1NOCACHENOCYCLE;SELECT 'ABC' || LPAD(my_seq.NEXTVAL, 4, '0') AS my_string
      FROM dual;
      

      上面的代码中,LPAD函数将序列的值填充为4位,不足4位的用0填充。然后将序列的值拼接到字符串“ABC”后面,生成一个有规律的字符串。每次执行上面的SELECT语句,都会生成一个新的字符串。

      如果需要将这个字符串插入到表中的某个列中,可以使用INSERT语句:

      INSERT INTO my_table (id, my_string)
      VALUES (my_seq.NEXTVAL, 'ABC' || LPAD(my_seq.CURRVAL, 4, '0'));
      

      上面的代码中,将序列的值插入到表的id列中,将拼接后的字符串插入到my_string列中。每次执行上面的INSERT语句,都会生成一个新的字符串,并将它插入到表中。

      总之,使用序列的CURRVAL和NEXTVAL函数,可以方便地生成一串有规律的数,并将它们插入到表中的某个列中。

2、序列的相关权限

在 Oracle 11g 中,序列(Sequence)涉及到的相关权限包括 CREATE SEQUENCE、ALTER、DROP、SELECT 等权限。以下是相关权限的代码示例:

  1. 授予创建序列的权限:

    GRANT CREATE SEQUENCE TO user_name;
    

    这将允许用户 user_name 在数据库中创建新的序列。

  2. 授予修改序列的权限:

    GRANT ALTER ON sequence_name TO user_name;
    

    这将允许用户 user_name 修改特定序列的定义,包括修改起始值、递增步长、最大值、最小值等属性。

  3. 授予删除序列的权限:

    GRANT DROP ANY SEQUENCE TO user_name;
    

    这将允许用户 user_name 删除任何序列。

  4. 授予查询序列的权限:

    GRANT SELECT ON sequence_name TO user_name;
    

    这将允许用户 user_name 查询特定序列的当前值,以及获取序列的下一个值。

  5. 使用权限:

    除了以上列出的权限外,用户还需要有使用序列的权限,以便在 SQL 语句中使用序列来生成唯一的序列值。通常情况下,用户在有相应表的 INSERT 权限时,也可以使用序列。

    GRANT INSERT ON table_name TO user_name;
    

    这将允许用户 user_name 向表 table_name 中插入数据,通常在插入数据时可以使用序列来生成唯一的主键值。

相关文章:

10.Oracle的同义词与序列

oracle11g的同义词与序列 一、Oracle同义词:1、同义词的基本使用2、同义词的相关权限3、同义词的作用范围 二、Oracle序列:1、序列的基本操作2、序列的相关权限 一、Oracle同义词: 同义词是一个数据库对象的别名,它允许用户通过不…...

【周报2023-11-10】

周报2023-11-10 本周的主要工作下周工作计划 本周的主要工作 本周的主要工作就有三个 第一个是进行对我们目前的高企项目的完善情况第二个是对于高企项目的接口对接情况以及细节的把控第三个为新的小程序项目做准备工作 首先第一个高企项目的完善情况得话主要是页面上 对于原…...

搜维尔科技:业内普遍选择Varjo头显作为医疗VR/AR/XR解决方案

Varjo 的人眼分辨率混合现实和虚拟现实头显将医疗专业人员的注意力和情感投入提升到更高水平。借助逼真的 XR/VR,医疗和保健人员可以为最具挑战性的现实场景做好准备! 在虚拟、增强和混合现实中进行最高水平的训练和表现 以逼真的 3D 方式可视化医疗数据…...

数据结构02附录01:顺序表考研习题[C++]

图源:文心一言 考研笔记整理~🥝🥝 之前的博文链接在此:数据结构02:线性表[顺序表链表]_线性链表-CSDN博客~🥝🥝 本篇作为线性表的代码补充,每道题提供了优解和暴力解算法&#xf…...

ClientDateSet:Cannot perform this operation on a closed dataset

一、问题表现 Delphi 三层DataSnap,使用AlphaControls控件优化界面,一窗口编辑时,出现下列错误提示: 编译通过,该窗口中,重新显示数据,下图: 相关代码: procedure…...

python中列表的基础解释

列表: 一种可以存放多种类型数据的数据结构 列表的创建: 1.用【】创建列表 #创建一个空列表 list1[] #创建一个非空列表 list2 [zhang,li,ying,1,2,3] #输出内容及类型 print(list1,type(list1)) print(list2,type(list2))结果: 2.使用list…...

『力扣刷题本』:链表分割

一、题目 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。 二、思路解析 首先,让我们列出我们需要做的事情&…...

FISCOBCOS入门(十)Truffle测试helloworld智能合约

本文带你从零开始搭建truffle以及编写迁移脚本和测试文件,并对测试文件的代码进行解释,让你更深入的理解truffle测试智能合约的原理,制作不易,望一键三连 在windos终端内安装truffle npm install -g truffle 安装truffle时可能出现网络报错,多试几次即可 truffle --vers…...

Unity Text文本首行缩进两个字符的方法

Text文本首行缩进两个字符的方法比较简单。通过代码把"\u3000\u3000"加到文本字符串前面即可。 参考如下代码: TMPtext1.text "\u3000\u3000" "这是一段有首行缩进的文本内容。\n这是第二行"; 运行效果如下图所示: 虽…...

TS的函数重载、类型合并、类型断言

函数重载 let list5 [1, 2, 3, 4]function findNum(id: number): number[]function findNum(): number[]function findNum(list: number[]): number[]function findNum(ids?: number | number[]): number[] {if (typeof ids number) {return list5.filter((num) > num …...

JVM:字节码文件,类的生命周期,类加载器

JVM:字节码文件,类的生命周期,类加载器 为什么要学这门课程 1. 初识JVM1.1. 什么是JVM1.2. JVM的功能1.3. 常见的JVM 2. 字节码文件详解2.1. Java虚拟机的组成2.2. 字节码文件的组成2.2.1. 以正确的姿势打开文…...

【IPC】消息队列

1、IPC对象 除了最原始的进程间通信方式信号、无名管道和有名管道外,还有三种进程间通信方式,这 三种方式称之为IPC对象 IPC对象分类:消息队列、共享内存、信号量(信号灯集) IPC对象也是在内核空间开辟区域,每一种IPC对象创建好…...

内网穿透工具NPS(保姆级教程)

前言: 有时候我们受限于硬件设备和网络的的问题,无法将内网的大容量、高性能存储设备或计算设备对外访问。这个时候就会变的特别苦恼,上云呢成本太大,不用云呢公网又无法直接访问,这个时候怎么办呢,NPS它来…...

最长公共子序列问题

构造最长公共子序列为什么要这样构造序列 for(int i1;i<n;i){int k;cin>>k;b[k]i;}for(int i1;i<n;i){int k;cin>>k;a[i]b[k];}并且为什么要求上升序列&#xff0c;是有什么数学知识包含在其中吗&#xff1f; 为什么在求最长公共子序列时&#xff0c;f[mid]大…...

服务器数据恢复—热备盘同步中断导致Raid5数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 某单位一台服务器上有一组raid5阵列&#xff0c;该raid5阵列有15块成员盘。上层是一个xfs裸分区&#xff0c;起始位置是0扇区。 服务器故障&检测&#xff1a; 服务器raid5阵列中有硬盘性能表现不稳定&#xff0c;但是由于管理员长时间没有关…...

桥接模式-C++实现

桥接模式是一种结构型设计模式&#xff0c;它是将抽象部分和实现部分隔离&#xff0c;通过组合关系将抽象部分和实现部分解耦&#xff0c;使它们可以独立变化。 因此&#xff0c;桥接模式可以很好的处理两个或两个以上维度的变化。 举一个例子说明&#xff1a; 假设我们现在…...

PHP字符串函数的解析

在PHP中&#xff0c;字符串是一种常见的数据类型&#xff0c;用于存储和操作文本数据。PHP提供了丰富的字符串函数&#xff0c;用于执行各种字符串操作&#xff0c;包括截取、连接、替换、搜索等。在这篇文章中&#xff0c;我们将深入解析一些常用的PHP字符串函数&#xff0c;以…...

科研学习|研究方法——使用python强大的Statsmodel 执行假设检验和线性回归

如果你使用 Python 处理数据&#xff0c;你可能听说过 statsmodel 库。 Statsmodels 是一个 Python 模块&#xff0c;它提供各种统计模型和函数来探索、分析和可视化数据。该库广泛用于学术研究、金融和数据科学。 在本文中&#xff0c;我们将介绍 statsmodel 库的基础知识、如…...

设计模式——责任链模式

文章目录 责任链模式的定义场景示例责任链模式实现方案责任链模式扩展责任链模式的优缺点责任链模式在框架源码中的应用 责任链模式的定义 责任链模式又称职责链模式&#xff0c;是一种行为型设计模式。官方描述&#xff1a;使多个对象都有机会处理请求&#xff0c;从而避免请…...

nginx得if语句内proxy_pass不允许携带url部分,如何处理

在nginx中&#xff0c;proxy_pass指令不能直接携带URL部分。但是&#xff0c;可以使用rewrite指令结合正则表达式来处理URL部分。 下面是一个示例配置&#xff0c;演示如何使用rewrite指令将URL中的某个部分进行替换后传递给后端服务器&#xff1a; location /v100/{proxy_…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...