数据库:一文掌握 Oracle 的各种指令(Oracle指令备忘)

文章目录

    • 入门
      • SELECT 语句
      • SELECT INTO 语句
      • INSERT 语句
      • DELETE 语句
      • UPDATE 语句
    • SEQUENCES
      • CREATE SEQUENCE
      • ALTER SEQUENCE
      • 从字符串生成查询
      • 字符串操作
      • Instr
      • Replace
      • Substr
      • Trim
    • DDL SQL
      • 创建表
      • 添加列
      • 修改列
      • 删除列
      • 约束类型和代码
      • 显示约束
      • 选择参照约束
      • 对表设置约束
      • 表上的唯一索引
      • 添加唯一约束
      • 添加外部约束
      • 删除约束
    • INDEXES
      • 创建索引
      • 创建基于函数的索引
      • 重命名索引
      • 收集索引的统计信息
      • 删除索引
    • DBA 相关
      • 创建用户
      • 授予特权
      • 更改密码
      • 查看表空间的名称以及大小
      • 查看还没提交的事务
      • 查看数据库库对象
      • 查看数据库的版本
      • 查看数据库的创建日期和归档方式
      • 查看控制文件
      • 查看日志文件
      • 查看表空间的使用情況
      • 捕捉运行很久的SOL

入门

SELECT 语句

SELECT * 
FROM beverages 
WHERE field1 = 'Kona' AND field2 = 'coffee' AND field3 = 122;

SELECT INTO 语句

SELECT name, address, phone_number 
INTO v_employee_name, v_employee_address, v_employee_phone_number 
FROM employee 
WHERE employee_id = 6;

INSERT 语句

使用 VALUES 关键字插入

INSERT INTO table_name 
VALUES ('Value1', 'Value2', ... );INSERT INTO table_name (Column1, Column2, ... ) 
VALUES ( 'Value1', 'Value2', ... );

使用 SELECT 语句插入

INSERT INTO table_name
SELECT Value1, Value2, ...
FROM table_name;INSERT INTO table_name (Column1, Column2, ...)
SELECT Value1, Value2, ...
FROM table_name;

DELETE 语句

DELETE FROM table_name 
WHERE some_column = some_value;DELETE FROM customer 
WHERE sold = 0;

UPDATE 语句

-- 更新该表的整个列,设置 `state` 列所有值为 `CA`
UPDATE customer SET state='CA';
-- 更新表的具体记录eg:
UPDATE customer SET name='Joe' WHERE customer_id=10;
-- 当 `paid` 列大于零时,将列 `invoice` 更新为 `paid`
UPDATE movies SET invoice='paid' WHERE paid > 0;

SEQUENCES

CREATE SEQUENCE

序列的语法是

CREATE SEQUENCE sequence_nameMINVALUE valueMAXVALUE valueSTART WITH valueINCREMENT BY valueCACHE value;

例如

CREATE SEQUENCE supplier_seqMINVALUE 1MAXVALUE 999999999999999999999999999START WITH 1INCREMENT BY 1CACHE 20;

ALTER SEQUENCE

将序列增加一定数量

ALTER SEQUENCE <sequence_name> INCREMENT BY <integer>;
ALTER SEQUENCE seq_inc_by_ten  INCREMENT BY 10;

改变序列的最大值

ALTER SEQUENCE <sequence_name> MAXVALUE <integer>;
ALTER SEQUENCE seq_maxval  MAXVALUE  10;

设置序列循环或不循环

ALTER SEQUENCE <sequence_name> <CYCLE | NOCYCLE>;
ALTER SEQUENCE seq_cycle NOCYCLE;

配置序列以缓存值

ALTER SEQUENCE <sequence_name> CACHE <integer> | NOCACHE;
ALTER SEQUENCE seq_cache NOCACHE;

设置是否按顺序返回值

ALTER SEQUENCE <sequence_name> <ORDER | NOORDER>;
ALTER SEQUENCE seq_order NOORDER;
ALTER SEQUENCE seq_order;

从字符串生成查询

有时需要从字符串创建查询

PROCEDURE oracle_runtime_query_pcd ISTYPE ref_cursor IS REF CURSOR;l_cursor        ref_cursor;v_query         varchar2(5000);v_name          varchar2(64);
BEGINv_query := 'SELECT name FROM employee WHERE employee_id=5';OPEN l_cursor FOR v_query;LOOPFETCH l_cursor INTO v_name;EXIT WHEN l_cursor%NOTFOUND;END LOOP;CLOSE l_cursor;
END;

