mysql 02 數據庫的約束

為防止錯誤的數據被插入到數據表,MySQL中定義了一些維護數據庫完整性的規則;這些規則常稱為表的約束。常見約束如下:

在這里插入圖片描述
主鍵約束
主鍵約束即primary key用于唯一的標識表中的每一行。被標識為主鍵的數據在表中是唯一的且其值不能為空。這點類似于我們每個人都有一個身份證號,并且這個身份證號是唯一的。
主鍵約束基本語法:

字段名 數據類型 primary key;

設置主鍵約束(primary key)的第一種方式
示例:MySQL命令:

create table student(
id int primary key,
name varchar(20)
);

非空約束
非空約束即 NOT NULL指的是字段的值不能為空,基本的語法格式如下所示:

字段名 數據類型 NOT NULL;

示例:MySQL命令:

create table student02(
id int
name varchar(20) not null
);

默認值約束
默認值約束即DEFAULT用于給數據表中的字段指定默認值,即當在表中插入一條新記錄時若未給該字段賦值,那么,數據庫系統會自動為這個字段插人默認值;其基本的語法格式如下所示:

字段名 數據類型 DEFAULT 默認值;

示例:MySQL命令:

create table student03(
id int,
name varchar(20),
gender varchar(10) default 'male'
);

唯一性約束
唯一性約束即UNIQUE用于保證數據表中字段的唯一性,即表中字段的值不能重復出現,其基本的語法格式如下所示:

字段名 數據類型 UNIQUE; 

示例:MySQL命令:

create table student04(
id int,
name varchar(20) unique
);

外鍵約束
外鍵約束即FOREIGN KEY常用于多張表之間的約束。基本語法如下:

-- 在創建數據表時語法如下:
CONSTRAINT 外鍵名 FOREIGN KEY (從表外鍵字段) REFERENCES 主表 (主鍵字段)
-- 將創建數據表創號后語法如下:
ALTER TABLE 從表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (從表外鍵字段) REFERENCES 主表 (主鍵字段);

示例:創建一個學生表 MySQL命令:

create table student05(
id int primary key,
name varchar(20)
);

示例:創建一個班級表 MySQL命令:

create table class(
classid int primary key,
studentid int
);

示例:學生表作為主表,班級表作為副表設置外鍵, MySQL命令:

alter table class add constraint fk_class_studentid foreign key(studentid) references student05(id);

數據一致性概念
大家知道:建立外鍵是為了保證數據的完整和統一性。但是,如果主表中的數據被刪除或修改從表中對應的數據該怎么辦呢?很明顯,從表中對應的數據也應該被刪除,否則數據庫中會存在很多無意義的垃圾數據。

刪除外鍵
語法如下:

alter table 從表名 drop foreign key 外鍵名;

示例:刪除外鍵 MySQL命令:

alter table class drop foreign key fk_class_studentid;

關于外鍵約束需要注意的細節
1、從表里的外鍵通常為主表的主鍵
2、從表里外鍵的數據類型必須與主表中主鍵的數據類型一致
3、主表發生變化時應注意主表與從表的數據一致性問題

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

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

相關文章

前后端分離------后端創建筆記(10)用戶修改

本文章轉載于【SpringBootVue】全網最簡單但實用的前后端分離項目實戰筆記 - 前端_大菜007的博客-CSDN博客 僅用于學習和討論,如有侵權請聯系 源碼:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

Spring Boot實現第一次啟動時自動初始化數據庫流程詳解

隨著互聯網的發展項目中的業務功能越來越復雜,有一些基礎服務我們不可避免的會去調用一些第三方的接口或者公司內其他項目中提供的服務,但是遠程服務的健壯性和網絡穩定性都是不可控因素。 在測試階段可能沒有什么異常情況,但上線后可能會出…

https證書獲取的方法及好處

我們常說的https證書其實就是ssl證書,眼下為網站部署https證書是保障網站安全必不可少的一步。而https證書該如何獲取呢?下面就簡單介紹一下https證書獲取的方法。 https證書獲取途徑有兩種:自己簽發和由受信任的CA機構簽發。 自己給自己簽…

全國三網優惠話費充值接口開發指南

一、文檔綜述 近期想做項目的看過來~三網(全國移動、聯通、電信)話費、電費充值接口能夠實現將接口接入到小程序或者app上面,通過接口提交號碼和金額進行充值,可以幫助相關人員快速完成接口對接與聯調,平臺用戶可以通…

設計HTML5文本

網頁文本內容豐富、形式多樣,通過不同的版式顯示在頁面中,為用戶提供最直接、最豐富的信息。HTML5新增了很多文本標簽,它們都有特殊的語義,正確使用這些標簽,可以讓網頁文本更嚴謹、更符合語義。 1、通用文本 1.1、標…

算法競賽備賽之搜索與圖論訓練提升,暑期集訓營培訓

