Oracle入門學習四

来源:https://www.cnblogs.com/bibi-feiniaoyuan/archive/2020/05/02/oracle_four.html
-Advertisement-
Play Games

上一篇:Oracle入門學習三 學習視頻:https://www.bilibili.com/video/BV1tJ411r7EC?p=35 Oracle表連接:內連接、外連接。外連接分左連接、右連接。 多表查詢時,如果表之間沒有條件關聯,則會把所有匹配的結果查找出來,例如A表6條數據,B表7條數據, ...


上一篇:Oracle入門學習三

學習視頻:https://www.bilibili.com/video/BV1tJ411r7EC?p=35

Oracle表連接:內連接、外連接。外連接分左連接、右連接。

多表查詢時,如果表之間沒有條件關聯,則會把所有匹配的結果查找出來,例如A表6條數據,B表7條數據,查出來就是42條。

--笛卡爾積:返回兩張表中所有匹配的結果,沒有意義。所以多表查詢,必須寫關聯條件。
select * from staff,department where staff.id=department.staff_id;
View Code

內連接的表如果多於兩個,則每個表必須要直接或者間接的關聯。例如查A、B、C表,條件A.某列=B.某列 and A.某列=C.某列,則B表和C表有間接的關聯。

多表關聯時,其中某列必須唯一,例如查表A、B、C,A.Column1 = B.Column2 and A.Column3=C.Column4,其中Column1和Column2至少有一列在自己的表裡是唯一值,

Column3和Column4至少有一列在自己的表裡是唯一值。

非等值表連接:

select ename,sal from emp e,salgrade g
where e.sal between g.losal and g.hisal 
--這個losal到hisal的區間範圍是唯一的
grade losal hisal 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999

 自連接:自己關聯自己,但是作為不同表的定義,自連接一般可以使用子查詢替代,使用子查詢會更加清晰。

--自連接,將emp看做是兩張不同的表,e是員工表,m是領導表
select distinct m.empno, m.ename, m.sal
  from emp e, emp m
 where e.mgr = m.empno
--自連接用的情況不多,可以使用子查詢實現
  select * from emp m where m.empno in (select distinct mgr from emp)

外連接:主表中的數據全部選出,從表只選匹配的數據,不匹配的數據會用null替代。

外連接中的左外連接,左邊是主表,右邊是從表。外連接中的右外連接,右邊是主表,左邊是從表。

create table testa(
id number(3),
name varchar2(10),
age number(2)
);

insert into testa values(1,'a',23);
insert into testa values(2,'b',24);
insert into testa values(3,'c',25);
insert into testa values(4,'d',26);

create table testb(
id number(3),
salary number(8,2)
);

insert into testb values(1,9000);
insert into testb values(2,9000);
insert into testb values(3,9000);

select * from testa left join testb on testa.id=testb.id;
select * from testa right join testb on testa.id=testb.id;

分頁查詢:藉助“rownum”偽列進行分頁查詢。

--分頁查詢,每頁五條,查詢第二頁數據6-10
--使用偽列,不真正的存在表裡
select rownum from emp ;
select a.*,rownum from emp a;
select * from (select a.*,rownum r from emp a) x where x.r>5 and x.r<=10;
View Code
最內層:即將被分頁的全部數據,可能會被排序,定義成x表。
select * from emp;
中間層:啟動行編號偽列,定義成y表
select x.*,rownum r from x;
最外層:數據過濾,分頁開始
select * from y where y.r >0 and r<=10

 

日期添加與轉換:

--查詢系統日期
select sysdate from dual;
--向前走一天 明天
select sysdate+1 from dual;
--向後走一天 昨天
select sysdate-1 from dual;
--下個月的今天
select add_months(sysdate,1) from dual;
--上個月的今天
select add_months(sysdate,-1) from dual;
-- 加1小時,1分,1秒
select sysdate+1/24+1/(24*60) + 1/(24*60*60) from dual

 日期截取:

select trunc(sysdate) from dual; --預設精確到天
select trunc(sysdate,'dd') from dual; --精確到天
select trunc(sysdate,'mm') from dual;--精確到月
select trunc(sysdate,'yyyy') from dual;--精確到年
select trunc(sysdate,'hh') from dual;--精確到時
select trunc(sysdate,'mi') from dual;--精確到分

 

 




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 十、nginx反向代理負載均衡 (一)LNMP架構遷移資料庫說明 遷移資料庫:利用資料庫備份命令(mysql mysqladmin mysqldump) 1) 備份資料庫資料庫信息 2) 恢複數據庫資料庫信 第四里程:在負載均衡伺服器上,進行測試訪問 ②. 部署負載均衡伺服器 第一個裡程:安裝部署n ...
  • 九、期中架構LNMP章節 (一)LNMP架構說明 (二)LNMP架構工作原理 (三)LNMP架構部署 1)安裝LNMP相關軟體 ①. 部署Linux系統 基礎優化操作要完成(防火牆關閉 關閉selinux /tmp許可權為1777) ②. 部署nginx服務 見上一章節 ③. 部署mysql服務 yu ...
  • 常規的設置ubuntu中文設置操作可以參考這篇文章:http://www.xitongzhijia.net/xtjc/20181218/144658.html 如果按照上面的操作依舊無法把ubuntu設置為中文有一種更直接的方法 如下: 步驟1:打開終端 步驟2: 如果是ubuntu14.0 在終端 ...
  • ACL(access control list)翻譯過來就是訪問控制列表;相信ACL這個詞對大家都不是太陌生;Linux里的許可權里有ACL,httpd、nginx、varnish里都有ACL的概念;訪問控制列表(ACL)的使用提供了一個靈活的解決方案來執行內容切換,並通常根據從請求、響應或任何環境... ...
  • 關於i.MXRT系列的eFuse/OTP,痞子衡之前在介紹Boot時寫過兩篇,分別是針對RT1050的《eFuse及其燒寫方法》和針對RT600的《OTP及其燒寫方法》,今天要介紹的i.MXRT1170 eFuse其實是這兩者的融合,在空間組織上(尤其是Shadow Register)更像RT105... ...
  • Ubuntu 團隊通過郵件列表宣佈推出 Ubuntu 20.04 LTS 最終 Beta 版本,並預告穩定版將於2020年4月23日發佈。雖然是最終的 Beta 版本,但畢竟尚處於測試階段,因此不建議在生產環境或主力電腦上使用。 20.04 LTS 代號為"Focal Fossa",將會獲得 5 ...
  • 精通Oracle Database 12c SQL & PL/SQL編程(第3版) 內容簡介 學習通過編寫SQL語句並構建PL/SQL程式來訪問Oracle資料庫。《精通OracleDatabase12cSQL&PL/SQL編程(第3版)》完全涵蓋了*新版本Oracle資料庫的功能和技術,指導讀者編 ...
  • 今天安裝MySQL,結果安裝一半提示3306埠已被占用,於是網上搜索解決辦法,成功解決了占用問題,於是將方法記錄一下,以備後續再用。 1、Windows+R鍵,打開【運行】視窗,輸入cmd打開“命令行視窗”。 2、查找埠對應的PID,輸入如下命令: netstat -ano|findstr "3 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...