From 76c84362ba2a3dc919a397e4ff24882e937cdb2e Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 22 Nov 2022 19:50:50 +0800 Subject: [PATCH] feat: add oracle.md cheatsheet. #63 --- README.md | 4 +- docs/oracle.md | 338 ++++++++++++++++++++++++++++++++++++++ scripts/assets/oracle.svg | 3 + 3 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 docs/oracle.md create mode 100644 scripts/assets/oracle.svg diff --git a/README.md b/README.md index 55dea98..eaac239 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,9 @@ Quick Reference [Lua](./docs/lua.md) [NestJS](./docs/nestjs.md) [MATLAB](./docs/matlab.md) -[Vue 3](./docs/vue.md) +[Oracle](./docs/oracle.md) [Pytorch](./docs/pytorch.md) +[Vue 3](./docs/vue.md) ## 编程 @@ -56,6 +57,7 @@ Quick Reference [Markdown](./docs/markdown.md) [MySQL](./docs/mysql.md) [MATLAB](./docs/matlab.md) +[Oracle](./docs/oracle.md) [PHP](./docs/php.md) [Python](./docs/python.md) [PostgreSQL](./docs/postgres.md) diff --git a/docs/oracle.md b/docs/oracle.md new file mode 100644 index 0000000..1c5dd83 --- /dev/null +++ b/docs/oracle.md @@ -0,0 +1,338 @@ +Oracle 备忘清单 +=== + +入门 +--- + + +### SELECT 语句 + +```sql +SELECT * FROM beverages WHERE field1 = 'Kona' AND field2 = 'coffee' AND field3 = 122; +``` + + +### SELECT INTO 语句 + +```sql +SELECT name,address,phone_number INTO v_employee_name,v_employee_address,v_employee_phone_number FROM employee WHERE employee_id = 6; +``` + + +### INSERT 语句 + + +使用 VALUES 关键字插入 + +```sql +INSERT INTO table_name VALUES ('Value1', 'Value2', ... ); +INSERT INTO table_name(Column1, Column2, ... ) VALUES ( 'Value1', 'Value2', ... ); +``` + + +使用 SELECT 语句插入 + +```sql +INSERT INTO table_name(SELECT Value1, Value2, ... from table_name ); +INSERT INTO table_name(Column1, Column2, ... ) ( SELECT Value1, Value2, ... from table_name ); +``` + + +### DELETE 语句 + +```sql +DELETE FROM table_name WHERE some_column=some_value +DELETE FROM customer WHERE sold = 0; +``` + +### UPDATE 语句 + +```sql +-- 更新该表的整个列,设置 `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 + +序列的语法是 + +```sql +CREATE SEQUENCE sequence_name + MINVALUE value + MAXVALUE value + START WITH value + INCREMENT BY value + CACHE value; +``` + +例如 + +```sql +CREATE SEQUENCE supplier_seq + MINVALUE 1 + MAXVALUE 999999999999999999999999999 + START WITH 1 + INCREMENT BY 1 + CACHE 20; +``` + +### ALTER SEQUENCE + + +将序列增加一定数量 + +```sql +ALTER SEQUENCE INCREMENT BY ; +ALTER SEQUENCE seq_inc_by_ten INCREMENT BY 10; +``` + +改变序列的最大值 + +```sql +ALTER SEQUENCE MAXVALUE ; +ALTER SEQUENCE seq_maxval MAXVALUE 10; +``` + +设置序列循环或不循环 + +```sql +ALTER SEQUENCE ; +ALTER SEQUENCE seq_cycle NOCYCLE; +``` + +配置序列以缓存值 + +```sql +ALTER SEQUENCE CACHE | NOCACHE; +ALTER SEQUENCE seq_cache NOCACHE; +``` + +设置是否按顺序返回值 + +```sql +ALTER SEQUENCE ; +ALTER SEQUENCE seq_order NOORDER; +ALTER SEQUENCE seq_order; +``` + +### 从字符串生成查询 + + +有时需要从字符串创建查询 + +```sql +PROCEDURE oracle_runtime_query_pcd IS + TYPE ref_cursor IS REF CURSOR; + l_cursor ref_cursor; + + v_query varchar2(5000); + v_name varchar2(64); +BEGIN + v_query := 'SELECT name FROM employee WHERE employee_id=5'; + OPEN l_cursor FOR v_query; + LOOP + FETCH l_cursor INTO v_name; + EXIT WHEN l_cursor%NOTFOUND; + END LOOP; + CLOSE l_cursor; +END; +``` + + +这是一个如何完成动态查询的非常简单的示例 + +### 字符串操作 + +```sql +length( string1 ); +``` + +--- + +```sql +SELECT length('hello world') FROM dual; +``` + +这将返回 11,因为参数由 11 个字符组成,包括空格 + +```sql +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` + +```sql +instr( string1, string2, [ start_position ], [ nth_appearance ] ) +``` + + +--- + +```sql +instr( 'oracle pl/sql cheatsheet', '/'); +``` + +这将返回 `10`,因为第一次出现的 `/` 是第十个字符 + +```sql +instr( 'oracle pl/sql cheatsheet', 'e', 1, 2); +``` + + +这将返回 `17`,因为第二次出现的 `e` 是第 `17` 个字符 + +```sql +instr( 'oracle pl/sql cheatsheet', '/', 12, 1); +``` + + +这将返回 `0`,因为第一次出现的 `/` 在起点之前,即第 `12` 个字符 + +### Replace + +```sql +replace(string1, string_to_replace, [ replacement_string ] ); + +replace('i am here','am','am not'); +``` + + +这返回 `i am not here` + +### Substr + +```sql +SELECT substr( 'oracle pl/sql cheatsheet', 8, 6) FROM dual; +``` + + +返回 `pl/sql`,因为 `pl/sql` 中的 `p` 在字符串中的第 `8` 个位置(从 `oracle` 中的 `o` 处的 `1` 开始计算) + +```sql +SELECT substr( 'oracle pl/sql cheatsheet', 15) FROM dual; +``` + + +返回 `cheatsheet`,因为 `c` 在字符串中的第 `15` 个位置,`t`是字符串中的最后一个字符。 + +```sql +SELECT substr('oracle pl/sql cheatsheet', -10, 5) FROM dual; +``` + + +返回 `cheat`,因为 `c` 是字符串中的第 `10` 个字符,从字符串末尾以 `t` 作为位置 `1` 开始计算。 + +### Trim + +这些函数可用于从字符串中过滤不需要的字符。默认情况下,它们会删除空格,但也可以指定要删除的字符集 + +```sql +trim ( [ leading | trailing | both ] [ trim-char ] from string-to-be-trimmed ); +trim (' 删除两侧的空格 '); +``` + + +这将返回“`删除两侧的空格`” + +```sql +ltrim ( string-to-be-trimmed [, trimming-char-set ] ); +ltrim (' 删除左侧的空格 '); +``` + + +这将返回“`删除左侧的空格`      ” + +```sql +rtrim ( string-to-be-trimmed [, trimming-char-set ] ); +rtrim (' 删除右侧的空格 '); +``` + + +这将返回“      `删除右侧的空格`” + +DDL SQL +--- + +### 创建表 + +创建表的语法 + +```sql +CREATE TABLE [table name] + ( [column name] [datatype], ... ); +``` + +示例: + +```sql + CREATE TABLE employee + (id int, name varchar(20)); +``` + +### 添加列 + +添加列的语法 + +```sql +ALTER TABLE [table name] + ADD ( [column name] [datatype], ... ); +``` + +示例: + +```sql +ALTER TABLE employee + ADD (id int) +``` + +### 修改列 + +修改列的语法 + +```sql +ALTER TABLE [table name] + MODIFY ( [column name] [new datatype]); +``` + +`ALTER` 表语法和示例: + +```sql +ALTER TABLE employee + MODIFY( sickHours s float ); +``` + +### 删除列 + +删除列的语法 + +```sql +ALTER TABLE [table name] + DROP COLUMN [column name]; +``` + +示例: + +```sql +ALTER TABLE employee + DROP COLUMN vacationPay; +``` + +另见 +--- + +- [Oracle Database/SQL Cheatsheet](https://en.wikibooks.org/wiki/Oracle_Database/SQL_Cheatsheet) _(wikibooks.org)_ diff --git a/scripts/assets/oracle.svg b/scripts/assets/oracle.svg new file mode 100644 index 0000000..e5512a8 --- /dev/null +++ b/scripts/assets/oracle.svg @@ -0,0 +1,3 @@ + + +