【MySQL】數據庫約束

?MySQL(三)數據庫約束

數據庫約束

一、not null

二、default

三、unique

四、primary key

1.自增主鍵機制

1.1單服務器下

1.2分布式下

1.2.1時間戳

1.2.2主機編號

1.2.3隨機因子

五、foreign key

1.∈關系維護

1.1父約子:

1.2子約父:

1.3刪表:

2.邏輯刪除

2.1子表存父表刪

2.2電腦空間占用


數據庫約束

列字段行記錄數據的約束

一、not null

create table student(id int not null);

not null 約束此列字段的行數據 不能為空


二、default

create table student(name varchar(20) default 'unknow');

約束此列字段的行數據 在默認時的值是什么

每個列字段 默認都會有的default值 是null?


三、unique

create table student(id int unique);

約束此列字段的行數據 之間不能重復 是唯一的

唯一性字段uniqueprimary key的?每次新入行數據時 都會去遍歷查詢 是否會重復

—>唯一性列字段創建時 會自動生成有索引,每次在此列字段?新入行數據時 都會用索引 精確定位到此列地 遍歷檢查行數據 是否會重復


四、primary key

create table student(id int primary key auto_increment);

約束 此列字段的行數據 或多個列字段的合行數據(聯合主鍵) 非空且唯一,相當于是not null與unique兩約束的合體版

作為記錄的身份標識字段一張表中 只能有一個主鍵,每次新入主鍵的行數據時 會觸發 唯一性字段的 索引遍歷查詢重復


1.自增主鍵機制

每個記錄的主鍵值 都由數據庫服務器 自動機動分配設置

1.1單服務器下

單個mysql服務器里,主鍵可設置 自增主鍵機制auto_increment服務器會維護著 當前主鍵值的最大值,每次分配時 以當前的最大值+1 來自增唯一id分配


1.2分布式下

分布式下的 多個mysql服務器中,如果用每個mysql服務器 各自維護的 當前最大值 來分配的話,主鍵值會重復 不行的,分布式用 唯一id = 時間戳 + 主機編號 + 隨機因子 來自增唯一id分配:

1.2.1時間戳

分布式下 用記錄產生時的時間戳 作為id,如果單位時間內 產生的記錄很多,可以把時間戳 往小設置 設置成毫秒級 微秒級,盡量使得單位時間戳內 只有一條記錄的產生 而去分配


1.2.2主機編號

如果發現單位時間戳內 同時產生有多條記錄時,就將時間戳id 再拼上 記錄產生所處的 mysql服務器的主機編號,一般情況下,當設置的時間戳單位 小到一臺機器 一時間戳內 無法連續完成產生記錄時,此時的多條記錄 肯定是由不同主機同一時刻產生的,加上各自的主機編號后 就能確保id是唯一的了


1.2.3隨機因子

如果設置的時間戳不夠小,發現同一時間戳內產生的記錄 是由同一臺服務器主機產生時的,此時再在 同臺機器同時間戳的記錄 的id后面 再拼上隨機因子數 使得id不同


五、foreign key

create table class(classId int primary key,name varchar(20));
create table student(id int primary key,classId int,name varchar(20),foreign key(classId) references class(classId));

約束此列字段的行數據 來源包含于 外表的唯一性列字段行數據


1.∈關系維護

外鍵維護著 子表數據∈父表數據 的關系:

1.1父約子:

子表新入 此外鍵列字段行數據時,必須來源于 父表此列字段的行數據


1.2子約父:

父表更改 外鍵關聯的 此列字段行數據時,必須確保 子表此列字段里沒有包含它


1.3刪表:

刪除表時,只能 先刪子表再刪父表


2.邏輯刪除

2.1子表存父表刪

很多時候,父表需要刪除 但子表不能刪除,就可以通過在邏輯上 把父表狀態設置為刪除實現 父表刪,子表存 的效果,而實際上父表還在硬盤中 未刪除等到后面子表 可以需要刪除時,再真正地將 子表與父表都刪去,實現靈活刪除的效果


2.2電腦空間占用