这是一个如何完成动态查询的非常简单的示例

字符串操作

length( string1 );

SELECT length('hello world') FROM dual;

这将返回 11,因为参数由 11 个字符组成,包括空格

SELECT lengthb('hello world') FROM dual;
SELECT lengthc('hello world') FROM dual;
SELECT length2('hello world') FROM dual;
SELECT length4('hello world') FROM dual;

这些也返回 11,因为调用的函数是等价的

Instr

Instr(在字符串中)返回一个整数,该整数指定字符串中子字符串的位置。程序员可以指定他们想要检测的字符串的外观以及起始位置。不成功的搜索返回 0

instr( string1, string2, [ start_position ], [ nth_appearance ] )

instr( 'oracle pl/sql cheatsheet', '/');

这将返回 10,因为第一次出现的 / 是第十个字符

instr( 'oracle pl/sql cheatsheet', 'e', 1, 2);

这将返回 17,因为第二次出现的 e 是第 17 个字符

instr( 'oracle pl/sql cheatsheet', '/', 12, 1);

这将返回 0,因为第一次出现的 / 在起点之前,即第 12 个字符

Replace

replace(string1, string_to_replace, [ replacement_string ] );replace('i am here','am','am not');

这返回 i am not here

Substr

SELECT substr( 'oracle pl/sql cheatsheet', 8, 6) FROM dual;

返回 pl/sql,因为 pl/sql 中的 p 在字符串中的第 8 个位置(从 oracle 中的 o 处的 1 开始计算)

SELECT substr( 'oracle pl/sql cheatsheet', 15) FROM dual;

返回 cheatsheet,因为 c 在字符串中的第 15 个位置,t是字符串中的最后一个字符。

SELECT substr('oracle pl/sql cheatsheet', -10, 5) FROM dual;

返回 cheat,因为 c 是字符串中的第 10 个字符,从字符串末尾以 t 作为位置 1 开始计算。

Trim

这些函数可用于从字符串中过滤不需要的字符。默认情况下,它们会删除空格,但也可以指定要删除的字符集

trim ( [ leading | trailing | both ] [ trim-char ] from string-to-be-trimmed );
trim ('   删除两侧的空格     ');

这将返回“删除两侧的空格

ltrim ( string-to-be-trimmed [, trimming-char-set ] );
ltrim ('   删除左侧的空格     ');

这将返回“删除左侧的空格      ”

rtrim ( string-to-be-trimmed [, trimming-char-set ] );
rtrim ('   删除右侧的空格     ');

这将返回“      删除右侧的空格

DDL SQL

创建表

创建表的语法

CREATE TABLE [table name]( [column name] [datatype], ... );

示例:

 CREATE TABLE employee(id int, name varchar(20));

添加列

添加列的语法

ALTER TABLE [table name]ADD ( [column name] [datatype], ... );

示例:

ALTER TABLE employeeADD (id int)

修改列

修改列的语法

ALTER TABLE [table name]MODIFY ( [column name] [new datatype]);

ALTER 表语法和示例:

ALTER TABLE employeeMODIFY( sickHours s float );

删除列

删除列的语法

ALTER TABLE [table name]DROP COLUMN [column name];

示例:

ALTER TABLE employeeDROP COLUMN vacationPay;

约束类型和代码

类型代码类型描述作用于级别
C检查表Column
O在视图上只读Object
P首要的关键Object
R参考 AKA 外键Column
U唯一键Column
V检查视图上的选项Object

显示约束

以下语句显示了系统中的所有约束:

SELECTtable_name,constraint_name,constraint_type
FROM user_constraints;

选择参照约束

以下语句显示了源和目标表/列对的所有引用约束(外键):

SELECTc_list.CONSTRAINT_NAME as NAME,c_src.TABLE_NAME as SRC_TABLE,c_src.COLUMN_NAME as SRC_COLUMN,c_dest.TABLE_NAME as DEST_TABLE,c_dest.COLUMN_NAME as DEST_COLUMN
FROM ALL_CONSTRAINTS c_list,ALL_CONS_COLUMNS c_src,ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAMEAND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAMEAND c_list.CONSTRAINT_TYPE = 'R'

对表设置约束

使用 CREATE TABLE 语句创建检查约束的语法是:

