Oracle基礎以及一些‘方言’(一)

1、什么是Oracle

  • ORACLE數據庫系統是美國ORACLE公司(甲骨文)提供的以分布式數據庫為核心的一組軟件產品,是最流行的客戶/服務器(CLIENT/SERVER)或B/S體系結構的數據庫之一。
  • ORACLE 通常應用于大型系統的數據庫產品。

    ORACLE 數據庫是目前世界上使用最為廣泛的數據庫管理系統,作為一個通用的數據庫系統,它具有完整的數據管理功能;作為一個關系數據庫,它是一個完備關系的產品;作為分布式數據庫它實現了分布式處理功能。

  • ?英文官網:Database | Oracle

    ?中文官網:數據庫 | Oracle 中國

------ 來自百度百科

2、DB-Engines排名

3、ORACLE 體系結構

  • 數據庫

    • Oracle 數據庫是數據的物理存儲,是一組存儲數據的文件。 這就包括(數據文件 ORA 或者 DBF、控制文件、聯機日志、參數文件)。

    • 其實 Oracle 數據庫的概念和其它數據庫不一樣,這里的數據庫是一個操作系統只有一個庫。可以看作是 Oracle 就只有一個全局的數據庫,這一點和MySQL不太一樣。

  • 實例

    • 一個Oracle 實例(Oracle Instance)有一系列的后臺進程(Backguound Processes)和內存結構(Memory Structures)組成。是管理數據庫文件的。一個數據庫可以有 n 個實例。但通常情況下,一個實例對應一個數據庫

  • 數據文件(dbf)

    • 數據文件是數據庫的物理存儲單位。也就是說最終數據落到磁盤上是以文件形式存在的,這個文件就叫做數據文件,后綴名是dbf

    • 數據庫的數據是存儲在表空間中的,真正是在某一個或者多個數據文件中。而一個表空間可以由一個或多個數據文件組成,一個數據文件只能屬于一個表空間。一旦數據文件被加入到某個表空間后, 就不能刪除這個文件,如果要刪除某個數據文件,只能刪除其所屬于的表空間才行。

  • 表空間

    • 表空間是 Oracle 對物理數據庫上相關數據文件(ORA 或者 DBF 文件)的邏輯映射。一個數據庫在邏輯上被劃分成一到若干個表空間,每個表空間包含了在邏輯上相關聯的一組結構。每個數據庫至少有一個表空間(稱之為 system? 表空間)。

    • 每個表空間由同一磁盤上的一個或多個文件組成,這些文件叫數據文件(datafile)。一個數據文件只能屬于一個表空間。表空間下還有進一步的邏輯劃分。

    • 由于 oracle 的數據庫不是普通的概念,oracle 是有用戶和表空間對數據進行 管理和存放的。但是表不是有表空間去查詢的,而是由用戶去查的。因為不同用戶可以在同一個表空間建立同一個名字的表!這里區分就是用戶了!

    • 注:表的數據,是有用戶放入某一個表空間的,而這個表空間會隨機把這些表數據放到一個或者多個數據文件中。

  • 用戶

    • 用戶是在表空間下建立的。用戶登陸后只能看到和操作自己的表, ORACLE的用戶與 MYSQL 的數據庫類似,每建立一個應用需要創建一個用戶
    • MySQL中是一個用戶可以查看、管理操作多個數據庫,不同的應用創建不同的數據庫
    • Oracle是一個數據庫下可以創建不同的用戶,每個用戶可以操作屬于自己的表。正好和MySQL的概念是反過來的