電腦硬盤上:

  • 文件空間的占用時 將此存儲空間 邏輯上設置為已占用 并往里存儲它,別的文件就不能往這塊空間存了
  • 刪除文件時 將此存儲空間 邏輯上設置為可占用 但并沒有把里面的數據清理允許文件覆蓋占用地 繼續存儲著的

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

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

相關文章

VRRP 協議

一、前言 最近被問到一個VRRP的網絡協議,一開始我是蒙蔽的狀態,至于什么是VRRP,我后面查了一下,因為對于網絡這方面我也不是很精通,見諒! VRRP,全稱叫虛擬路由冗余協議,是我孤陋寡聞…

打開小程序提示請求失敗(小程序頁面空白)

1、小程序代碼是商城后臺下載的還是自己編譯的 (1)要是商城后臺下載的,檢查設置里面的域名是不是https的 (2)要是自己編譯的,檢查app.js里面的接口域名是不是https的,填了以后有沒有保存 注&a…

Windows/MacOS WebStorm/IDEA 中開發 Uni-App 配置

文章目錄 前言1. 安裝 HBuilder X2. WebStorm/IDEA 安裝 Uniapp Tool 插件3. 配置 Uniapp Tool 插件4. 運行 Uni-App 項目 前言 前端開發人員對 WebStorm 一定不陌生,但有時需要開發 Uni-App 的需求,就必須要采用 HBuilder X,如果不習慣 HBu…

第四十三節:人臉檢測與識別-人臉識別基礎 (Eigenfaces, Fisherfaces, LBPH)

引言 人臉識別技術是計算機視覺領域最具應用價值的方向之一,廣泛應用于安防監控、身份認證、人機交互等領域。本文將通過OpenCV框架,深入解析人臉檢測與識別的核心算法(Eigenfaces/Fisherfaces/LBPH),并提供完整的代碼實現。 第一部分:人臉檢測基礎 1.1 人臉檢測原理 …

在Windows 11中,Edge瀏覽器默認會打開多個標簽頁,導致任務切換時標簽頁過多

?在Windows 11中,Edge瀏覽器默認會打開多個標簽頁,導致任務切換時標簽頁過多。要像Google Chrome一樣,只顯示當前標簽頁,可以按照以下步驟操作?: 打開Windows系統“設置” 選擇“系統”:在設置中找到“…

【modelscope/huggingface 通過colab將huggingface 模型/數據集/空間轉移到 modelscope并下載】

1. 準備 注冊一個modelscope賬號(國內的)拿到對應的訪問令牌SDK/API令牌注冊一個google賬號, 登錄colab 2. 開始干! 打開一個ipynb 安裝依賴包 !pip install -qqq modelscope huggingface-hub -U選擇安裝git lfs !curl -s https://packag…

HarmonyOS NEXT~鴻蒙系統與Uniapp跨平臺開發實踐指南

HarmonyOS NEXT~鴻蒙系統與Uniapp跨平臺開發實踐指南 引言:鴻蒙與Uniapp的融合價值 華為鴻蒙系統(HarmonyOS)作為新一代智能終端操作系統,其分布式能力與跨設備協同特性為開發者帶來了全新機遇。而Uniapp作為流行的跨平臺應用開發框架&…

【IPMV】圖像處理與機器視覺:Lec10 Edges and Lines

【IPMV】圖像處理與機器視覺:Lec10 Edges and Lines 本系列為2025年同濟大學自動化專業**圖像處理與機器視覺**課程筆記 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 Image Pyramid …

AI筑基,新質躍升|英碼科技亮相華為廣東新質生產力創新峰會,發布大模型一體機新品,助力產業智能化轉型

5月15日,以“AI筑基,新質躍升”為主題的華為中國行2025廣東新質生產力創新峰會在惠州圓滿召開。本次峰會聚焦人工智能、算力基礎設施等新ICT技術如何驅動“新質生產力”,共探廣東高質量發展新路徑。英碼科技受邀出席本次峰會,并攜…

篇章三 需求分析(二)