CREATE TABLE table_name
(column1 datatype null/not null,column2 datatype null/not null,...CONSTRAINT constraint_nameCHECK (column_name condition) [DISABLE]
);

例如:

CREATE TABLE suppliers
(supplier_id  numeric(4),supplier_name  varchar2(50),CONSTRAINT check_supplier_idCHECK (supplier_id BETWEEN 100 and 9999)
);

表上的唯一索引

使用 CREATE TABLE 语句创建唯一约束的语法是:

CREATE TABLE table_name
(column1 datatype null/not null,column2 datatype null/not null,...CONSTRAINT constraint_name UNIQUE (column1, column2, column_n)
);

例如:

CREATE TABLE customer
(id   integer not null,name varchar2(20),CONSTRAINT customer_id_constraintUNIQUE (id)
);

添加唯一约束

唯一约束的语法是:

ALTER TABLE [table name]ADD CONSTRAINT [constraint name] UNIQUE([column name]) USING INDEX [index name];

例如:

ALTER TABLE employeeADD CONSTRAINT uniqueEmployeeId UNIQUE(employeeId) USING INDEX ourcompanyIndx_tbs;

添加外部约束

foregin 约束的语法是:

ALTER TABLE [table name]ADD CONSTRAINT [constraint name] FOREIGN KEY (column,...) REFERENCES table [(column,...)] [ON DELETE {CASCADE | SET NULL}];

例如:

ALTER TABLE employeeADD CONSTRAINT fk_departament FOREIGN KEY (departmentId) REFERENCES departments(Id);

删除约束

删除(删除)约束的语法是:

ALTER TABLE [table name]DROP CONSTRAINT [constraint name];

例如:

ALTER TABLE employeeDROP CONSTRAINT uniqueEmployeeId;

INDEXES

创建索引

创建索引的语法是:

CREATE [UNIQUE] INDEX index_nameON table_name (column1,column2,. column_n)[ COMPUTE STATISTICS ];
  • UNIQUE 表示索引列中值的组合必须是唯一的
  • COMPUTE STATISTICS 告诉 Oracle 在创建索引期间收集统计信息。然后优化器使用这些统计信息来选择执行语句时的最佳执行计划。例如:
CREATE INDEX customer_idxON customer (customer_name);

在此示例中,已在名为 customer_idx 的客户表上创建了一个索引。它仅包含 customer_name 字段

下面创建一个包含多个字段的索引:

CREATE INDEX customer_idxON supplier (customer_name, country);

以下内容在创建索引时收集统计信息:

CREATE INDEX customer_idxON supplier (customer_name, country)COMPUTE STATISTICS;

创建基于函数的索引

Oracle 中,您不仅限于在列上创建索引。您可以创建基于函数的索引

创建基于函数的索引的语法是:

CREATE [UNIQUE] INDEX index_nameON table_name (function1, function2, . function_n)[ COMPUTE STATISTICS ];

例如:

CREATE INDEX customer_idxON customer (UPPER(customer_name));
-- 已创建基于 customer_name 字段的大写评估的索引

为确保 Oracle 优化器在执行 SQL 语句时使用此索引,请确保 UPPER(customer_name) 的计算结果不为 NULL 值。 为确保这一点,请将 UPPER(customer_name) IS NOT NULL 添加到 WHERE 子句中,如下所示:

SELECT customer_id, customer_name, UPPER(customer_name)
FROM customer
WHERE UPPER(customer_name) IS NOT NULL
ORDER BY UPPER(customer_name);

重命名索引

重命名索引的语法是:

ALTER INDEX index_nameRENAME TO new_index_name;

例如:

ALTER INDEX customer_idRENAME TO new_customer_id;

在此示例中,customer_id 重命名为 new_customer_id

收集索引的统计信息

如果您需要在索引首次创建后收集统计信息或者您想要更新统计信息,您总是可以使用 ALTER INDEX 命令来收集统计信息。 您收集统计信息以便 oracle 可以有效地使用索引。 这将重新计算表大小、行数、块数、段数并更新字典表,以便 oracle 在选择执行计划时可以有效地使用数据。

收集索引统计信息的语法是:

ALTER INDEX index_nameREBUILD COMPUTE STATISTICS;

例如:

ALTER INDEX customer_idxREBUILD COMPUTE STATISTICS;

在此示例中,为名为 customer_idx 的索引收集统计信息

删除索引

删除索引的语法是:

DROP INDEX index_name;

例如:

DROP INDEX customer_idx;

在此示例中,删除了 customer_idx

