MySQL數據庫表的約束類型和使用

表完整約束性

約束條件						說明
PRIMARY KEY (PK)		標識該字段為該表的主鍵,是可以唯一的標識記錄,不可以為空 UNIQUE+NOT NULL
(primary key)
FOREIGN KEY (FK)		標識該字段為該表的外鍵,實現表與表之間的關聯
(foreign key)
NULL                    標識該字段是否允許為空,默認為NULL。
(null)
NOT NULL			    標識該字段不能為空,可以修改。
(not null)
UNIQUE KEY  (UK)		標識該字段的值是唯一的,可以為空,一個表中可以有多個UNIQUE KEY
(unique key)
AUTO_INCREMENT		    標識該字段的值自動增長(整數類型,而且為主鍵)
(auto_increment)
DEFAULT				    為該字段設置默認值
(default)
UNSIGNED                無符號,正數
(unsigend)

修改字段是否為空的約束

mysql> desc t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(12) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
| sex   | char(2)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> alter  table t1 modify name varchar(12) not null;
mysql>alter table t1 modify name varcahr(12) null;
#修改該字段不允許為空 null為允許該字段為空
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
  1. 是否允許為空,默認NULL,可設置NOT NULL,字段不允許為空,必須賦值
  2. 字段是否有默認值,缺省的默認值是NULL,如果插入記錄時不給字段賦值,此字段使用默認值
    sex enum(‘male’,‘female’) not null default ‘male’ #只能選擇maie和female,不允許為空,默認是male
mysql> create table 表名(id int(5),name varchar(10),sex enum('male','female') not null default 'male');
### 設置enum的默認值為male
取消默認值
mysql> alter table 表名 alter column 字段 drop default;
##取消表中該字段的默認值

實現表值的自動增長

mysql> create table 表名()
  • auto_increment 自動增長約束。
    自增--------自動編號,且必須與主鍵組合使用默認情況下,起始值為1,每次的增量為1。當插入記錄時,如果為AUTO_INCREMENT數據列明確指定了一個數值,則會出現兩種情況:
  • 如果插入的值與已有的編號重復,則會出現出錯信息,因為AUTO_INCREMENT數據列的值必須是唯一的;
  • 如果插入的值大于已編號的值,則會把該插入到數據列中,并使在下一個編號將從這個新值開始遞增。

(每張表只能有一個字段為自曾) (成了key才可以自動增長)

mysql> create table t2(id int unique key auto_increment,name varchar(5));
#指定id字段自動增長。
(unique key 指定字段唯一性) (auto_increment 指定該字段數值自動增長。)
刪除自動增長
mysql> alter table 表名 modify column 字段 int;
#重新定義id字段類型即可刪除自動增長約束。

主鍵

每張表里只能有一個主鍵,不能為空,而且唯一,主鍵保證記錄的唯一性,主鍵自動為NOT NULL。
一個UNIQUE KEY 又是一個NOT NULL的時候,那么它被當做PRIMARY KEY主鍵。
定義兩種方式:
#表存在,添加約束
mysql> alter table 表名 add primary key (字段);創建表并指定約束
mysql> create table 表名(字段 char(20),字段2 char(150),primary key(字段));
刪除主鍵
mysql> alter table 表名  drop  primary key;
## 刪除的僅是主鍵不會刪除該字段的唯一性,需要額外執行刪除唯一性約束sql語句。

唯一性約束

設置唯一約束 UNIQUE,字段添加唯一約束之后,該字段的值不能重復,也就是說在一列當中不能出現一樣的值

mysql> create table 表名(字段 int unique);
為字段添加唯一性約束。
刪除唯一約束:
在 MySQL 中,UNIQUE 約束會被視為一個唯一索引,因此需使用 DROP INDEX:
mysql> alter table t3 drop index 字段;
或者
mysql> alter table t3 drop key 字段;

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

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

相關文章

Java 線程詳解 --線程概念、線程池、線程同步與安全機制

一、Java線程的概念 Java 線程的本質:每個線程對應一個操作系統線程,由操作系統調度。JVM 通過調用操作系統 API(如 Linux 的 pthread)創建線程。 關鍵點: ? 用戶態與內核態:線程調度依賴操作系統&#…

PCL 計算點云至平面距離(SIMD加速)

文章目錄 一、簡介二、實現代碼三、實現效果一、簡介 SIMD 是一種并行計算模型,其中“單指令”表示處理器在同一時刻執行相同的指令,而“多數據”則表示同一條指令操作多個數據元素(如數組中的多個元素或矩陣中的多個元素)。與傳統的串行計算不同,SIMD 能夠同時處理多個數…

Ubuntu 22.04 完美安裝 ABAQUS 教程:從零到上手,解決兼容問題

教程概述與安裝準備 本教程詳細介紹了在 Ubuntu 22.04 系統上安裝 ABAQUS 2023 及 ifort 2021 的步驟,并實現用戶子程序的鏈接。教程同樣適用于 ABAQUS 2021(需相應調整文件名和路徑)以及 Ubuntu 18.04 至 22.04 系統,盡管未在所有版本上測試。需要注意的是,Intel 的 One…

Spark-TTS(Text-to-Speech):基于大語言模型的語音合成革新者!!!

Spark-TTS:基于大語言模型的語音合成革新者 🚀 (全稱解析 核心特性 行業影響全解讀) 一、概念定義與技術定位 1. 英文全稱 Spark-TTS: An Efficient LLM-Based Text-to-Speech Model ? 關鍵詞解析: ? LLM-Based…

2025年十六屆藍橋杯Python B組原題及代碼解析

