Oracle資料庫

来源:https://www.cnblogs.com/longhj/archive/2023/10/14/17755001.html
-Advertisement-
Play Games

Ⅰ 資料庫 ①層次型資料庫 ②網狀型資料庫 ③關係型資料庫(主要介紹) E-R圖:屬性(橢圓形),實體(矩形),聯繫(菱形-一對一、一對多、多對多)註:有的聯繫也有屬性 關係型資料庫的設計範式: 第一範式(1NF):屬性不可再分,欄位保證原子性 第二範式(2NF):在滿足1NF的基礎上,要求表中的每 ...


Ⅰ 資料庫

  ①層次型資料庫
  ②網狀型資料庫
  ③關係型資料庫(主要介紹)

E-R圖:屬性(橢圓形),實體(矩形),聯繫(菱形-一對一、一對多、多對多)
註:有的聯繫也有屬性

關係型資料庫的設計範式:

  第一範式(1NF):屬性不可再分,欄位保證原子性   第二範式(2NF):在滿足1NF的基礎上,要求表中的每條記錄必須被唯一的區分   第三範式(3NF):在2NF基礎上,任何非主屬性不依賴於其它非主屬性(在2NF基礎上消除傳遞依賴)

Oracle資料庫:
  三大概念:實例、資料庫、資料庫伺服器
  實例:指一組Oracle後臺進程以及在伺服器中分配的共用記憶體區域;
  資料庫:由基於磁碟的數據文件、控制文件、日誌文件、參數文件和歸檔日誌文件等組成的物理文件集合;
  資料庫伺服器:指管理資料庫的各種軟體工具(比如,sqlplus、OEM等)和實例及資料庫三個部分。
  實例與資料庫兩者聯繫:實例用於管理和控制資料庫,而資料庫為實例提供數據;
一個資料庫可以被多個實例裝載和打開,而一個實例在其生存期內只能裝載和打開一個資料庫。

Oracle資料庫的邏輯存儲結構  

     

 

Ⅰ表空間管理
  一)創建表空間
   語法:

  create [smallfile小文件 | bigfile大文件表空間] tablespace 表空間名 datafile 存放路徑 size ***k/m reuse -【options】-如下
  本地化管理方式:extent management local [autoallocal自棟擴展 |uniform size **k/m 等同大小進行]
  自動擴展:autoextent [on | off] next **k/m  ##若自動,則設置next的值
  線上/離線:online | offline
  永久/臨時表空間:permanent | temporary
  是否產生日誌:logging | nologging  ##預設產生
  //代碼示例//
  --查詢表空間
  select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name; 

  --創建表空間   
create tablespace tbs_test1 datafile 'D:\oracle_service\oracle_tablespace\tbs_test1.DBF' size 10m reuse   extent management local autoallocate;   select * from v$datafile;
  --重命名   
alter tablespace tbs_test rename to tbs_test1;
  --查詢數據文件   
select tablespace_name,file_name,bytes,autoextensible from DBA_DATA_FILES;
  --添加數據文件   
alter tablespace tbs_test1 add datafile 'D:\oracle_service\oracle_tablespace\tbs_test2.DBF' size 10M reuse   autoextend on next 2m maxsize unlimited;

  --刪除數據文件   
alter tablespace tbs_test1 drop datafile 'D:\oracle_service\oracle_tablespace\tbs_test2.DBF';

  --修改數據文件為自動擴展   
alter database datafile 'D:\oracle_service\oracle_tablespace\tbs_test1.DBF' autoextend on next 2m maxsize unlimited;

  二)撤銷表空間

  create undo tablespace avatar_undo datafile ..
  alter system set undo_tablespace=avatar_undo

  作用:使讀寫一致、可回退事務、事務恢復、閃回操作

  參數:
    undo_tablespace
    undo_management
    undo_retention

  三)臨時表空間:(磁碟空間)

  create temporary tablespace tablespace_name datafile ..

 

