Oracle基础知识

目录

1.别名的使用

2.AND的优先级高于OR

3.where后面可以接别名,order by后面不可以

4.Oracle中SQL的执行顺序(重点)

5.dual万用表

6.是否区分大小写

7.Oracle常用数据类型

8.Oracle常用函数

(1)length字符、lengthb字节和cast强制类型转换

(2)数据类型转换

to_date():将字符串转换为日期类型 

to_char():将日期、时间戳或数字转换为字符串格式

 to_number():将字符串转为数字类型

9.NOT BETWEEN  AND 反向区间

10.NOT IN

11.LIKE模糊查询

12.空值NULL

(1)空值的过滤

(2)空值的排序

(3)空值运算

(4)空值转换NVL与NVL2


1.别名的使用

 别名--数字、字母、下划线组成,不能数字和符号打头 

必须以字母开头;

长度不能超过 30 个字符;

只能包含字母(A-Z、a-z)、数字(0-9)、下划线(_)和美元符号($);

不能使用 Oracle 的保留字(比如:SELECT、FROM、WHERE……);

不能和同一个用户下的其他对象重名;

中文别名,as可以省略

表的别名不能使用as

如果想使用一些特殊字符或不符合上述规则的名称作为别名,可以将别名用双引号括起来。

select ename 员工姓名, sal as "员工薪资", deptno "部门编号"from empwhere job = 'SALESMAN';

2.AND的优先级高于OR

使用括号明确优先级:

SELECT * FROM employees
WHERE (dept_id = 10 OR dept_id = 20) AND salary > 5000;

3.where后面可以接别名,order by后面不可以

具体原因是根据Oracle中SQL的执行顺序来的,详见下面 

4.Oracle中SQL的执行顺序(重点)

  1. FROM:首先确定数据来源,包括表、视图等,并处理任何连接(JOIN)操作。
  2. WHERE:应用过滤条件来筛选行。
  3. GROUP BY:将结果集按指定列分组。
  4. HAVING:对分组后的结果进行条件过滤。
  5. SELECT:选择需要显示的列或表达式,并执行任何计算或函数调用。
  6. ORDER BY:根据指定的列对最终结果进行排序。
  7. OFFSET-FETCH/ROWNUM:限制返回的行数(如分页功能)。注意,OFFSET-FETCH是较新的语法,而ROWNUM是Oracle特有的用于限制结果集大小的方法。

5.dual万用表

dual/万能表/伪表

Oracle 中dual表的存在主要是为了满足语法要求和提供一些便利。

dual表是 Oracle 与数据字典一起自动创建的一个单行单列的虚拟表,它只有一列

虚拟的,不包含任何数据

select 7+9 from dual;select sysdate from dual;

6.是否区分大小写

字符串里面要区分大小写

不区分大小写的:字段名、表名

select * from emp where ename='SCOTT';

select * from emp where ename='scott';

 

7.Oracle常用数据类型

数据类型类别数据类型描述示例/备注
数值类型NUMBER(p,s)

存储固定或浮动的数值,

p是精度(总位数),s是标度(小数点后的位数)。

NUMBER(5,2) 表示最多5位数字,其中2位在小数点之后。
字符串类型VARCHAR2(size)可变长度字符数据类型,size指最大字节长度,范围1到4000字节。

VARCHAR2(100) 最大存储100个字符。