DBA 相关

创建用户

创建用户的语法是:

CREATE USER usernameIDENTIFIED BY password;

例如:

CREATE USER brian IDENTIFIED BY brianpass;

授予特权

授予权限的语法是:

GRANT privilege TO user;

例如:

GRANT dba TO brian;

更改密码

更改用户密码的语法是:

ALTER USER username IDENTIFIED BY password;

例如:

ALTER USER brian IDENTIFIED BY brianpassword;

查看表空间的名称以及大小

SELECT t.table_name,ROUND(SUM(bytes / (1024 * 1024)), 0) AS ts_size
FROM dba_tablespaces t,dba_data_files d
WHERE t.table_name = d.table_name
GROUP BY t.table_name;

查看还没提交的事务

select * from v$locked_object;
select * from v$transaction;

查看数据库库对象

SELECT owner, object_type, status, COUNT(*) AS count#
FROM all_objects
GROUP BY owner, object_type, status;

查看数据库的版本

SELECT version
FROM Product_component_version
WHERE SUBSTR(PRODUCT, 1, 6) = 'Oracle';

查看数据库的创建日期和归档方式

SELECT created, Log_Mode, Log_Mode 
FROM v$Database;

查看控制文件

select name from v$controlfile;

查看日志文件

select member from v$logfile;

查看表空间的使用情況

SELECT SUM(bytes)/(1024*1024) AS free_space,tablespace_name
FROM dba_free_space
GROUP BY tablespace_name;

捕捉运行很久的SOL

COLUMN username FORMAT A12
COLUMN opname FORMAT A16
COLUMN progress FORMAT A8SELECT username,sid,opname,ROUND(sofar * 100 / totalwork, 0) || '%' AS progress,time_remaining,sql_text
FROM v$session_longops, v$sql
WHERE time_remaining <> 0AND sql_address = addressAND sql_hash_value = hash_value;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38489.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯】12111暖气冰场(多源BFS 或者 二分)

思路 这题可以用BFS做&#xff0c;也可以用二分来做。 用二分这里只提供一个思路&#xff1a;对时间来二分查找&#xff0c;check函数就是检查在特定的时间 t 0 t_0 t0​内每一个暖气炉的传播距离能否覆盖所有格子。 用BFS做&#xff1a; 由几个点开始向外扩散&#xff0c;知道…

【云上CPU玩转AIGC】——腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大三学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

【JavaEE】网络编程socket

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

超硬核区块链算法仿真:联盟链PBFT多线程仿真实现 :c语言完全详解版

1 22年年底想用gpt做出一个pbft的算法仿真&#xff0c;到了25年终于可以结合gpt grok perplexcity deepseek等实现了&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 1.1简化版 // 定义 Windows 版本&#xff0c;确保条件变量相关函数可用 #define _WIN32_W…

【并发编程】聊聊forkJoin的原理和最佳实践

对于线程池来说&#xff0c;其实本质就是一个生产者消费者的模式&#xff0c;而通过竞争的方式从队列中获取任务执行。本质上其实就是按照任务级别进行处理&#xff0c;但是对于一些可以分而治之的任务&#xff0c;传统的线程池没有办法分治处理。一是无法对大任务进行拆分&…

【数据预测】基于遗传算法GA的LSTM光伏功率预测 GA-LSTM光伏功率预测【Matlab代码#91】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. 遗传算法GA2. 长短期记忆网络LSTM3. 基于GA-LSTM的光伏功率预测4. 部分代码展示5. 运行结果展示6. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】 …

Java 填充 PDF 模版

制作 PDF 模版 安装 OnlyOffice 从 OnlyOffice 官网下载 OnlyOffice Desktop&#xff0c;安装过程很简单&#xff0c;一路下一步即可。用 OnlyOffice 制作 PDF 模版&#xff08;表单&#xff09; 使用 OnlyOffice 表单设计器&#xff0c;制作表单&#xff0c;如下图 注意命名…

使用安装 Kettle 教程 Pentoho 10.2.0.0-222 安装 连接mysql

流程 准备下载安装测试链接常见问题 准备 需要提前安装好 JDK 配置好环境变量 &#xff08;教程看前文&#xff09; 安装好mysql&#xff08;教程看前文&#xff09; 下载好pentaho链接数据库驱动 下载pentaho安装包 https://pentaho.com/wp-content/uploads/2024/04/three-s…

MySQL表的增加、查询、修改、删除的基础操作