Ⅰ Oracle用戶管理
 一)【用戶】

  查詢用戶

  select * from dba_users;
  select * from all_users;
  select * from user_users;

  創建一個用戶peppa,密碼peppa,預設表空間

  create user peppa identified by peppa;

  創建用戶yclhj,密碼yclhj,表空間為users表空間

  create user yclhj identified by yclhj default tablespace users;

  查詢系統許可權和對象許可權【許可權】

  select * from system_privilege_map;
  select * from table_privilege_map;

  查看角色【角色】

  select * from dba_roles;

  直接給peppa用戶授予登錄許可權create session

  grant create session,alter session to peppa with admin option;

  通過角色來添加用戶許可權

  grant connect,resource to peppa;
  grant connect,resource to yclhj; 

 二)【用戶與角色】
  用戶擁有的角色

  select * from dba_role_privs;
  select * from user_role_privs;
  select * from role_role_privs;

 三)【用戶與許可權】
  用戶擁有的系統許可權:

  select * from dba_sys_privs;
  select * from user_sys_privs;

  用戶擁有的對象許可權:

  select * from dba_tab_privs;
  select * from all_tab_privs;
  select * from user_tab_privs;
  select * from dba_col_privs;
  select * from all_col_privs;
  select * from user_col_privs;

 

Ⅰ SQL語句

  1)DML語句(數據操作語言)

    Insert / Update / Delete/merge

  2)DDL語句(數據定義語言)

    Create / Alter / Drop / Truncate(刪除數據立即生效)
  3)DCL語句(數據控制語言)
    Grant(賦於許可權 ) / Revoke(回收許可權 )
  4)事務控制語句
    Commit / Rollback / Savepoint
  5)查詢語句
    簡單查詢 / 條件查詢 / 連接查詢
  6)約束
    NOT NULL 約束:確保某列不能有 NULL 值。
    DEFAULT 約束:當某列沒有指定值時,為該列提供預設值。
    UNIQUE 約束:確保某列中的所有值是不同的。
    PRIMARY Key 約束:唯一標識資料庫表中的各行/記錄。
    CHECK 約束:CHECK 約束確保某列中的所有值滿足一定條件。
  7)單行函數
    使用語法:
      函數名稱(操作的列 | 具體的數值 [,若幹參數])
    1.字元串函數

  大小寫轉換:UPPER()、LOWER()
  首字母大寫:INITCAP()
  替換:REPLACE()
  長度:LENGTH()、
  截取:①SUBSTR(str,index)     ②SUBSTR(strbegin,size)
  連接:CONTACT()

    2.數值函數

  round()函數: 表示的是四捨五入,而且是帶小數點的
  trunc()函數: 直接截取,不再進行四捨五入了('+'是指小數點後,'-'是指小數點前,表示一個方向)
  mod()取餘

    3.轉換函數

  TO_CHAR() #轉換為字元串
  TO_DATE() #轉換為日期形式
  TO_NUMBER() #轉換為數字型

    4.日期函數
    當前系統時間:【sysdate】

  SELECT SYSDATE FROM dual;

    三大計算公式:
    日期 – 數字 = 日期;
    日期 + 數字 = 日期;
    日期 – 日期 = 數字(天數)

  MONTHS_BETWEEN(日期1,日期2):求出兩個日期之間的月數;
  ADD_MONTHS():求出幾個月之後的日期;
  NEXT_DAY():求出下一個的今天;
  LAST_DAY():求出給定日期的最後一天。

    5.聚合函數

  COUNT():統計數據量;
  SUM():求和;
  AVG():求平均;
  MAX():最大值;
  MIN():最小值;

 

 

    6.通用函數

  ①nvl(): 如果第一個參數為空,就取第二個參數的值,如果不為空就去第一個參數的值
  ②decode() : 多條件判斷
    語法:

    DECODE(列 | 值,判斷條件1,輸出結果1,判斷條件2,輸出結果2,.....)

  8)子查詢

  SQL執行的順序

    1.FROM先確定從哪個表中獲取數據
    2.WHERE對條件加以限定
    3.GROUP BY ...HAVING
    4.聚合函數
    5.SELECT欄位篩選
    6.ORDERBY

  語法:

  SELECT 查詢的欄位,(
    SELECT 查詢的欄位
    FROM 表名稱1 別名,表名稱2 別名,....
    [WHERE 條件(s)]
    [GROUP BY 分組欄位]
    [ORDER BY 排序欄位 ASC | DESC,排序欄位 ASC | DESC] ;
  )
  FROM 表名稱1 別名,表名稱2 別名,.... (
    SELECT 查詢的欄位
    FROM 表名稱1 別名,表名稱2 別名,....
    [WHERE 條件(s)]
    [GROUP BY 分組欄位]
    [ORDER BY 排序欄位 ASC | DESC,排序欄位 ASC | DESC] ;
  )
  [WHERE 條件(s) (
    SELECT 查詢的欄位
    FROM 表名稱1 別名,表名稱2 別名,....
    [WHERE 條件(s)]
    [GROUP BY 分組欄位]
    [ORDER BY 排序欄位 ASC | DESC,排序欄位 ASC | DESC] ;
   )]
  [GROUP BY 分組欄位]
  [ORDER BY 排序欄位 ASC | DESC,排序欄位 ASC | DESC] ;

  9)分頁查詢

  rowid:代表該條記錄的物理地址
  rownum :為生成的數據的編號,使用分頁需要使用到rownum

  select * from emp order by sal;
  select rowid,rownum,emp.* from emp;
  示例:
  --