NVARCHAR2(size)类似于VARCHAR2,但使用国家字符集,适用于多语言环境。NVARCHAR2(100) 使用国家字符集存储最多100个字符。
CHAR(size)固定长度字符数据类型,如果插入的字符串短于定义长度,则用空格填充至定义长度CHAR(100) 总是占用100个字符的空间。
NCHAR(size)类似于CHAR,但使用国家字符集。NCHAR(100) 使用国家字符集并总是占用100个字符的空间。
CLOB用于存储大型字符数据,最大可达128TB。适合存储大量的文本数据。
NCLOB用于存储使用国家字符集编码的大型字符数据。与CLOB类似,但支持国家字符集。
日期/时间类型DATE存储日期和时间信息,精确到秒。格式为:世纪、年、月、日、时、分、秒。常用于需要同时记录日期和时间的情况。
TIMESTAMP类似DATE,但提供了更高的时间精度(纳秒级),并可选包含时区信息。TIMESTAMP WITH TIME ZONE 或 TIMESTAMP WITH LOCAL TIME ZONE
大对象类型(LOB)BLOB用于存储二进制大对象,如图像、视频等,最大可达128TB。
BFILE用于存储指向存储在数据库外部文件系统中的大二进制文件的指针。
原始和ROWID类型RAW(size)用于存储二进制数据或字节字符串,必须指定最大长度,范围从1到2000字节。
LONG RAW类似于RAW,但可用于存储更大的二进制数据,最大可达2GB。(不推荐用于新应用)
ROWID存储行的地址,每个表中的每一行都有一个唯一的ROWID。
其他类型BOOLEAN仅在PL/SQL中可用,用于存储逻辑布尔值(TRUE, FALSE, NULL)。注意,在SQL语句中并不直接支持BOOLEAN类型。
XMLType用于存储XML数据,并提供了一系列针对XML的操作函数。

CHAR()和VARCHAR2()区别:

CHAR()始终占用定义的最大长度的存储空间,如果存储的数据长度小于这个长度,会使用空格填充剩余的空间

VARCHAR2()只占用实际字符数据的存储空间,可变长度

8.Oracle常用函数

(1)length字符、lengthb字节和cast强制类型转换

LENGTH(x):返回字符个数 11 'WH' '你好'         -- 文本信息的基本单位

LENGTHB(x):返回字节数                                 -- 数据存储的基本单位

CAST():转换数据类型                                       -- cast('123' as number)

-- 一个英文/数字占用1个字节
-- 一个中文占用2个字节
-- GBK:一个汉字占两个字节
-- utf-8:一个汉字占三个字节

select lengthb('你好') from dual; -- 4select length('你好') from dual; -- 2select length(cast(123 as char(4))) from dual; -- 4SELECT LENGTH(11),   -- 2LENGTH('HH'), -- 2LENGTHB('HH') -- 2
FROM DUAL;

(2)数据类型转换

--隐式转换 会造成索引失效

SELECT ename e1,ENAME E2--字段不区分大小写
FROM EMP
WHERE DEPTNO='10'; -- 错误写法,会导致索引失效
to_date():将字符串转换为日期类型 
TO_DATE(string, format_model)

注意:前后要保持一致。 

TO_DATE 括号里面 年月日必须完整 否则会给一个默认值

select to_date('20250520', 'YYYYMMDD') as a1,to_date('2025-05-20', 'YYYY-MM-DD') as a2from dual;

例题:查询 所有 1982年之前入职的员工薪资,输出:员工姓名   员工入职时间  员工薪资

select EMPNO, hiredate, SALfrom empwhere hiredate < to_date('1982-01-01', 'yyyy-MM-DD')

to_char():将日期、时间戳或数字转换为字符串格式

TO_CHAR 括号里面 可以只取年  只取月  只取日

select hiredate as a1,to_char(hiredate, 'YYYYMMDD') as a2,to_char(hiredate, 'YYYY-MM-DD') as a3,to_char(hiredate, 'MM/DD/YYYY') as a4,to_char(hiredate, 'YYYY') as a5,to_char(hiredate, 'MM/DD') as a6from emp;

使用to_char()查询1982年之前入职的员工: 

select * from emp where to_char(hiredate, 'yyyy') < 1982;select * from emp where to_number(to_char(hiredate, 'yyyy')) < 1982;

将系统当前时间 以年月日的形式展示,并且是日期类型:

-- 思路:
SELECT SYSDATE FROM DUAL;--查看默认时间样式SELECT TO_CHAR(SYSDATE,'YYYYMMDD') FROM DUAL;--提取年月日字符串类型SELECT TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD'),'YYYYMMDD')--转化为日期格式
FROM DUAL;
 to_number():将字符串转为数字类型

字符串靠左,数字类型靠右

总结:

日期 → 字符串类型 :TO_CHAR(日期字段,'输出格式')  'YYYYMMDD'/'YYYY'