目錄 1.核心API 2.交換機類型 3.持久化 4.網絡通信 5.小結 1.核心API 消息隊列服務器(Broker Server),要提供的核心API 1.創建隊列(queueDeclare) 此處不使用 Create 這樣的術語,而是使用 Declare&…

打造高效數據處理利器:用Python實現Excel文件智能合并工具

有時候,我們需要將多個Excel文件按照特定順序合并成一個文件,這樣可以更方便地進行后續的數據處理和分析。今天,我想分享一個使用Python開發的小工具,它可以幫助我們輕松實現Excel文件的智能合并。C:\pythoncode\new\xlsx_merger.…

StepX-Edit:一個通用圖像編輯框架——論文閱讀筆記

一. 前言 代碼:https://github.com/stepfun-ai/Step1X-Edit 論文:https://arxiv.org/abs/2504.17761 近年來,圖像編輯技術發展迅速,GPT- 4o、Gemini2 Flash等前沿多模態模型的推出,展現了圖像編輯能力的巨大潛力。 這…

第9.1講、Tiny Encoder Transformer:極簡文本分類與注意力可視化實戰

項目簡介 本項目實現了一個極簡版的 Transformer Encoder 文本分類器,并通過 Streamlit 提供了交互式可視化界面。用戶可以輸入任意文本,實時查看模型的分類結果及注意力權重熱力圖,直觀理解 Transformer 的內部機制。項目采用 HuggingFace …

【Java】泛型在 Java 中是怎樣實現的?

先說結論 , Java 的泛型是偽泛型 , 在運行期間不存在泛型的概念 , 泛型在 Java 中是 編譯檢查 運行強轉 實現的 泛型是指 允許在定義類 , 接口和方法時使用的類型參數 , 使得代碼可以在不指定具體類型的情況下操作不同的數據類型 , 從而實現類型安全的代碼復用 的語言機制 . …

linux如何查找軟連接的實際地址

在Linux系統中,查找軟連接(符號鏈接,即symbolic link)的實際地址可以通過多種方法實現。軟連接是一個特殊的文件類型,它包含了一個指向另一個文件或目錄的引用。要找到軟連接所指向的實際文件或目錄,可以使…

Token類型與用途詳解:數字身份的安全載體圖譜

在現代數字身份體系中,Token如同"數字DNA",以不同形態流轉于各類應用場景。根據Okta的最新研究報告,平均每個企業應用使用2.7種不同類型的Token實現身份驗證和授權。本文將系統梳理主流Token類型及其應用場景,通過行業典…

火山 RTC 引擎9 ----集成 appkey

一、集成 appkey 1、網易RTC 初始化過程 1)、添加頭文件 實現互動直播 - 互動直播 2.0網易云信互動直播產品的基本功能包括音視頻通話和連麥直播,當您成功初始化 SDK 之后,您可以簡單體驗本產品的基本業務流程,例如主播加入房間…

詳細介紹Qwen3技術報告中提到的模型架構技術

詳細介紹Qwen3技術報告中提到的一些主流模型架構技術,并為核心流程配上相關的LaTeX公式。 這些技術都是當前大型語言模型(LLM)領域為了提升模型性能、訓練效率、推理速度或穩定性而采用的關鍵組件。 1. Grouped Query Attention (GQA) - 分組…

光電效應理論與實驗 | 從愛因斯坦光量子假說到普朗克常量測定

注:本文為“光電效應”相關文章合輯。 英文引文,機翻未校。 中文引文,略作重排,未整理去重。 圖片清晰度受引文原圖所限。 如有內容異常,請看原文。 Photoelectric Effect 光電效應 Discussion dilemma Under the…

Visual Studio 2019/2022:當前不會命中斷點,還沒有為該文檔加載任何符號。

1、打開調試的模塊窗口,該窗口一定要在調試狀態下才會顯示。 vs2019打開調試的模塊窗口 2、Visual Studio 2019提示未使用調試信息生成二進制文件 未使用調試信息生成二進制文件 3、然后到debug目錄下看下確實未生成CoreCms.Net.Web.WebApi.pdb文件。 那下面的…