每頁顯示3條記錄,查詢第一頁   select * from emp where rownum<=3;   --查詢第二頁記錄   select * from emp where rownum>3 and rownum <=6; --rownum>*不存在,條件滿足不了   --解決問題:使用子查詢先生成rownum,然後再基於生成的rownum進行分頁   select empno,ename,sal,comm,job   from (select rownum a,empno,ename,sal,comm,job from emp)r   where r.a>3 and r.a<=6;   --按照sal排序   --正確順序:先排序,再生成rownum   select rownum,empno,ename,sal,comm,job   from (select empno,ename,sal,comm,job from emp order by sal);   --完整語句   select empno,ename,job,sal,comm
  from (select rownum r,empno,ename,job,sal,comm
      from (select empno,ename,job,sal,comm from emp order by sal))   where r>3 and r<=6;

 

 

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 我們在WPF應用端的界面中,使用lepoco/wpfui 來做主要的入口框架,這個項目它的菜單內置了不少圖標,我們需要在動態菜單的配置中,使用它作為圖標的展示處理,本篇隨筆介紹如何基於圖標枚舉集合進行圖標的展示和選擇處理。並擴展到Font-Awesome-WPF的處理進行展示和選擇。 ...
  • 前言 對`async/await`的支持已經存在了十多年。它的出現,改變了為 .NET 編寫可伸縮代碼的方式,你在不瞭解幕後的情況下也可以非常普遍地使用該功能。 從如下所示的同步方法開始(此方法是“同步的”,因為在整個操作完成並將控制權返回給調用方之前,調用方將無法執行任何其他操作): // Syn ...
  • 一、前言 ZXing.Net的一個可移植軟體包,是一個開源的、多格式的1D/2D條形碼圖像處理庫,最初是用Java實現的。已經過大量優化和改進,它已經被手動移植。它與.Net 2.0、.Net 3.5、.Net 4.x、.Net 5.x、.Net 6.x、.Net 7.x、Windows RT類庫和 ...
  • 工具地址:GitHub - dotnet/try-convert:幫助 .NET 開發人員將他們的項目移植到 .NET Core! 這是一個簡單的工具,有助於將.NET Framework項目遷移到.NET Core。 如何使用它 在此處將其作為全局工具安裝: dotnet tool install ...
  • 原文地址:Window10安裝linux子系統及子系統安裝1Panel面板 - Stars-One的雜貨小窩 最近看到halo博客發佈了2.10.0,終於是新增了個備份功能,於是有了念頭想要升級下 但是目前我還是使用halo1.5版本,所以跨版本遷移可能會有問題,官方提議還是先用個測試環境進行測試驗 ...
  • XN297LBW 是一個SOP8封裝的2.4GHz頻段無線收發晶元, 價格在1元左右, 因為面向的主要是低成本應用, 大多數搭配的MCU為廉價的8位8051, 不一定有硬體SPI, 為了保證相容在SDK中使用的都是GPIO模擬SPI方式進行驅動. 但是實際上是可以通過硬體SPI方式進行驅動的. 本文... ...
  • windows操作系統為我們提供了一套底層Socket API,用於實現網路通信。在我們編寫的程式中,如果需要引用該網路庫,需要實現以下幾步: 1、包含頭文件 1 #include <WinSock2.h> 其中,頭文件<WinSock2.h>表示Windows Socket 第二版,第一版為 <w ...
  • 本文總結了MongoDB的快速入門、Linux安裝和Docker配置指南。它提供了一步步的操作指引,幫助讀者迅速上手MongoDB,並瞭解如何在Linux環境下進行安裝、啟動和配置。此外,文章還介紹了使用Docker安裝和配置MongoDB的方法,使讀者能夠更輕鬆地部署和管理MongoDB實例。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...