字符串类型 → 日期 :TO_DATE(字符串,'输出格式') 'YYYYMMDD'/'YYYY-MM-DD'

字符串 → 数字类型 :TO_NUMBER(字符串)  可以不用 做隐式转换

--练习:查询入职时间在1981年的员工
--TO_CAHR
SELECT *
FROM EMP
WHERE TO_CHAR(HIREDATE, 'YYYY') = '1981';
--TO_DATE
SELECT *
FROM EMP
WHERE HIREDATE >= TO_DATE('19810101', 'YYYYMMDD')AND HIREDATE <= TO_DATE('19811231', 'YYYYMMDD');
--NUMBER--CAST
SELECT *
FROM EMP
WHERE CAST(TO_CHAR(HIREDATE, 'YYYY') AS NUMBER) = 1981;

9.NOT BETWEEN  AND 反向区间

NOT BETWEEN  AND 不包括最大值和最小值

BETWEEN  AND 是包括端点值的

SELECT *
FROM EMP
WHERE SAL NOT BETWEEN 1000 AND 2000;
--WHERE SAL>2000 OR SAL<1000;

10.NOT IN

示例:查询所有不是经理(MANAGER) 也不是文员(CLERK)的信息    --AND/OR

SELECT *
FROM EMP
WHERE JOB <> 'MANAGER'AND JOB <> 'CLERK';
--WHERE JOB NOT IN ('MANAGER','CLERK')

例题:找出 所有 10号部门 以及 20 号部门 以及 薪资 不在 2000 ~ 3000 这个区间的员工信息。输出:ENAME,SAL,DEPTNO                --IN(X,Y,Z…)

SELECT ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO IN (10, 20)AND SAL NOT BETWEEN 2000 AND 3000;

11.LIKE模糊查询

关键字是 LIKE (长的像...) 两个 通配符

 % :表示 0位以及以上任意字符   

 _  下划线表示  固定一位字符  

示例:查询EMP表中姓名包含S的员工信息

SELECT *
FROM EMP
--WHERE ENAME LIKE '%S%'
--WHERE ENAME LIKE '%S'
WHERE ENAME LIKE 'S%';

示例:找出 姓名是 S开头 且是五位长度的员工姓名 

SELECT ENAME
FROM EMP
WHERE ENAME LIKE 'S%'AND LENGTH(ENAME) = 5; --五位长度SELECT ENAME
FROM EMP
WHERE ENAME LIKE 'S____'; -- 4个_

查询出名字是5个字,并且第二个字母是C的

SELECT ENAME
FROM EMP
--WHERE ENAME LIKE '_C___'
WHERE LENGTH(ENAME) = 5  --5位长度
AND ENAME LIKE '_C%';

12.空值NULL

(1)空值的过滤

需要 用 IS NULL / IS NOT NULL来判断

示例:筛选 奖金为 空(没有奖金) 的员工信息

SELECT * FROM EMP WHERE COMM IS NULL;

(2)空值的排序

空值排序永远在最大

SELECT * FROM EMP ORDER BY COMM;

 

--NULLS LAST 最后
--NULLS FIRST 最前

SELECT * FROM EMP ORDER BY COMM NULLS first;

示例:找出所有没有奖金的员工,输出员工姓名  薪资  部门编号,奖金,并且按照薪资的降序排序

SELECT ENAME, SAL, DEPTNO, comm
FROM EMP
WHERE COMM IS NULLor comm = 0
--WHERE nvl(comm,0)=0
ORDER BY SAL DESC;

(3)空值运算

--- 空值不参与比较运算

--- 空值跟任何值 进行 加减乘除 都是得到 空(NULL)

(4)空值转换NVL与NVL2

NVL(expr1, expr2)

如果 expr1 为非 NULL,则返回 expr1;如果 expr1 为 NULL,则返回 expr2。

NVL2(表达式,不为空设值,为空设值)
SELECT NVL(comm, 0) FROM EMP;
SELECT NVL2(null, 1, 0) FROM dual;

示例:找出年收入高于3万的员工信息(年收入 = (薪资+奖金) * 12),并且输出员工姓名、员工薪资、奖金、年收入。按照年收入的倒序排序。

