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.pswp.cn/diannao/83836.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83836.shtml
英文地址,請注明出處:http://en.pswp.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;同時幫助企業提高產品質量和市場競爭力。 服務項目 我們專注于向客戶供應周到詳盡的…