4、Oracle語法之DDL操作:創建表空間、用戶以及用戶賦權

  • 創建表空間

    • SQL語句:
    • --1、查看已有表空間的存儲路徑
      select name from v$datafile;--2、創建表空間
      create tablespace sql50
      datafile '/home/app/oracle/oradata/orcl/sql50.dbf'
      size 100m
      autoextend on
      next 10m;
      
    • 解釋:
    • sql50             為表空間名稱
      datafile          用于設置物理文件名稱
      size              用于設置表空間的初始大小
      autoextend on     用于設置自動增長,如果存儲量超過初始大小,則開始自動擴容
      next              用于設置擴容的空間大小
      
  • 創建用戶

    • SQL語句:
    • --1、查看當前所有用戶
      select username from all_users;--2、創建新用戶
      create user sql50_user
      identified by 123456
      default tablespace sql50;
      
    • 解釋:
    • sql50_user            為創建的用戶名。
      identified by         用于設置用戶的密碼
      default tablesapce    用于指定默認表空間名稱
      
  • 用戶賦權

    • SQL語句:
    • -- 給用戶賦予dba權限
      grant dba to sql50_user;-- 給用戶對某個表(table_name)的select權限:
      grant select on table_name to sql50_user;-- 授予創建會話權限   
      grant create session to sql50_user;-- 授予使用表空間的權限(這里假設表空間名為sql50)   
      grant unlimited sql50 to sql50_user;-- 授予對teachers表的SELECT和INSERT權限  
      grant select, insert on teachers to sql50_user;-- 提交更改  
      COMMIT;
    • 解釋:
    • 系統權限:控制用戶對數據庫的整體訪問,如CREATE SESSION(創建會話)、CREATE TABLE(創建表)等
      對象權限:控制用戶對特定數據庫對象(如表、視圖、序列等)的訪問,如SELECT(查詢)、INSERT(插入)、UPDATE(更新)、DELETE(刪除)等
      如果需要授予多個權限,可以在一個GRANT語句中列出所有權限,或使用多個GRANT語句。
    • 注意事項:
      • 權限最小化原則:為了避免安全風險,建議只授予用戶所需的最小權限。
      • 權限撤銷:如果需要撤銷用戶的權限,可以使用REVOKE語句,語法與GRANT相似,但關鍵字為REVOKE。
      • 權限傳遞:Oracle還支持權限的傳遞,即用戶A可以將權限授予用戶B,用戶B又可以將權限授予用戶C,但需要注意權限傳遞的限制和安全性問題。
      • 角色管理:Oracle中的角色是權限的集合,可以將一組權限授予一個角色,然后將角色授予多個用戶,從而簡化權限管理。

5、Oracle語法之DML操作:表的創建、修改與刪除

  • 創建表

    • SQL語法:

    • ?
      CREATE TABLE table_name (column1 datatype [DEFAULT expression] [constraint],column2 datatype [DEFAULT expression] [constraint],...
      );
    • 解釋:

    • table_name:表的名稱。
      column1, column2, ...:列的名稱。
      datatype:列的數據類型,如 VARCHAR2, NUMBER, DATE 等。
      DEFAULT expression:為列指定默認值。
      constraint:為列添加約束,如 PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK 等。
      
    • 數據類型:

    • 1.  字符型(1)CHAR :    固定長度的字符類型,最多存儲 2000 個字節(2)VARCHAR2    :可變長度的字符類型,最多存儲 4000 個字節(3)LONG :  大文本類型。 最大可以存儲 2 個 G
      2.數值型NUMBER :  數值類型例如:NUMBER(5)      最大可以存的數為 99999NUMBER(5,2)    最大可以存的數為 999.99
      3.日期型(1)DATE:日期時間型,精確到秒(2)TIMESTAMP:精確到秒的小數點后 9 位
      4.二進制型(大數據類型)(1)CLOB :  存儲字符,最大可以存 4 個 G(2)BLOB:存儲圖像、聲音、  視頻等二進制數據,最多可以存 4 個 G
    • 實例:

    • -- 創建 Student 學生表
      CREATE TABLE Student
      (
      s_id VARCHAR(20),
      s_name VARCHAR(20) NOT NULL,
      s_birth VARCHAR(20) NOT NULL,
      s_sex VARCHAR(10) NOT NULL,
      PRIMARY KEY(s_id)
      );-- 創建 Course 課程表
      CREATE TABLE Course
      (
      c_id VARCHAR(20),
      c_name VARCHAR(20) NOT NULL,
      t_id VARCHAR(20) NOT NULL,
      PRIMARY KEY(c_id)
      );
    • 注意:如果需要給表添加注釋,需要額外的語句實現
  • 修改表

    • 增加字段

      • 增加字段語法:

      • ALTER TABLE 表名稱  ADD(列名1  類型  [DEFAULT  默認值],列名2  類型 [DEFAULT  默認值]...)
      • 示例:

      • -- 我們給學生表中添加身高和體重兩個字段
        ALTER TABLE student ADD
        (s_height number,s_weight number
        );
        
    • 修改字段

      • 修改字段語法:

      • ALTER TABLE 表名稱 MODIFY(列名1  類型  [DEFAULT  默認值],列名2  類型 [DEFAULT  默認值]...
        );
        
      • 示例:
      • -- 這是修改字段的示例
    • 修改字段名

      • 修改字段名語法:

      • ALTER TABLE 表名稱 RENAME COLUMN 原列名 TO 新列名;
      • 示例:

      • -- 這是修改字段名示例
    • 刪除字段名

      • 刪除字段名語法:

      • -- 刪除一個字段
        alter table 表名稱 drop column 列名;-- 刪除多個字段
        alter table 表名稱 drop (列名1, 列名2 ...);
        
      • 示例:

      • -- 這是刪除字段名的示例
        ALTER TABLE student DROP
        (s_height,s_weight
        );
        
  • 刪除表

    • SQL語法:
    • DROP TABLE 表名;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44248.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44248.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44248.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue使用 “xlsx-style“: “^0.8.13“ 報錯

