【MySQL】表的約束(上)

在這里插入圖片描述

文章目錄

  • 表的約束
    • 什么是表的約束
    • 空屬性
    • 默認值
    • 列描述(comment)
    • 零填充(zerofill)
    • 主鍵
  • 總結

表的約束

什么是表的約束

表的約束(Constraints)是數據庫表中的規則,用于限制存儲的數據,保證數據的完整性、一致性和準確性。
下面我們講講具體的表的約束

空屬性

  • 兩個值:null(默認的)和not null(不為空)
  • 數據庫默認字段基本都是字段為空,但是實際開發時,盡可能保證字段不為空,因為數據為空沒辦法參與運算。

我們先默認創建一張表:
在這里插入圖片描述
可以看見,當我們不指定約束條件的時候,創建表時默認會給Null約束條件添加上Yes,表示這里可以插入null。我們來試試。
插入數據:
在這里插入圖片描述
我們重新創建一張設置為not null。
在這里插入圖片描述
當表的這個屬性被設置為No時,就表示不能插入Null了。

默認值

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

拿我們剛剛創建的表為例:
在這里插入圖片描述
這個約束就是默認值,如果設置了默認值,當我們插入的時候忽略這一項時,就會拿默認值當中的數據進行填充。
我們來設置一下默認值,一數據沒有默認值,一個數據有默認值。
在這里插入圖片描述
設置默認值只需要在建表的時候在后面加上default即可,我們來插入數據:
在這里插入圖片描述
可以看見這里雖然沒有設置默認值,但是默認值被默認設置為了Null,因為我們沒有設置not null,所以是會默認填入null的。
在這里插入圖片描述
當將null約束設置為not null的時候就就不能忽略了。

列描述(comment)

列描述:comment,沒有實際含義,專門用來描述字段,會根據表創建語句保存,用來給程序員或DBA
來進行了解。
列描述就類似于在我們寫代碼時的注釋。
在這里插入圖片描述

這就是列描述,用來描述這一列是用來干嘛的。

零填充(zerofill)

在 MySQL 中,ZEROFILL 是一種數值列的格式化屬性,用于自動在數值前補零,使其達到指定的寬度。

在這里插入圖片描述

我們創建一張表,不加任何約束是這樣的,當我們加上zerofill之后:
在這里插入圖片描述
可以看見,修改完zerofill約束條件之后,int后面多了一個10,后面多了一個zerofill,為什么10后面講,我們先講這個zerofill屬性添加之后有什么影響:
在這里插入圖片描述
可以看見,添加了zerofill屬性的列前面多出了很多個0,這是為什么呢,我們加上前面的0,一共有10為數,所以這個10,就是位數,當我們插入一個數的時候,如果這個數的位數小于int后面的數,那么我們會在前面自動補上0,如果這數的位數是大于int后面括號中的數時,是多少就是多少。

主鍵

**主鍵(Primary Key)**是關系數據庫中用于唯一標識表中每一行記錄的一個或多個字段的組合。
可能很多人看到這句話之后也不是很理解什么是主鍵,那么我們創建一張表,來解釋一下什么是主鍵:
在這里插入圖片描述
當我們創建表的時候,只需要在后面加上primary key,就表示這一列是主鍵,我們來插入一點數據,來具體看看主鍵是什么:
在這里插入圖片描述
我們設置的id是主鍵,當我們插入第一組值的時候,id是1,當我們插入第二組值的時候id也是1,MySQL就不讓我插入了,但是當我們插入的值是2的時候,MySQL又讓我們插入了。
所以,被設為主鍵的列當中的數據時唯一的,不能有重復。


復合主鍵
什么是復合主鍵呢,我們上面是一列是主鍵,但是主鍵不一定只有一列,可以有多列啊,這被稱為復合主鍵,我們來設置一下復合主鍵:
在這里插入圖片描述
這就是設置復合主鍵,我們來看看復合主鍵有什么特征:
在這里插入圖片描述
a和b都被設置為了主鍵。

我們來插入幾組值試試:
在這里插入圖片描述
插入三組值已經足夠說明問題了。


結論:當我們插入的被設為主鍵的值和歷史上插入過的數據都相同時,是不被允許插入的,但是當我們插入的數據只有一個是和歷史上的數據是相同的,是可以被允許的。

總結

