Oracle資料庫 數據完整性和DML語句

来源:https://www.cnblogs.com/ZhangZhengQin/archive/2018/09/21/9687724.html
-Advertisement-
Play Games

數據完整性和DML語句 數據完整性 數據完整性(Data Integrity)是指數據的精確性(Accuracy) 和可靠性(Reliability)。它是應防止資料庫中存在不符合語義規定的數據和防止因錯誤信息的輸入輸出造成無效操作或錯誤信息而提出的。數據完整性指存儲在資料庫中的所有數據值均正確的狀 ...


 數據完整性和DML語句

數據完整性

數據完整性(Data Integrity)是指數據的精確性(Accuracy) 和可靠性(Reliability)。它是應防止資料庫中存在不符合語義規定的數據和防止因錯誤信息的輸入輸出造成無效操作或錯誤信息而提出的。
數據完整性指存儲在資料庫中的所有數據值均正確的狀態。如果資料庫中存儲有不正確的數據值,則該資料庫稱為已喪失數據完整性。
資料庫採用多種方法來保證數據完整性,包括約束、規則和觸發器。

什麼是約束

約束是在表上強制執行的數據校驗規則.
約束主要用於保證資料庫的完整性。
當表中數據有相互依賴性時,可以保護相關的數據不被刪除.
大部分資料庫支持下麵五類完整性約束:
NOT NULL非空
UNIQUE Key唯一鍵
PRIMARY KEY主鍵
FOREIGN KEY外鍵
CHECK檢查
DEFAULT預設值

約束概述

約束作為資料庫對象,存放在系統表中,也有自己的名字
創建約束的時機
在建表的同時創建
建表後創建(修改表)
按照創建方式可分為列級表級約束

列集約束與表集約束

列級約束直接跟在列後定義,不再需要指定列名,與列定義之間用空格分開。
表級約束通常放在所有的列定義之後定義,要顯式指定對哪些列建立列級約束。與列定義之間採用英語逗號,隔開。
如果是對多列建聯合約束,只能使用表級約束語法。

非空約束(Not null)

列級約束,只能使用列級約束語法定義。
確保欄位值不允許為空
只能在欄位級定義

實例

       CREATE TABLE tb_student(
               id number PRIMARY KEY,
              NAME VARCHAR2(18) NOT NULL
         )
唯一約束

唯一性約束條件確保所在的欄位或者欄位組合不出現重覆值
同一張表內可建多個唯一約束
唯一性約束條件的欄位允許出現多個NULL
唯一約束可由多列組合而成
建唯一約束時Oracle會為之建立對應的索引。

CREATE TABLE tb_student(
    id number PRIMARY KEY,
    NAME VARCHAR2(18) UNIQUE NOT NULL
)
主鍵約束
主鍵是表中唯一確定一行數據的欄位。
一個表中只允許一個主鍵
主鍵從功能上看相當於非空且唯一
主鍵約束不允許為NULL
主鍵欄位可以是單欄位或者是多欄位的組合
當建立主鍵約束時,Oracle為主鍵創建對應的索引

CREATE TABLE tb_student(
    id number PRIMARY KEY,
    NAME VARCHAR2(18)
)
定義複合主鍵
當定義約束的時候, 不僅可以基於單列定義約束,也可以基於多列定義複合約束.

註意, 複合約束只能在表級中定義.
create table emp01(
    lastname varchar2(25),
    firstname varchar2(25),
    code varchar2(25),
    constraint emp01_pf
    primary  key(lastname,firstname)
);

一般情況下,一個表都應該有一個主鍵,建立主鍵的原則“最少性,穩定性”。

外鍵約束

外鍵是構建於一個表的兩個欄位或者兩個表的兩個欄位之間的關係
外鍵確保了相關的兩個欄位的兩個關係:
子(從)表外鍵列的值必須在主表參照列值的範圍內,或者為空(也可以加非空約束,強制不允許為空)。
當主表的記錄被子表參照時,主表記錄不允許被刪除。
外鍵參照的只能是主表主鍵或者唯一鍵,保證子表記錄可以準確定位到被參照的記錄。
格式FOREIGN KEY (外鍵列名)REFERENCES 主表(參照列)
ON DELETE CASCADE:當父表中的行被刪除的時候,同時刪除在子表中依靠的行
ON DELETE SET NULL:將依靠的外鍵值轉換為空值

 

 







 


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

-Advertisement-
Play Games
更多相關文章
  • 防火牆簡單的識別方式: 如圖: 可以簡單明瞭看出:發送SYN不回應,發送ACK回RST可以說明開啟過濾等等 基於這個原理,我們可以寫一個腳本來對防火牆來探測和識別: 這裡的flags==18或者是6或者是4,是TCP中FLAG代表的數字: OK,我們可以試試這個腳本: 如果腳本是從windows移過 ...
  • Hive的命名空間分為:hiveconf , system, env 和 hivevar 1、hiveconf 的命名空間指的是hive-site.xml下麵配置的環境變數 2、system的命名空間是系統的變數,包含JVM的運行信息 3、evn的命名空間是指環境變數,包含Shell環境下的變數信息 ...
  • 一、安裝xrdp工具: # yum install xrdp # yum install tigervnc-server # service xrdp start 以上三個命令執行完畢安裝完成,服務也已經啟動。 二、打開windows遠程視窗 輸入linux主機IP,點擊確定。 即可連接 ...
  • 1.有關優先順序 1.1 Configuration --> FreeRTOS MAX_PRIORITIES 設置任務優先順序的數量:配置應用程式有效的優先順序數目。任何數量的任務都可以共用一個優先順序,使用協程可以單獨的給與它們優先權。見MAX_CO_ROUTINE_PRIORITIES。 在RTOS內核 ...
  • 什麼是neo4j資料庫? neo4j資料庫是圖資料庫的一種,屬於nosql的一種,常見的nosql資料庫還有redis、memcached、mongDB等,不同於傳統的關係型資料庫,nosql數據也有其獨特之處,例如圖資料庫,在處理對象(在圖資料庫中稱為節點)之間的關係的能力要遠高於傳統的關係型數據 ...
  • 一 SQL刪除列的語句是: 但是,如果某列有約束時,不能直接刪除,需要先刪除約束,再刪除列。如果某個列是外鍵,在不知道外鍵約束名稱的情況下,那麼首先是查找外鍵約束名稱,根據名稱刪除約束,然後再刪除列。 二 如何查找外鍵約束 上述代碼在使用的時候需要給@TableName賦值實際的表名,@Column ...
  • 多表查詢連接 準備倆張員工信息表,我們要查詢員工信息及員工所在部門.那麼就需要倆張表進 行連接查詢,多表查詢. 外鏈接 語法 select 欄位列表 from 表1 inner/left/right join 表2 on 表1.欄位 = 表2.欄位; 第一種情況交叉連接: 不適用任何匹配條件.生成笛 ...
  • 一.概述 在作何資料庫里,備份與恢復都是非常重要的。好的備份方法和備份策略將會使得資料庫中的數據更加高效和安全。對於DBA來說,進行備份或恢復操作時要考慮的因素大概有如下: (1) 確定要備份的表的存儲引擎是事務型(innodb)還是非事務型。兩種不同的存儲引擎備份方式在處理數據一致性方面是不太一樣 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...