MySQL表的增加、查询、修改、删除的基础操作 一、CRUD二、新增数据 insert2.1 单行数据 全列插入2.2 多行数据 指定列插入 三、查询 select3.1 全列查询&#xff08;select *&#xff09;3.2 指定列查询3.3 表达式查询3.4 去重&#xff1a;distinct3.5 带有排序的查询&#x…

Windows Server 2025 使用 IIS 搭建 ASP.NET 3.5 网站

开启远程桌面 参考文章Windows server开启远程桌面教程打开服务管理器。ECS 配置安全组&#xff0c;开启 3389Telnet 验证网络联通性 telnet x.x.x.x 338安装 Windows App&#xff0c;登录验证 安装 ASP.NET 3.5 1.参考文章Windows Server 2012安装 .NET Framework 3.5和 Wi…

Linux上位机开发实战(能用的开发板计算资源)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 大家所能想到的嵌入式上位机开发&#xff0c;如果是linux&#xff0c;同时涉及到嵌入式的话&#xff0c;一般都会认为是把pc linux的软件port到板子…

STM32中断

中断的基本概念 中断具体定义&#xff1a;操作系统课程里有清晰的阐述。 STM32中断&#xff1a;中断来了&#xff0c;主程序都得立即暂停&#xff0c;程序由硬件电路自动跳转到中断程序中。中断执行前&#xff0c;进行现场保护&#xff1b;中断执行后&#xff0c;会再还原现场…

maven在windows系统上的详细安装和配置

下载 Maven 安装包 去官网下载&#xff0c;下载链接 下载到指定位置&#xff0c;解压&#xff0c;之后在该目录下新建一个文件夹 【repository】&#xff0c;作为本地仓库 Maven 的配置 配置本地仓库 ① 打开上一步新建的目录 repository&#xff0c; 复制路径 ② 打开 con…

如何为AI开发选择合适的服务器?

选择适合的服务器可以为您的AI项目带来更高的效率&#xff0c;确保最佳性能、可扩展性和可靠性&#xff0c;从而实现无缝的开发与部署。 选择适合的AI开发服务器可能并不容易。您需要一台能够处理大量计算和大型数据集的服务器&#xff0c;同时它还需要符合您的预算并易于管理…

OpenCV中的矩阵操作

OpenCV中的矩阵操作主要围绕Mat类展开&#xff0c;涵盖创建、访问、运算及变换等。 1. 创建矩阵 ‌零矩阵/单位矩阵‌&#xff1a; Mat zeros Mat::zeros(3, 3, CV_32F); // 3x3浮点零矩阵 Mat eye Mat::eye(3, 3, CV_32F); // 3x3单位矩阵 自定义初始化‌&#xff1a…

【C++进阶】函数:深度解析 C++ 函数的 12 大进化特性

目录 一、函数基础 1.1 函数定义与声明 1.2 函数调用 1.3 引用参数 二、函数重载&#xff1a;同名函数的「多态魔法」&#xff08;C 特有&#xff09; 2.1 基础实现 2.2 重载决议流程图 2.3 与 C 语言的本质区别 2.4 实战陷阱 三、默认参数&#xff1a;接口的「弹性设…

spring boot 登入权限RBAC模式

首先准备好5张表 user_info表&#xff0c;用户的信息表 role表&#xff0c;角色表&#xff08;比如超级管理员、管理员、审核员、采购......&#xff09; 创建user_role表&#xff0c;user_info表&#xff0c;role表的中间表 注意了&#xff0c;role_id和user_id是 u…

C#里使用libxl来对列或行进行分组显示

有时候由于EXCEL里的行数很多, 需要把某些行进行隐藏起来,那么就需要使用到行或列进行隐藏的操作。 这时候需要使用函数GroupCols和GroupRows来对这些列或行进行分组。 分组不能出现交叉的情况,否则会抛出异常。 如下图所示: 可以使用下面的代码来输出上面的EXCEL: p…

LangChain 基础

一、LangChain 模块和体系 LangChain 是一个用于开发由大型语言模型&#xff08;LLMs&#xff09;驱动的应用程序的框架。 官方文档&#xff1a;https://python.langchain.com/docs/introduction/ LangChain 简化了LLM应用程序生命周期的每个阶段&#xff1a; 开发&#xf…

IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法

本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期&#xff1a;2025年3月22日 作者&#xff1a;任聪聪 现象描述&#xff1a; 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…