目錄 1.DFS和BFS 1.1.DFS深度優先搜索 1.2.BFS廣度優先搜索 2.樹與圖的遍歷:拓撲排序 3.最短路 3.1.迪杰斯特拉算法 3.2.貝爾曼算法 3.3.SPFA算法 3.4.多源匯最短路Floy算法 4.最小生成樹 4.1.普利姆算法 4.2.克魯斯卡爾算法 5.二分圖:染色法…

7. CSS(四)

目錄 一、浮動 (一)傳統網頁布局的三種方式 (二)標準流(普通流/文檔流) (三)為什么需要浮動? (四)什么是浮動 (五)浮…

OpenAI全球招外包大軍,手把手訓練ChatGPT取代碼農 ; 碼農:我自己「殺」自己

目錄 前言 OpenAI招了一千多名外包人員,訓練AI學會像人類一樣一步步思考。如果ChatGPT「學成歸來」,碼農恐怕真的危了? 碼農真的危了! 當時OpenAI也說,ChatGPT最合適的定位,應該是編碼輔助工具。 用Cha…

常用的Elasticsearch查詢DSL

1.基本查詢 GET /index_name/_search {"query": {"match": {"dispatchClass": "1"}} }2.多條件查詢 GET /index_name/_search {"query": {"bool": {"must": [{"match": {"createUser&…

計算機競賽 opencv 圖像識別 指紋識別 - python

0 前言 🔥 優質競賽項目系列,今天要分享的是 🚩 基于機器視覺的指紋識別系統 🥇學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分工作量:3分創新點:4分 該項目較為新穎,適…

Vue引入Echarts報錯 import * as echarts from “echarts“;

項目場景: 已經下載好echarts cnpm i echarts Vue引入Echarts import echarts from echarts mounted() {this.myChart echarts.init(document.querySelector(.right))this.myChart.setOption({title: {text: 消費列表,left: center},...問題描述 原因分析&#…

【100天精通python】Day38:GUI界面編程_PyQT從入門到實戰(中)

目錄 專欄導讀 4 數據庫操作 4.1 連接數據庫 4.2 執行 SQL 查詢和更新: 4.3 使用模型和視圖顯示數據 5 多線程編程 5.1 多線程編程的概念和優勢 5.2 在 PyQt 中使用多線程 5.3 處理多線程間的同步和通信問題 5.3.1 信號槽機制 5.3.2 線程安全的數據訪問 Q…

日常BUG——通過命令行創建vue項目報錯

😜作 者:是江迪呀??本文關鍵詞:日常BUG、BUG、問題分析??每日 一言 :存在錯誤說明你在進步! 一、問題描述 在使用vue命令行創建一個vue項目時,出現一下的錯誤: vue create my…

UDP數據報結構分析(面試重點)

在傳輸層中有UDP和TCP兩個重要的協議,下面將針對UDP數據報的結構進行分析 UDP結構圖示 UDP報頭結構的分析 UDP報頭有4個屬性,分別是源端口,目的端口,UDP報文長度,校驗和,它們都占16位2個字節,所…

.devos勒索病毒解密方法|勒索病毒解決|勒索病毒恢復|數據庫修復

導言: 隨著科技的迅猛發展,網絡安全問題也日益凸顯。近期,一種名為 .devos 的勒索病毒在網絡安全領域引起了廣泛的關注和警惕。本文91數據恢復將 探討如何解密被其加密的數據文件,并提供預防措施以避免受到類似威脅的侵害。 如不幸…

【java面向對象中static關鍵字】

提綱 static修飾成員變量static修飾成員變量的應用場景static修飾成員方法static修飾成員方法的應用場景static的注意事項static的應用知識:代碼塊static的應用知識:單例設計模式 static靜態的意思,可以修飾成員變量,成員方法&a…

FPGA_學習_14_第一個自寫模塊的感悟和ila在線調試教程與技巧(尋找APD的擊穿偏壓)

前一篇博客我們提到了,如果要使用算法找到Vbr,通過尋找APD采集信號的噪聲方差的劇變點去尋找Vbr是一個不錯的方式。此功能的第一步是在FPGA中實現方差的計算,這個我們已經在上一篇博客中實現了。 繼上一篇博客之后,感覺過了很久了…

【Image captioning】ruotianluo/self-critical.pytorch之1—數據集的加載與使用

【Image captioning】ruotianluo/self-critical.pytorch之1—數據集的加載與使用 作者:安靜到無聲 個人主頁 數據加載程序示意圖 使用方法 示例代碼 #%%from __future__ import absolute_import from __future__ import division from __future__ import print_…

Flink-網絡流控及反壓剖析

參考: Apache Flink學習網

開源,微信小程序 美食便簽地圖(FoodNoteMap)的設計與開發

目錄 0 前言 1 美食便簽地圖簡介 2 美食便簽地圖小程序端開發 2.1技術選型 2.2前端UI設計 2.3主頁界面 2.4個人信息界面 2.5 添加美食界面 2.6美食便簽界面 2.8 美食好友界面 2.9 美食圈子界面 2.10 子頁面-店鋪詳情界面 2.11 后臺數據緩存 2.12 訂閱消息通知 2.1…