【MySQL數據庫】表的約束

目錄

1,空屬性

2,默認值

3,列描述

4,zerofill

5,主鍵primary key

6,自增長auto_increment

7,唯一鍵unique

8,外鍵foreign key


????????在MySQL中,表的約束是指用于插入的數據必須遵循特定的規則,使其插入正確的數據,以保持數據庫的數據是符合預期的。約束可以應用于列或整個表。

    ????????表的約束很多,這里主要介紹如下幾個:null/not null,default,comment,zerofill,primary key,auto_increment,unique,foreign key。

    1,空屬性

    ????????兩個值:null(默認的)和 not null(不為空)

    ????????數據庫默認字段基本都是字段為空,因為約束字段默認為null。若是 not null 屬性,那么插入時將不允許為空。

    2,默認值

    ? ? ? ? 默認值:default [數據]

    ????????默認值是插入數據時默認的數值。某一種數據會經常性的出現某個具體的值,可以在一開始就指定好,在需要真實數據的時候, 用戶可以選擇性的使用默認值。

    3,列描述

    ????????列描述:comment [列的描述]。沒有實際含義,專門用來描述字段,用來給程序員進行了解。

    ? ? ? ? 可發現,comment 注釋信息通過desc查看不到,但通過show可以看到。

    4,zerofill

    ????????zerofill 的主要用于數值類型的字段(如 int、bigint?等),用于將其格式化輸出數據。具體來說,它的作用是用前導零填充數值,使得該列的顯示寬度達到指定的長度。

    ? ? ? ? 平常所看到如 int(10) 的數值類型就與該字段相關,int占比4字節,這里的10表示填充的寬度,若沒有 zerofill 這個屬性,括號內的數字是毫無意義的。

    create table t4(id int(5) zerofill);
    insert into t4 (id) values (3);

    insert into t4 (id) values (123456);

    此時,id列的數據為:00003、123456

    5,主鍵primary key

    ????????主鍵 primary key 用來唯一的約束該字段里面的數據,表示該數據不能重復,不能為空。主鍵所在的列通常是整數類型。

    ? ? ? ? 上面 t4表的描述里 key 對應的 PRI 表示主鍵。?創建表時,一張表中最多只能有一個主鍵,但這個主鍵可以由多個列組成,即復合主鍵。

    ? ? ? ? 復合主鍵形式為:primary key(主鍵字段列表),如果有多個字段作為主鍵,可以使用復合主鍵。若創建表時沒有添加主鍵,這里可運用相關指令追加主鍵,或者刪除主鍵。

    刪除表下的所有主鍵:alter table 表名 drop primary key;

    對沒有主鍵的表追加主鍵:alter table 表名 add primary key(要追加列的名稱);

    6,自增長auto_increment

    ????????當對應的字段不給值時,它會自動的被系統觸發,系統會從當前字段中已經有的最大值 +1操作,得到一個新的不同的值。通常和主鍵搭配使用,作為邏輯主鍵。

    ? ? ? ? 注意:首先,auto_increment修飾的列必須是表的主鍵或唯一鍵的一部分,如果沒有將列定義為主鍵或唯一鍵MySQL不允許使用?auto_increment?屬性。其次,auto_increment 和 default?不能同時使用,因為?auto_increment 列的值是由數據庫自動生成的,通常從 1 開始遞增,它的行為已經隱含了默認值的生成機制,而 default 也是MySQL默認值的自動生成,因此,這兩個字段不能同時使用。上面這兩點是自增長的約束。

    7,唯一鍵unique

    ? ? ? ? 唯一鍵作用與主鍵差不多,都是保證一列中的所有值都是唯一的,不同的是主鍵不可以為空(null),但唯一鍵可以為空,且一個表中可以有多個唯一鍵。

    ? ? ? ? 主鍵和唯一鍵的運用場景主要是在業務上。主鍵更多的是標識唯一性的,比如身份證號,而而唯一鍵更多的是保證在業務數據上,表示不要和別的信息出現重復。

    8,外鍵foreign key

    ????????外鍵用于定義主表和從表之間的關系:外鍵約束主要定義在從表上,主表則必須是有主鍵約束或unique 約束。當定義外鍵后,要求外鍵列數據必須在主表的主鍵列存在或為null。在MySQL中,外鍵是一種用于建立和加強兩個表數據之間連接的列。通過確保一個表中的數據與另一個表中的數據匹配。

    外鍵語法:foreign key (字段列名)?references 主表(列名);

    ? ? ? ? 由于外鍵約束,如果主表或從表存在依賴項的話,它會拒絕刪除或更新操作。

    ? ? ? ? 上面,我們設計了主表——班級表myclass 和從表——學生表stu,讓學生表的 class_id 和班級表 id 形成關聯關系,即在外表中建立外鍵約束。當向從表 stu 的 class_id 插入不存在于主表 myclass 的 id 列中的數據時,這里將插入失敗。當然,插入 null 會插入成功,表示當前還未進行分配班級。

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

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

    相關文章

    基于javaweb的SpringBoot校園失物招領系統設計與實現(源碼+文檔+部署講解)

    技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

    多模態大語言模型arxiv論文略讀(二十六)

    Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ?? 論文標題:Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ?? 論文作者:Xinpeng Ding,…

    “星睿O6” AI PC開發套件評測 - 部署PVE搭建All in One NAS服務器

    Radxa O6平臺上部署PVE搭建All in One NAS服務器 Radxa O6是一款性能卓越的單板計算機,其強勁的硬件配置和多樣化的接口設計,使其成為家庭和小型企業理想的All in One服務器解決方案。值得一提的是,O6原生配備了兩個5G網口,便于直…

    C++ linux打包運行方案(cmake)

    文章目錄 背景動態庫打包方案動態庫轉靜態庫動態庫打到軟件包中 運行 背景 使用C編寫的一個小項目,需要打包成ubuntu下的可執行文件,方便分發給其他ubuntu執行,因為docker鏡像方案過于臃腫,所以需要把項目的動態庫都打在軟件包中…

    Linux內核編譯(Ubuntu)

    實驗內容:在系統中下載統一發行版本的版本號較高的內核,編譯之后運行自己編譯的內核,并使用uname-r命令查看是否運行成功。 實驗步驟: 1.查看實驗環境和內核版本 圖1 實驗環境 VMware中虛擬機Ubuntu(24.04&#xff…

    EdgeGPT - 新版Bing聊天功能逆向工程

    本文翻譯整理自:https://github.com/acheong08/EdgeGPT 文章目錄 一、關于 EdgeGPT相關鏈接資源關鍵功能特性 二、安裝系統要求安裝命令 三、認證配置獲取Cookie步驟代碼中使用Cookie 四、使用方法1、命令行方式2、Python API方式使用Chatbot類使用Query輔助類 3、…

    三網通電玩城平臺系統結構與源碼工程詳解(四):子游戲集成與服務器調度機制全解

    本篇將深入講解三網通電玩城平臺中子游戲接入、前后端資源組織方式、服務器調度邏輯、并發接入方案等核心內容,重點覆蓋“李逵劈魚”、“水果瑪麗”、“瘋狂瑪麗”等熱門組件,輔以完整代碼框架與部署邏輯。 一、子游戲資源目錄結構與加載機制 平臺采用標…

    1.1 AI大模型與Agent的興起及其對企業數字化轉型的推動作用

    隨著人工智能技術的飛速發展,AI大模型和智能代理(Agent)的興起正成為推動企業數字化轉型的重要力量。從2017年GPT-1的首次亮相到2025年GPT-4和Qwen 2.5等多模態模型的成熟,AI大模型經歷了顯著的技術演進;與此同時&…

    位運算練習:起床困難綜合征(貪心,位運算)(算法競賽進階指南學習筆記)

    目錄 前情提要起床困難綜合征(貪心,位運算) 前情提要 一些基礎運算操作用法看看上一篇; 起床困難綜合征(貪心,位運算) 題目原文 [P2114 NOI2014] 起床困難綜合癥 - 洛谷 思路分析 題目很長…

    PowerBi中REMOVEFILTERS怎么使用?

    在 Power BI 的 DAX 中,REMOVEFILTERS() 是一個非常重要的函數,常用于取消某個字段或表的篩選上下文(Filter Context),從而讓你的計算不受切片器(Slicer)、篩選器或視覺對象的限制。 ? 一、REM…

    Vue3 實戰:打造多功能旅游攻略選項卡頁面

    在旅游類應用開發中,為用戶提供全面、直觀的信息展示界面至關重要。本文將分享如何基于 Vue3 Axios 技術棧,實現一個包含攻略、游記、問答三大板塊的旅游攻略選項卡頁面,從樣式設計到交互邏輯,帶你深入了解整個開發過程。 項目背…

    JavaScript性能優化實戰(1):性能優化基礎與性能分析工具

    性能優化的重要性與業務價值 在當今競爭激烈的互聯網環境中,網站和應用的性能已成為用戶體驗和業務成功的關鍵因素。研究表明,頁面加載時間每增加1秒,轉化率可能下降7%,而53%的用戶會在頁面加載時間超過3秒后放棄訪問。這些數據直接揭示了性能優化對業務的巨大影響: 用戶…

    Unity 腳本使用(二)——UnityEngine.AI——NavMesh

    描述 Singleton class 用于訪問被烘培好的 NavMesh. 使用NavMesh類可以執行空間查詢(spatial queries),例如路徑查找和可步行性測試。此類還允許您設置特定區域類型的尋路成本,并調整尋路和避免的全局行為。 靜態屬性&#xff0…

    Java 靜態內部類面試題與高質量答案合集

    本文整理了關于 Java 靜態內部類(Static Nested Class)在面試中的高頻問題及標準答案,幫助你理解其底層原理、內存表現以及實際應用。 1. 什么是靜態內部類?和普通內部類有什么區別? 答: 靜態內部類是定義…

    為什么買不到一定阻抗特性曲線的磁環

    為什么買不到一定阻抗特性曲線的磁環: 磁環繞不同的圈數,阻抗特性曲線不同,磁環沒有類似于磁珠的特定頻率和阻抗特性曲線的磁環。 磁環與磁珠的核心區別: 磁珠是一種固定頻率阻抗器件,出廠時已通過材料和工藝設計確定…

    【MATLAB海洋專題】歷史匯總

    【MATLAB海洋專題】歷史匯總 目錄 01:海洋專題進階教學 02:海洋數據處理 03:海洋數據下載 04:海洋配色 05:海洋專題基礎教學 06: 其他基礎畫圖 07:python 畫海圖專題 08:模式相關文件制作 01…

    數據倉庫ODS、DWD、DWS、ADS各層介紹

    數據倉庫Data warehouse(可簡寫為DW或者DWH)建設的目的,是為前端查詢和分析作為基礎,主要應用于OLAP(on-line Analytical Processing),支持復雜的分析操作,側重決策支持,…

    動態提示詞(小模型)、RAG和提示詞系統

    動態提示詞(小模型)、RAG和提示詞系統 目錄 動態提示詞(小模型)、RAG和提示詞系統小模型方案:動態提示詞基于規則的動態提示詞生成基于模板的動態提示詞生成基于小模型的動態提示詞生成基于強化學習的動態提示詞生成基于元學習的動態提示詞生成動態提示詞(小模型)RAG(檢…

    并發設計模式實戰系列(3):工作隊列

    🌟 ?大家好,我是摘星!? 🌟 今天為大家帶來的是并發設計模式實戰系列,第三章工作隊列(Work Queue)??,廢話不多說直接開始~ 目錄 一、核心原理深度拆解 1. 生產者-消費者架構 …

    云賬號安全事件應急響應指南:應對來自中國IP的異常訪問

    在當今數字化時代,云服務已成為企業IT基礎設施的核心。然而,隨之而來的安全挑戰也日益突出。本文將詳細介紹當發現云賬號被來自中國的IP地址異常利用時,應如何快速有效地響應,以確保賬戶安全并最小化潛在風險。 1. 確認異常活動 首先,我們需要確認是否真的發生了安全事件…