Oracle入門學習五

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

學習視頻: https://www.bilibili.com/video/BV1tJ411r7EC?p=35 數據的完整性:保證插入表格的數據必須正確。包括實體完整性、區域完整性、引用完整性、自定義完整性。 約束:約束的作用是為了保證數據的完整性,類型包括主鍵約束(PK)、唯一約束()、檢查約束、外 ...


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

數據的完整性:保證插入表格的數據必須正確。包括實體完整性、區域完整性、引用完整性、自定義完整性。

約束:約束的作用是為了保證數據的完整性,類型包括主鍵約束(PK)、唯一約束()、檢查約束、外鍵約束。主鍵和唯一約束的區別是主鍵不能為空。命名規則:約束類型_約束名。

列級約束:針對某一列設置的約束。表級約束和列級約束區別相關瞭解:https://blog.csdn.net/hanxuemin12345/article/details/7828206

--設置主鍵的簡潔寫法
create table user1(
id number(5) primary key,
name varchar2(20)
)

--設置主鍵的完整寫法
create table user1(
id number(5) constraint pk_id primary key,
name varchar2(20)
)

--添加主鍵約束、唯一約束、非空約束
create table user3(
id number(3) constraint pk_user3_id primary key,
name varchar2(20) constraint uq_user3_name unique,
age number(3) constraint nn_user3_age not null
)

insert into user3 values(1,'bibi',34);
insert into user3 values(2,'bibiiii',34);
insert into user3 values(3,'bibi',null);

檢查約束:

alter table user3 add salary number(8,2);
alter table user3 add constraint ck_user3_salary check (salary between 5000 and 20000);

表級約束:在定義表格的某些列之後,再為某些列添加約束。非空約束只能是列級約束。

create table user3(
id number(3) ,
name varchar2(20) ,
age number(3) not null,
constraint pk_user3_id primary key (id),
constraint uq_user3_name unique (name)
)

create table user3(
id number(3) ,
name varchar2(20) ,
age number(3) not null,
constraint uq_user3_name unique (id,name)
)
View Code

表定義之後,添加、移除約束:

alter table user3 add constraint pk_usesr3_id primary key (id);
alter table user3 drop constraint pk_user3_id;

外鍵約束:本表這列的值取決於另一個表的主鍵。刪除主表關聯數據是,必須先把從表的外鍵關聯數據刪除或者置空。刪除主表之前必須先把從表刪除掉或者主表切斷所有關聯的外鍵。

create table user8
(
id number(3) primary key,
name varchar2(20) not null
);

insert into user8 values(1,'bb');
insert into user8 values(2,'bbb');
insert into user8 values(3,'bbbb');

create table order8
(
 id number(10)  primary key,
 user_id number(3) constraint fk_order8_userid references user8(id), --外鍵,引用user8表的id
 info varchar2(500) 
);

insert into order8 values(1,1,null);
insert into order8 values(1,5,null);
create table user8
(
id number(3) primary key,
name varchar2(20) not null
);

insert into user8 values(1,'bb');
insert into user8 values(2,'bbb');
insert into user8 values(3,'bbbb');

create table order8
(
 id number(10)  primary key,
 user_id number(3) constraint fk_order8_userid references user8(id), --外鍵,引用user8表的id
 info varchar2(500) 
)

insert into order8 values(1,1,null);
insert into order8 values(2,2,null);
insert into order8 values(3,3,null);

--刪除關聯數據 方法一,不常用
delete from order8;
delete from user8;

--方法二 置空
update order8 set user_id=null;
delete from user8;

--刪除關聯表 不常用
drop table order8;
drop table user8;

--方法二 刪除掉所有關聯的外鍵
drop table user8 cascade constraint;
View Code

級聯操作:當刪除主表中被參考數據時,從表關聯外鍵欄位數據自動設為null,用法 on delete set null。當刪除主表被參考數據時,從表外鍵關聯數據行自動刪除,用法 on delete cascade。

create table order8
(
 id number(10)  primary key,
 user_id number(3) references user8(id) on delete set null, 
 info varchar2(500) 
)

create table order8
(
 id number(10)  primary key,
 user_id number(3) references user8(id) on delete cascade, 
 info varchar2(500) 
)
View Code

聯合主鍵:多個欄位組成一個主鍵

create table user8
(
id number(3) ,
name varchar2(20),
constraint pk_user8_id_name primary key (id,name)
);

insert into user8 values(1,'b');
insert into user8 values(1,'a');
insert into user8 values(1,'b');

 


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

-Advertisement-
Play Games
更多相關文章
  • 文件查找 小編在學這堂課的前一天夜裡打嗝打了半宿,第二天上課的時候迷迷糊糊,所以,導致文件查找這章我放了好久的鴿子。 這裡是回看視頻摘出來的筆記。如有理解有偏差,請留言。 本篇只有3個命令,重點是find,時間有限的朋友可以只看find命令。這太過重要了。 whereis命令 在一些特定的目錄搜索, ...
  • 知識點:Python庫及簡單定時器的使用 1. 滑鼠自動點擊屏幕代碼 (1). 首先 pip install pymouse (2). 運行代碼出現:ModuleNotFoundError: No module named ‘windows’ 原因:缺少pyuserinput工具 解決:pip in ...
  • Linux系統作為一個GPOS(通用操作系統)發展至今已經非常成熟可靠了,並且由於遵循GPL協議,開放所有系統源代碼,非常易於裁剪。更重要的是,與其他開源的GPOS或RTOS相比,Linux系統支持多種處理器、開發板,提供多種軟體開發工具,同時Linux系統對網路和圖形界面的支持非常出色。顯然,選擇 ...
  • 在32bit中的Linux內核中一般採用3層映射模型,第1層是頁面目錄(PGD),第2層是頁面中間目錄(PMD),第3層才是頁面映射表(PTE)。 但在ARM32系統中只用到兩層映射,因此在實際代碼中就要3層映射模型中合併一層 。在ARM32架構中,可以按段(section)來映射,這時採用單層映射 ...
  • 執行yum list installed | grep xxx 命令時報錯 模塊依賴問題 問題 1: conflicting requests - nothing provides module(perl:5.26) needed by module perl-DBD-SQLite:1.58:801 ...
  • title: linux打開文件數 too many open files 解決辦法 date: 2020 05 03 08:30:45 tags: linux categories: linux 阿裡巴巴Java開發手冊中規定: 調大伺服器所支持的最大文件句柄數(File Descriptor,簡 ...
  • 事務:把一組操作看做一個工作單元,要麼都執行,要麼都不執行。dml操作才有事務,查詢沒有事務。 開始事務:從上一次的事務結束之後,從第一次dml操作,就自動開啟了事務 提交事務:commit 回滾事務:rollback create table bank ( id number(5) primary ...
  • MySQL備忘 目錄 [TOC] 使用MySQL + 分別指明用戶名,主機名,埠號 + 對每個欄位返回一行,其中的信息分別是欄位名,數據類型,是否允許為空,鍵信息,預設值及其他信息 與上同 + 顯示廣泛的伺服器狀態信息 + 和`SHOW CREATE TABLE `,分別用來顯示創建特定資料庫或表 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...