select ename, sal, nvl(comm, 0), 12 * (sal + nvl(comm, 0)) year_sal--年收入
from emp
where 12 * (sal + nvl(comm, 0)) > 30000--年收入高于3万
order by year_sal desc;

总结:

  • 空值:未知的 没有意思的数 不是0 也不是空格
  • NULL排序在最大
  • 对 null 做+-*/运算得到的还是 NULL
  • NULL 不参与比较

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

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

相关文章

React 播客专栏 Vol.13|样式不难搞,Tailwind CSS 与 SVG 实战入门

&#x1f44b; 欢迎回到《前端达人 React 播客书单》第 13 期&#xff08;正文内容为学习笔记摘要&#xff0c;音频内容是详细的解读&#xff0c;方便你理解&#xff09;&#xff0c;请点击下方收听 视频版&#xff1a; 文字版&#xff1a; 今天我们进入样式化的实战环节&…

matlab慕课学习3.5

于20250520 3.5 用while 语句实现循环结构 3.5.1while语句 多用于循环次数不确定的情况&#xff0c;循环次数确定的时候用for更为方便。 3.5.2break语句和continue语句 break用来跳出循环体&#xff0c;结束整个循环。 continue用来结束本次循环&#xff0c;接着执行下一次…

鸿蒙开发进阶:深入解析ArkTS语言特性与开发范式

一、前言 在鸿蒙生态开发体系中&#xff0c;DevEco Studio作为核心开发工具为开发者提供了高效的集成环境。而在掌握工具使用之后&#xff0c;深入理解鸿蒙开发语言成为构建高质量应用的关键。本文将聚焦于鸿蒙系统的核心开发语言——ArkTS&#xff0c;全面解析其起源演进、声…

P2P最佳网络类型

跑P2P最佳的网络类型是什么&#xff1f;全锥型NAT1网络它属于最宽松的网络环境&#xff0c;IP和端口都没有限制&#xff0c;穿透率在95%以上&#xff0c;P2P连接成功率极高。使用全锥型网络的节点收益比其他受限网络类型高出3倍左右&#xff0c;能显著提升PCDN的跑量和收益。 其…

电子制造企业智能制造升级:MES系统应用深度解析

在全球电子信息产业深度变革的2025年&#xff0c;我国电子信息制造业正经历着增长与转型的双重考验。据权威数据显示&#xff0c;2025年一季度行业增加值同比增长11.5%&#xff0c;但智能手机等消费电子产量同比下降1.1%&#xff0c;市场竞争白热化趋势显著。叠加关税政策调整、…

在nextjs项目当中使用wagmi连接MetaMask SDK

Wagmi 是一个为以太坊和 EVM 兼容链构建的 React Hooks 库,专为简化 Web3 应用开发而设计。它提供了一组强大且类型安全的工具,使开发者能够更方便地与钱包(如 MetaMask、WalletConnect 等)和智能合约进行交互。 Wagmi 的全称其实并不是一个传统意义上的缩写,它源自加密社…

DeepSeek+PiscTrace+YOLO:迅速实现Mask掩码抠图

在计算机视觉任务中&#xff0c;特别是在目标检测和实例分割中&#xff0c;我们常常需要从图像中提取特定的目标区域。这可以通过使用目标检测模型&#xff08;如 YOLOv8&#xff09;获得的检测框&#xff08;bounding boxes&#xff09;和掩码&#xff08;masks&#xff09;来…

超级维特根斯坦

AI智能体核心指令:语言智慧融合体 - 深度思辨、专业应用与协同创新大师 1. 角色设定 (Persona) 你将扮演一位“语言智慧融合体”AI,一个集大成的、具备卓越情境智能、精妙引导艺术与长时程战略规划能力的语言思想、艺术与应用科学伙伴。你的核心人格与方法论基于以下杰出贡…

CentOS Stream安装MinIO教程

1. 下载 MinIO 二进制文件 # 进入 MinIO 安装目录 sudo cd /usr/local/bin/# 下载 MinIO 二进制文件&#xff08;替换为最新版本链接&#xff09; wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod x minio2. 创建专用用户和存储目录 # 创建 minio 用户…

