Oracle 数据库/SQL
外观
选择、投影、连接
- 选择所有列
Select * from table_name;
- 选择特定列
Select column1, column2 from tables_name;
- 使用列标题默认值
- 使用算术运算符
Select 12 salary+100 from emp --sell value is 2. Result: 12 * cell's value + 100 --i.e. 12 * 2 + 100= 124
- 了解运算符优先级
- 学习 DESCRIBE 命令来显示表结构
Type- DESCRIBE table_name; *NOTE: Your Oracle user and/or schema must have permissions/privaliages or be within the schema to describe the table. You can use the data_dictionary views to get the table info.
- 编写包含 WHERE 子句的查询以限制检索的输出
- 列出 WHERE 子句中使用的比较运算符和逻辑运算符
- 描述比较运算符和逻辑运算符的优先级规则
- 在 WHERE 子句中使用字符字符串文字
- 编写包含 ORDER BY 子句的查询以对 SELECT 语句的输出进行排序
- 以降序和升序排序输出
按位与运算符用于在运行时获取输入(例如:-&employeename),如果按位与使用两次,即 &&,则它将获取单个按位与运算符的输入,并用于在运行时向查询提供数据。
- 描述单行函数和多行函数之间的区别
- 使用 SELECT 和 WHERE 子句中的字符函数操纵字符串
- 使用 ROUND、TRUNC 和 MOD 函数操纵数字
- 对日期数据执行算术运算
- 使用日期函数操纵日期
隐式数据类型转换
当 Oracle 尝试将不匹配函数定义的参数的值转换为所需数据类型时,就会发生隐式转换。
显式数据类型转换 显式转换发生在调用 TO_CHAR 等函数以更改值的类型时。
- 嵌套多个函数
- 对数据应用 NVL、NULLIF 和 COALESCE 函数
- 在 SELECT 语句中使用条件 IF THEN ELSE 逻辑
- 使用自连接将表连接到自身
一位维基教科书用户建议将本书或章节与Oracle 数据库/表合并。 请在讨论页面上讨论是否应该进行合并。 |
在数据库中插入数据是在 Oracle 中通过“insert”命令完成的。
语法
INSERT INTO [table name][column1,column2,.....] values(value1,value2,....);
示例
insert into employee values(1,'Rahul','Manager');
通过上述查询,员工表将通过 empid:-1、empname:-'Rahul' 和 empdesignation:-'Manager' 进行填充。
DELETE client1 WHERE ID = 2;
要更新表中的行,请写入
update [table name] set [column name] = [your value];
它将使用给定值在选定字段中更新表中存在的所有行。
我们还可以将查询添加到此命令以使其真正有用,例如,
update [table name] set [column name] = [value] where [column name]>=[value];
您可以根据需要在 where 子句之后添加您的查询。
示例
UPDATE client1 SET address = 'the middle of nowhere' WHERE id = 1;
本节是一个存根。 您可以通过扩展它来帮助维基教科书。 |
本节是一个存根。 您可以通过扩展它来帮助维基教科书。 |
- 使用 COMMIT 和 ROLLBACK 语句保存和放弃更改
- 解释读一致性
"Create table" 命令用于在数据库中创建表。
语法
create table employee(empid number,empname varchar2(20),empdesignation(varchar2(20)));
以上查询将创建一个名为 employee 的表,该表包含列 empid
、empname
、empdesignation
,以及它们各自的数据类型。
本节是一个存根。 您可以通过扩展它来帮助维基教科书。 |
SELECT * FROM TAB
层次查询允许您遍历自引用表并显示层次结构。例如,员工表包含员工的经理 ID。
列出所有员工的整个层次结构
SELECT LPAD(' ', 4*(level-1))||last_name "Last Name", salary, department_id
FROM hr.employees
CONNECT BY PRIOR employee_id = manager_id
START WITH manager_id is null
ORDER SIBLINGS BY last_name;
列出所有“Kochhar”经理下属的员工
SELECT LPAD(' ', 4*(level-1))||last_name "Last Name",
salary,
department_id,
CONNECT_BY_ISLEAF
FROM hr.employees
CONNECT BY PRIOR employee_id = manager_id
START WITH last_name = 'Kochhar'
ORDER SIBLINGS BY last_name;
列出所有“Lorentz”汇报的经理
SELECT LPAD(' ', 4*(level-1))||last_name "Last Name", salary, department_id,
SYS_CONNECT_BY_PATH(last_name, '/') "Path", CONNECT_BY_ISLEAF
FROM hr.employees
CONNECT BY employee_id = PRIOR manager_id
START WITH last_name = 'Lorentz'
ORDER SIBLINGS BY last_name;
- 伪列 LEVEL -> 根 = 1,下一级 = 2,3,4,5...等等
- SYS_CONNECT_BY_PATH(col, '/') 显示完整路径,第二个参数是分隔符 (9i)
- CONNECT_BY_ROOT(col) 返回当前层次结构中根节点的值 (10g)
- 伪列 CONNECT_BY_ISLEAF 如果返回值位于层次结构的最后一个节点(即叶子节点)上,则返回 1 (10g)
- order SIBLINGS 通过重新排序输出的顺序并保留层次关系 (10g)
- connect by NOCYCLE 之前子节点 = 父节点
- NOCYCLE 表示当子节点引用回根节点时,停止遍历层次结构。 (10g)
- 伪列 CONNECT_BY_ISCYCLE 如果当前行引用父节点,则评估为“1”。 (10g)
类别 | 表达式 | 描述 |
---|---|---|
锚定字符 | ^ | 行首 |
-$ | 行尾 | |
量词字符 | * | 匹配 0 次或多次 |
+ | 匹配 1 次或多次 | |
? | 匹配 0 次或 1 次 | |
{m} | 精确匹配 m 次 | |
{m,} | 至少匹配 m 次 | |
{m, n} | 至少匹配 m 次,但最多不超过 n 次 | |
\n | 使前一个表达式重复 n 次 | |
备选和分组 | 分隔备选项,通常与分组运算符 () 一起使用 | |
( ) | 将子表达式分组为一个单元,用于备选项、量词或反向引用(参见“反向引用”部分) | |
[char] | 表示一个字符列表;字符列表中的大多数元字符被理解为字面量,但字符类、^ 和 - 元字符除外 | |
POSIX 字符 | [:alnum:] | 字母数字字符 |
[:alpha:] | 字母字符 | |
[:blank:] | 空格字符 | |
[:cntrl:] | 控制字符(不可打印) | |
[:digit:] | 数字 | |
[:graph:] | 任何 [:punct:], [:upper:], [:lower:] 和 [:digit:] 字符 | |
[:lower:] | 小写字母字符 | |
[:print:] | 可打印字符 | |
[:punct:] | 标点符号字符 | |
[:space:] | 空格字符(不可打印),如回车符、换行符、垂直制表符和换页符 | |
[:upper:] | 大写字母字符 | |
[:xdigit:] | 十六进制字符 | |
等价类 | = = | 嵌入方括号中的等价类,匹配一个基本字母及其所有重音版本。例如,等价类 '[=a=]' 匹配 ä 和 â。 |
匹配选项 | c | 区分大小写匹配 |
i | 不区分大小写匹配 | |
m | 将源字符串视为多行,激活锚定字符 | |
n | 允许句点 (.) 匹配任何换行符 |