在本文中,我們深入探討了 MySQL 中幾個常用的表約束,包括 NULL 約束、DEFAULT 約束、COMMENT 約束、主鍵約束以及 ZEROFILL 約束。這些約束在數據庫設計中扮演著至關重要的角色,通過它們可以確保數據的有效性和完整性,幫助開發者避免無效數據的插入,并提升數據表的可維護性。掌握這些約束的使用,能夠讓我們在實際開發中構建出更加健壯和清晰的數據庫結構,從而提升系統的穩定性和可擴展性。希望通過本文的介紹,大家對 MySQL 的表約束有了更深入的理解,并能夠在實際項目中靈活應用。

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

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

相關文章

【Unity網絡同步框架 - Nakama研究(三)】

文章目錄 【Unity網絡同步框架 - Nakama研究(三)】準備工作前言Unity部分連接服務器創建并進入房間創建人物人物移動和同步 【Unity網絡同步框架 - Nakama研究(三)】 以下部分需要有一定的Unity基礎,在官方的案例Pirate Panic基礎上進行修改而成。如果沒有下載并熟悉…

前端存儲-indexdb封裝:dexie.js的使用

前言 indexedDB是一個用于在瀏覽器中存儲較大數據結構的Web API,并且提供了索引功能以實現高性能查找。dexie.js是對indexdb的封裝,前端用起來很方便。在此介紹一下項目中用到的操作語句,也方便記錄。我的項目是vue3項目。 開始 1、安裝 …

【AD】6-1 PCB常用規則

間距規則: 可自行修改線寬與間距(默認10mil) 線寬規則:電源線寬加粗 布線過程中更改線寬:走線狀態下,shiftw更改線寬,線寬要在規則范圍之內過孔規則: 阻焊規則:

MyBatis 的核心配置文件是干什么的? 它的結構是怎樣的? 哪些是必須配置的,哪些是可選的?

MyBatis 的核心配置文件&#xff08;通常命名為 mybatis-config.xml&#xff09;是 MyBatis 應用程序的入口點&#xff0c;它定義了 MyBatis 的全局配置信息 。 核心配置文件的作用&#xff1a; 配置 MyBatis 的運行時行為: 通過 <settings> 標簽設置全局參數&#xff…

搜廣推校招面經四十九

tiktok廣告算法 一、倒排索引原理及Map中Key的處理 具體使用方法見【搜廣推校招面經三十六】 倒排索引&#xff08;Inverted Index&#xff09;是信息檢索系統中常用的一種數據結構&#xff0c;用于快速查找包含某個關鍵詞的文檔。以下是倒排索引的原理及Map中Key的處理方式的…

【零基礎入門unity游戲開發——unity3D篇】3D物理系統之 —— 3D剛體組件Rigidbody

考慮到每個人基礎可能不一樣,且并不是所有人都有同時做2D、3D開發的需求,所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要講解C#的基礎語法,包括變量、數據類型、運算符、流程控制、面向對象等,適合沒有編程基礎的…

C# net deepseek RAG AI開發 全流程 介紹

deepseek本地部署教程及net開發對接 步驟詳解&#xff1a;安裝教程及net開發對接全流程介紹 DeepSeekRAG 中的 RAG&#xff0c;全稱是 Retrieval-Augmented Generation&#xff08;檢索增強生成&#xff09;&#xff0c;是一種結合外部知識庫檢索與大模型生成能力的技術架構。其…

用舊的手機搭建 MQTT Broker

MQTT Broker搭建 在Android上搭建MQTT所需工具: termux 通過網盤分享的文件:termux-app_v0.118.1+github-debug_armeabi-v7a.apk 鏈接: https://pan.baidu.com/s/1Iii2szXAc02cKVGdP1EuzQ?pwd=fqsc 提取碼: fqsc 在 Termux 中使用 MQTT(Message Queuing Telemetry Trans…

b站視頻下載工具軟件怎么下載

自行配置FFMPEG環境 請優先選擇批量下載&#xff0c;會自處理視頻和音頻文件。 如果要下載更高質量請登陸。 沒有配置FFMPEG下載后會有報錯提示&#xff0c;視頻音頻文件無法合并生成mp4文件 更新批量下載標題&#xff0c;只取視頻原標題&#xff0c;B站反爬機制登陸后下載多了…

# linux有哪些桌面環境?有哪些顯示服務器協議及顯示服務器?有哪些用于開發圖形用戶界面的工具包?