Android7 Input(八)App Input事件接收器InputEventReceiver

概述 上一个章节&#xff0c;我们讲解了App如何使用InputChannel通道与input系统服务建立通信的桥梁的过程&#xff0c;本章我们讲述App如何从input系统服务中获取上报的输入事件&#xff0c;也就是我们本章讲述的InputEventReceiver。 本文涉及的源码路径 frameworks/base/c…

VS2017编译librdkafka 2.1.0

VS2017编译librdkafka 2.1.0 本篇是 Windows系统编译Qt使用的kafka(librdkafka)系列中的其中一篇,编译librdkafka整体步骤大家可以参考: Windows系统编译Qt使用的kafka(librdkafka) 由于项目需要,使用kafka,故自己编译了一次,编译的过程,踩了太多的坑了,特写了本篇…

第 1 章:数字 I/O 与串口通信(GPIO UART)

本章目标: 掌握 GPIO 的硬件原理、寄存器配置与典型驱动框架 深入理解 UART/USART 的帧格式、波特率配置、中断与 DMA 驱动 通过实战案例,将 GPIO 与 UART 结合,实现 AT 命令式外设控制 章节结构 GPIO 概述与硬件原理 GPIO 驱动实现:寄存器、中断与去抖 UART/USART 原理与帧…

通义千问-langchain使用构建(三)

目录 序言docker 部署xinference1WSL环境docker安装2拉取镜像运行容器3使用的界面 本地跑chatchat1rag踩坑2使用的界面2.1配置个前置条件然后对话2.2rag对话 结论 序言 在前两天的基础上&#xff0c;将xinference调整为wsl环境&#xff0c;docker部署。 然后langchain chatcha…

winfrom中创建webapi

参照一下两篇 Winform窗体利用WebApi接口实现ModbusTCP数据服务_winform webapi-CSDN博客 C#.NET WebApi返回各种类型(图片/json数据/字符串)&#xff0c;.net图片转二进制流或byte - 冰封的心 - 博客园

文本分类任务Qwen3-0.6B与Bert:实验见解

文本分类任务Qwen3-0.6B与Bert&#xff1a;实验见解 前言 最近在知乎上刷到一个很有意思的提问Qwen3-0.6B这种小模型有什么实际意义和用途。查看了所有回答&#xff0c;有人提到小尺寸模型在边缘设备场景中的优势&#xff08;低延迟&#xff09;、也有人提出小模型只是为了开…

前端获取用户的公网 IP 地址

可以使用免费的免费的公共服务网站 一&#xff1a;https://www.ipify.org/ 获取 JSON 格式的 IP 地址 // 旧地址不好使 // https://api.ipify.org/?formatjson // 新地址 https://api64.ipify.org/?formatjson 二&#xff1a;https://ipinfo.io/ https://ipinfo.io/ 三&a…

12.vue整合springboot首页显示数据库表-实现按钮:【添加修改删除查询】

vue整合springboot首页显示数据库表&#xff1a;【添加修改删除查询】 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性。【帮帮志系…

LLM笔记(九)KV缓存(2)

文章目录 1. 背景与动机2. 不使用 KV Cache 的情形2.1 矩阵形式展开2.2 计算复杂度 3. 使用 KV Cache 的优化3.1 核心思想3.2 矩阵形式展开3.3 计算复杂度对比 4. 总结5. GPT-2 中 KV 缓存的实现分析5.1 缓存的数据结构与类型5.2 在注意力机制 (GPT2Attention) 中使用缓存5.3 缓…

2025年渗透测试面试题总结-各厂商二面试题02(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 各厂商二面试题02 模块六&#xff1a;基础技术扩展 1. HTTP请求方式 2. 域名解析工具与技术 3. Web十…

专业漏洞扫描机构如何助力企业保障安全并提升竞争力?

在这个信息化的当下&#xff0c;专业漏洞扫描机构扮演着至关重要的角色。他们运用专业的技术和手段&#xff0c;对各种软件和系统进行细致的漏洞检测&#xff0c;确保其安全可靠&#xff0c;同时帮助企业提高产品质量和市场竞争力。 服务项目 我们专注于向客户供应周到详尽的…