關于jszip not a constructor報錯配置config.js文件后可能還報錯的問題: 在node_modules處找到node_modules\xlsx-style\xlsx.js 文件。 將 if(typeof jszip undefined) jszip require(./jszip).JSZip;(應該在xlsx.js文件1339行左右) 替換成 if(typeof jszip und…

高壓線束屏蔽效能測試之管中管法、線注入法

一、引言 上期推文介紹了高壓線束屏蔽效能測試方法三同軸法,本篇文章將繼續介紹高壓線束相關測試方法——管中管法和線注入法。 二、管中管法 1、一般要求 管中管法參照IEC62153-4-7標準對高低壓連接器進行零部件級屏蔽效能測試。在測試時,通過金屬延長管…

3、視圖和模板

續上一篇,這一篇 著重于創建公共接口——“視圖” 第三部分——3、視圖和模板 1、概述2、編寫更多視圖原理——django依次訪問了什么文件 3、寫一個真正有用的視圖一個快捷函數 render() render——渲染 4、拋出404錯誤一個快捷函數 get_object_or_404() 5、使用模…

實時數倉和離線數倉的區別是什么,企業該如何選擇合適的數倉架構?

目錄 一、離線數倉 1. 離線數倉是什么? 2. 離線數倉的特點 3. 離線數倉的適用場景 二、實時數倉 1. 實時數倉是什么? 2. 實時數倉的特點 3. 實時數倉的適用場景 三、由數倉需求變化帶來的數據倉庫架構的演變 1. 傳統數倉架構 2. 離線大數據架構 3. Lambd…

高級IO_多路轉接之ET模式Reactor

文章目錄 Reactor是什么?LT模式 VS ET模式 示例代碼 提示:以下是本篇文章正文內容,下面案例可供參考 Reactor是什么? Reactor模式是一種事件驅動的并發模型,它通過將事件處理邏輯與事件分發機制解耦,實現…

maven如何處理依賴沖突的問題?

Maven是一個強大的Java項目管理工具,它使用一個名為pom.xml的文件來管理項目的構建過程和依賴關系。當項目中出現依賴沖突時,Maven使用一系列策略來解決這些問題。以下是Maven處理依賴沖突的一些常見方法: 1. 最近優先策略: -…

tensorflow之欠擬合與過擬合,正則化緩解

過擬合泛化性弱 欠擬合解決方法: 增加輸入特征項 增加網絡參數 減少正則化參數 過擬合的解決方法: 數據清洗 增大訓練集 采用正則化 增大正則化參數 正則化緩解過擬合 正則化在損失函數中引入模型復雜度指標,利用給w增加權重,…

點線面推進未來智造

如今,寧波擁有門類齊全的制造業體系,形成了以石油化工、汽車及零部件、電工電器、紡織服裝等為支柱的產業集群。 寧波工業的發展并非一蹴而就,藍卓總經理譚彰詳細解讀了寧波制造業的發展歷程與當下目標,從工業小市到工業大市、工業…

基于Matlab和Python泰勒圖的繪制

一、泰勒圖介紹 泰勒圖:泰勒圖1常用于評價模型的精度,常用的精度指標有相關系數,標準差以及均方根誤差(RMSE)。一般而言,泰勒圖中的散點代表模型,輻射線代表相關系數,橫縱軸代表標準差,而虛線代表均方根誤差。泰勒圖一改以往用散點圖這種只能呈現兩個指標來表示模型精度…

Qt使用筆記1(智能指針,deleteLater,多屏)

1、Qt智能指針 1.1、QPointer :解決野指針問題,必須是QObject對象。 1.2、QScopedPoint:作用域指針,出作用域自動釋放。 1.3、QScopedArrayPoint:作用域數組指針,出作用域自動釋放數組。 1.4、QSharedP…

RedHat運維-Ansible自動化運維基礎20-從ansible-galaxy下載role

1. 社區管理的role倉庫:___________________________________; 2. 社區管理的role倉庫:___________________________________; 3. 社區管理的role倉庫:___________________________________; 4. 在ansible …

Python數據結構的庫之Fuk使用詳解

概要 fuk 是一個用于處理 Python 數據結構的庫,全稱為 "Fast and Uncomplicated Kit"。它提供了一系列高效、簡潔的數據結構實現,以及對 Python 內置數據結構的擴展。通過使用 fuk,開發者可以更加方便地處理列表、集合、字典等數據類型,提高代碼的執行效率和可讀…

vite+vue3拍照上傳到nodejs服務器

一:效果展示: 拍照效果 二:Nodejs后端接口代碼: 三:前端完整代碼:

Vue基礎--v-model/v-for/事件屬性/偵聽器

目錄 一 v-model表單元素 1.1 v-model綁定文本域的value 1.1.1 lazy屬性:光標離開再發請求 1.1.2 number屬性:如果能轉成number就會轉成numer類型 1.1.3 trim屬性:去文本域輸入的前后空格 1.2v-model綁定單選checkbox 1.3代碼展示 二 …

esp8266+micropython+irsend紅外發射調試記錄

在網上搜索esp8266micropython的紅外發射庫,沒找到,發現 接收庫是有的,可以參考:基于MicroPython的ESP8266連接外設IO(二)_micropython 紅外接收-CSDN博客 可惜沒有發射,很不方便。 這里都有介…

PHP財務記賬管理系統小程序源碼

理財小能手必備!揭秘財務記賬管理系統的魔力? 🌟 引入篇:告別糊涂賬,擁抱財務自由 你是否曾為月底的賬單頭疼不已?是否覺得自己的錢總是莫名其妙地消失?別擔心,財務記賬管理系統來拯救你的錢…

【機器學習】必會數學知識:一文掌握數據科學核心數學知識點(下),收藏~

核心數學知識點 1、引言2、數據科學必會數學知識2.13 K均值聚類2.14 決策樹2.15 隨機森林2.16 梯度下降2.17 隨機梯度下降(SGD)2.18 卷積2.19 拉普拉斯變換2.20 傅里葉變換2.21 信息論2.22 時間序列分析2.23 生成模型與判別模型2.24 支持向量機&#xff…

git merge 分支回退

1. 使用git merge --abort(如果合并正在進行中) git merge --abort2. 使用git reset(合并已經提交) 硬重置(--hard)會丟棄所有合并后的更改,并將HEAD指向合并前的提交。這是最徹底的方式&…

DDOS 攻擊原理

DDoS攻擊的基本原理 資源耗盡:攻擊者通過發送大量的請求或數據包,耗盡目標系統的資源(如帶寬、CPU、內存等),使其無法處理正常的用戶請求。 分布式攻擊:與傳統的DoS(拒絕服務)攻擊不…

Java-面向對象基礎

在面向對象編程(Object-Oriented Programming, OOP)中,類(Class)是一種用來描述對象共同特征的藍圖或模板。它是創建對象的原型,定義了對象可以有的屬性(字段)和行為(方法…