相關試題可以在洛谷上測試用例: 2025 十六屆 藍橋杯 Python B組 試題 A:攻擊次數 答案:103 print(103)代碼: # 初始化敵人的血量 x 2025# 初始化回合數 turn 0# 模擬攻擊過程 while x > 0:# 回合數加一turn 1# 第一個英…

Spring Boot項目中結合MyBatis實現MySQL的自動主從切換

原理解析 1. MySQL主從復制(Master-Slave Replication) 工作原理:MySQL主從復制通過二進制日志(binary log)來同步數據。主服務器記錄所有更改操作到二進制日志中,從服務器讀取這些日志并執行相應的SQL語…

【經驗記錄貼】使用配置文件提高項目的可維護性

mark一下。 整體修改前后如下: 課題: 在項目中有一個支持的文件類型的FILE_TYPE的定義, 這個是寫死在主程序中,每次增加可以支持的文件類型的時候,都需要去修改主程序中這個FILGE_TYPE的定義。 主程序修改其實不太花時…

用DeepSeek AI高效制作專業PPT

在當今職場中,制作精美而有力的PPT是展示想法、匯報工作和贏得機會的關鍵技能。然而,許多人花費過多時間在格式調整和內容組織上,而非專注于核心信息的傳達。DeepSeek AI作為新一代智能助手,能夠幫助您將PPT制作效率提升300%,同時顯著提高專業度。本文將詳細介紹如何利用D…

【AI學習從零至壹】語?模型及詞向量相關知識

語?模型及詞向量相關知識 ?然語?處理簡介?然語?理解(NLU)?然語??成(NLG)發展趨勢信息檢索技術布爾檢索與詞袋模型基于相關性的檢索 / TF-IDF舉例: 語?模型 / Language Model神經?絡語?模型Word2Vec訓練?法…

15.【.NET 8 實戰--孢子記賬--從單體到微服務--轉向微服務】--單體轉微服務--如何拆分單體

單體應用(Monolithic Application)是指將所有功能模塊集中在一個代碼庫中構建的應用程序。它通常是一個完整的、不可分割的整體,所有模塊共享相同的運行環境和數據庫。這種架構開發初期較為簡單,部署也較為方便,但隨著…

在ARM架構Mac上部署Python 3.12與Conda環境的全鏈路指南!!!

在ARM架構Mac上部署Python 3.12與Conda環境的全鏈路指南 🚀 (M1/M2芯片實測|含性能調優避坑手冊) 🌟 核心價值點 ? 原生ARM支持:突破Rosetta轉譯的性能損耗 ? 環境隔離:Conda虛擬環境管理多…

yml文件上傳并映射到實體類

文章目錄 功能背景功能需要前端開發組件選用組件嵌套和參數綁定上傳邏輯示例 后端開發接收邏輯解析邏輯省流純手動實現(不建議) 功能背景 開發一個配置文件解析功能,需要兼容老版本的配置文件。 功能需要 前端:兩個配置文件分別…

ElasticSearch中常用的數據類型

一、映射 Elasticsearch中通過映射來指定字段的數據類型,映射方式有2種,靜態映射和動態映射。 1.動態映射 使用動態映射時,無須指定字段的數據類型,Elasticshearch會自動根據字段內容來判斷映射到哪個數據類型。 比如&#xff…

【神經網絡結構的組成】深入理解 轉置卷積與轉置卷積核

🌈 個人主頁:十二月的貓-CSDN博客 🔥 系列專欄: 🏀《深度學習理論直覺三十講》_十二月的貓的博客-CSDN博客 💪🏻 十二月的寒冬阻擋不了春天的腳步,十二點的黑夜遮蔽不住黎明的曙光 …

CSS高度坍塌?如何解決?

一、什么是高度坍塌? 高度坍塌(Collapsing Margins)是指當父元素沒有設置邊框(border)、內邊距(padding)、內容(content)或清除浮動時,其子元素的 margin 會…

Web前端開發——格式化文本與段落(上)

一、學習目標 網頁內容的排版包括文本格式化、段落格式化和整個頁面的格式化,這是設計個網頁的基礎。文本格式化標記分為字體標記、文字修飾標記。字體標記和文字修飾標記包括對于字體樣式的一些特殊修改。段落格式化標記分為段落標記、換行記、水平分隔線標記等。…

關于PHP開源CMS系統ModStart的詳細介紹及使用指南

關于PHP開源CMS系統ModStart的詳細介紹及使用指南: 🔍 ModStart是什么? 基于Laravel框架開發的模塊化CMS系統采用Apache 2.0 開源協議,完全免費可商用特別適合需要快速搭建企業級網站/管理系統的開發者 🚀 核心優勢…

TCP標志位抓包

說明 TCP協議的Header信息,URG、ACK、PSH、RST、SYN、FIN這6個字段在14字節的位置,對應的是tcp[13],因為字節數是從[0]開始數的,14字節對應的就是tcp[13],因此在抓這幾個標志位的數據包時就要明確范圍在tcp[13] 示例1…

RK3588S開發板將SPI1接口改成GPIO

參考官方教程:ROC-RK3588S-PC 一.基本知識: 1.GPIO引腳計算: ROC-RK3588S-PC 有 5 組 GPIO bank:GPIO0~GPIO4,每組又以 A0~A7, B0~B7, C0~C7, D0~D7 作為編號區分,常用以下公式計算引腳:GPIO…

Java 設計模式:適配器模式詳解

Java 設計模式:適配器模式詳解 適配器模式(Adapter Pattern)是一種結構型設計模式,它通過將一個類的接口轉換為客戶端期望的另一個接口,使原本不兼容的類能夠協同工作。適配器模式就像現實生活中的電源適配器&#xf…