linux有哪些桌面環境&#xff1f;有哪些顯示服務器協議及顯示服務器&#xff1f;有哪些用于開發圖形用戶界面的工具包&#xff1f; 文章目錄 linux有哪些桌面環境&#xff1f;有哪些顯示服務器協議及顯示服務器&#xff1f;有哪些用于開發圖形用戶界面的工具包&#xff1f;1 顯…

Java 大視界 -- Java 大數據分布式計算中的資源調度與優化策略(131)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

躲藏博弈中的策略優化:整合歷史數據、概率論與博弈論

躲藏博弈中的策略優化&#xff1a;整合歷史數據、概率論與博弈論 一、引言 躲藏博弈(Hiding Games)作為一類特殊的博弈模型&#xff0c;廣泛存在于軍事對抗、網絡安全、商業競爭甚至日常生活中。其核心在于一方(躲藏者)試圖避免被另一方(尋找者)發現&#xff0c;雙方各自選擇…

時序數據庫 TDengine 到 MySQL 數據遷移同步

簡述 TDengine 是一款開源、高性能、云原生的時序數據庫&#xff0c;專為物聯網、車聯網、工業互聯網、金融、IT 運維等場景優化設計。在工業自動化的時代&#xff0c;時序數據庫在電力、軌道交通、智能制造等領域有著廣泛的應用。 MySQL 是全球廣泛使用的開源關系型數據庫&a…

基于YOLO11深度學習的舌苔舌象檢測識別與診斷系統【python源碼+Pyqt5界面+數據集+訓練代碼】

《------往期經典推薦------》 一、AI應用軟件開發實戰專欄【鏈接】 項目名稱項目名稱1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】7.【…

【愚公系列】《高效使用DeepSeek》003-DeepSeek文檔處理和其他頂級 AI模型的區別

標題詳情作者簡介愚公搬代碼頭銜華為云特約編輯,華為云云享專家,華為開發者專家,華為產品云測專家,CSDN博客專家,CSDN商業化專家,阿里云專家博主,阿里云簽約作者,騰訊云優秀博主,騰訊云內容共創官,掘金優秀博主,亞馬遜技領云博主,51CTO博客專家等。近期榮譽2022年度…

正新雞排:在變革浪潮中領航,打造連鎖餐飲新生態

在當下風云變幻的餐飲市場中&#xff0c;連鎖品牌猶如逆水行舟&#xff0c;不進則退。作為國內坐擁萬店的知名連鎖餐飲品牌&#xff0c;正新雞排2023年賣出了7.2億片雞排&#xff0c;集團營收同比增長28%。在《2024年中國雞排連鎖品牌10強榜單》中&#xff0c;正新雞排以高達95…

MyBatis 的一級、二級緩存

文章目錄 1?? 一級緩存&#xff08;Local Cache&#xff09;&#x1f4cc; 定義&#x1f680; 示例代碼 2?? 二級緩存&#xff08;Global Cache&#xff09;&#x1f4cc; 定義&#x1f680; 使用方式 3?? 一級緩存 vs. 二級緩存 &#x1f4ca;4?? 數據共享問題&#x…

軟件性能測試與功能測試聯系和區別

隨著軟件開發技術的迅猛發展&#xff0c;軟件性能測試和功能測試成為了確保軟件質量的兩個重要環節。那么只有一字之差的性能測試和功能測試分別是什么?又有哪些聯系和區別呢? 一、軟件性能測試是什么?   軟件性能測試是為了評估軟件系統在特定條件下的表現&#xff0c;包…

Vue 框架使用難點與易錯點剖析:避開陷阱,提升開發效率

Vue.js 作為當下最流行的前端框架之一&#xff0c;以其輕量、易用和靈活的特性深受開發者喜愛。然而&#xff0c;即使是經驗豐富的開發者&#xff0c;在使用 Vue 的過程中也難免會遇到一些難點和易錯點。本文將深入分析 Vue 開發中常見的“坑”&#xff0c;并提供解決方案和代碼…

基于大模型的上瞼下垂手術全流程預測與方案優化研究報告

目錄 一、引言 1.1 研究背景與目的 1.2 研究意義 1.3 研究方法與創新點 二、上瞼下垂相關理論基礎 2.1 上瞼下垂的定義與分類 2.2 發病機制與影響 2.3 傳統治療方法概述 三、大模型技術原理與應用 3.1 大模型概述 3.2 在醫療領域的應用現狀 3.3 用于上瞼下垂預測的…