04數據庫約束實戰:從入門到精通

感謝黑馬程序員提供的免費課程

約束

概念:約束是作用于表中字段上的規則,用于限制存儲在表中的數據。

目的:保證數據庫中數據的正確、有效性和完整性。

常見的幾種約束:

注意:約束是作用于表中字段上的,可以在創建表/修改表的時候添加約束。

案例:根據需求,完成表結構的創建

CREATE TABLE user(
id int AUTO_INCREMENT PRIMARY KEY COMMENT 'id唯一標識',
name varchar(10) NOT NULL UNIQUE COMMENT '姓名',
age int CHECK(age>20 && age <=120) COMMENT '年齡',
status char(1) DEFAULT '1' COMMENT '狀態',
gender char(1) COMMENT '性別')INSERT INTO user(name,status,gender,age) VALUES ('tom1','1','男',23);
INSERT INTO user(name,status,gender,age) VALUES ('tom2','1','男',13),('tom3','1','女','32');
INSERT INTO user(name,status,gender,age) VALUES (Null,'1','男',23);
INSERT INTO user(name,status,gender,age) VALUES ('tom5',DEFAULT,'男',23);

外鍵約束

概念:
外鍵用來讓兩張表的數據之間建立連接,從而保證數據的一致性和完整性。

具體來說,外鍵關聯的目標字段需要滿足以下條件

  1. 可以是另一個表的主鍵(PRIMARY KEY)(最常見的情況)
  2. 可以是另一個表中設置了唯一約束(UNIQUE)?的字段

創建外鍵的兩種方式:

1:在創建表時添加外鍵

CREATE TABLE xx(

...

字段? ?類型? ?CONSTRAINT? 外鍵名稱? FOREIGN KEY(外鍵字段名) REFERENCES??

主表(主表列名)

...

)

2:使用alter創建外鍵

ALTER TABLE ADD CONSTRAINT?外鍵名稱? FOREIAGN KEY(外鍵字段名) REFERENCES??主表(主表列名)

刪除外鍵語法:

ALTER TABEL DROP FOREIGN KEY 外鍵名;

#創建emp01表
create table emp01(
id int auto_increment comment 'ID' primary key,
name varchar(50) not null comment '姓名',
age int comment '年齡',
job varchar(20) comment '職位',
salary int comment '薪資',
entrydate date comment '入職時間',
managerid int comment '直屬領導ID',
dept_id int comment '部門ID');
desc emp01;#插入數據
INSERT INTO emp01 (id, name, age, job, salary, entrydate, managerid, dept_id)VALUES
(1,'金庸',66,'總裁',20000,'2000-01-01', null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),
(3,'楊逍',33,'開發',8400,'2000-11-03',2,1),(4,'韋一笑',48,'開發',11000,'2002-02-05',2,1),
(5,'常遇春',43,'開發',10500,'2004-09-07',3,1),(6,'小昭',19,'程序員鼓勵師',6600,'2004-10-12',2,1);select * from emp01;#創建外鍵		
ALTER TABLE emp01 ADD CONSTRAINT fk_emp01_dept_id FOREIGN KEY(dept_id) REFERENCES dept(id); #刪除外鍵
ALTER TABLE emp01 DROP FOREIGN KEY fk_emp01_dept_id;

外鍵約束-刪除/更新行為

父表是reference關聯的表,子表是外鍵所在的表

語法:

ALTER TABLE ADD CONSTRAINT?外鍵名稱? FOREIAGN KEY(外鍵字段名) REFERENCES??主表(主表列名)ON UPDATE 行為 ON DELETE 行為

ALTER TABLE emp01 ADD CONSTRAINT fk_emp01_dept_id FOREIGN KEY(dept_id) REFERENCES dept(id) ON UPDATE SET NULL ON DELETE SET NULL; ALTER TABLE emp01 ADD CONSTRAINT fk_emp01_dept_id FOREIGN KEY(dept_id) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE; 

約束總結:

這是我的個人學習筆記,主要用于記錄自己對知識點的理解和梳理。由于目前仍在學習探索階段,內容中難免存在理解偏差或表述疏漏,懇請各位大佬不吝賜教,多提寶貴意見~ 若有不同看法,歡迎理性交流探討,感謝包容與指正!

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

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

相關文章

WPF+IOC學習記錄

最近在學WPF&#xff0c;上一篇文章記錄了WPF的MVVM自己實現和用框架的區別&#xff08;WPFMVVM入門學習&#xff09;&#xff0c;接下這篇文章記錄一下在WPF中使用IOC&#xff0c;這里演示用的是微軟官方的DependencyInjection&#xff0c;也可以用其他的第三方框架。 項目源…

從零開始學習單片機16

STM32單片機STM32和51單片機的區別51單片機的外設資源少&#xff0c;寄存器少&#xff0c;運行速度慢&#xff0c;價格便宜&#xff0c;容易上手STM32單片機的外設資源更多&#xff0c;寄存器多&#xff0c;運行速度相對快&#xff0c;價格相對貴&#xff0c;上手相對較難STM32…

[特殊字符]論一個 bug 如何經過千難萬險占領線上

謹以此文獻給每一個曾與 Bug 搏斗、最終卻目睹它成功上線的你 本文旨在揭露 Bug 的狡猾&#xff0c;絕非鼓勵以下行為。若你照做&#xff0c;后果自負&#x1f436;每一個在線上逍遙法外的 Bug&#xff0c;都不是偶然。它是一場精心策劃的奇跡&#xff0c;是開發、聯調、測試、…

Day12-python文件操作(二)

目錄前言一、Excel文檔操作1.1、xlrd和xlwt庫1.2、openpyxl庫1.3、pandas庫總結前言 今天繼續學習文件操作相關內容&#xff0c;為后續辦公自動化打基礎。 一、Excel文檔操作 1.1、xlrd和xlwt庫 如果要兼容 Excel 2007 以前的版本&#xff0c;也就是xls格式的 Excel 文件&am…

CollageIt:簡單易用的照片拼貼工具

在數字圖像處理領域&#xff0c;制作照片拼貼是一種常見的創意表達方式。CollageIt作為一款體積小巧、簡單易用的照片拼貼工具&#xff0c;能夠幫助用戶輕松將多張圖片拼合成一張精美的拼貼畫。它不僅操作簡單&#xff0c;還支持多種圖片格式&#xff0c;確保用戶可以快速制作出…

Java全棧工程師的實戰面試:從基礎到微服務的全面解析

Java全棧工程師的實戰面試&#xff1a;從基礎到微服務的全面解析 一、開場介紹 面試官&#xff1a;你好&#xff0c;歡迎來到我們公司。我是今天的面試官&#xff0c;負責技術部分的評估。請先簡單介紹一下你自己。 應聘者&#xff1a;您好&#xff0c;我叫李明&#xff0c;25歲…

驅動開發系列68 - GLSL編譯器實現 - 算數指令折疊及訪存優化

一 : 指令合并概述 指令折疊的意思,原本一個語句會產生多條指令,通過折疊,可以刪除一些中間指令,減少指令數量,并且能夠減少寄存器占用。提高執行效率。 舉一個例子: MUL A, B, 4 ; A = B * 4MAD D, A, 2, F ; D = A * 2 + F MAD G, A, 3, I ; G …

深入解析Qt節點編輯器框架:高級特性與性能優化(四)

文章目錄一、高級交互特性&#xff1a;超越基礎操作的用戶體驗提升1. 節點組管理&#xff1a;折疊與嵌套的層級組織2. 智能連接線路由&#xff1a;避免交叉與視覺混亂3. 批量操作與快捷鍵&#xff1a;提升操作效率二、性能優化&#xff1a;應對大規模節點場景的核心策略1. 圖形…

Python 入門操作指南

引言 Python 是一種簡單易學卻功能強大的編程語言,廣泛應用于數據分析、人工智能、Web 開發等領域。對于初學者而言,掌握 Python 的入門操作是邁向編程世界的第一步。本文將以總分總的結構,系統介紹 Python 的安裝方法、推薦的開發工具、第一個 Python 程序示例,以及包管理…

ZooKeeper 安裝配置

前言 有時會需要安裝開源的大數據集群進行測評或者驗證問題&#xff0c;已經裝過很多遍了&#xff0c;所以想系統的總結整理一下各個組件的安裝部署&#xff0c;包括 Zookeeper、Hadoop、Hive、Spark 等。 版本 Zookeeper 3.5.6 3.8.4 3.9.3 初始化 包括主機名修改、SSH互…

考研數據結構Part3——二叉樹知識點總結

一、前言 二叉樹是一種特殊的樹形結構&#xff0c;每個節點最多有兩個子節點&#xff0c;分別稱為左子樹和右子樹。其特點是子樹有嚴格的左右之分&#xff0c;順序不可顛倒。從歷年真題來看&#xff0c;二叉樹的鏈式存儲實現、遍歷算法、屬性統計是高頻考點&#xff0c;常以選擇…

網絡與信息安全有哪些崗位:(12)威脅分析師

今天是七夕節&#xff0c;首先祝大家早遇良緣、有情人終成眷屬&#xff01;&#xff01;七夕節快樂、工作順利、學業有成~~ 想知道網絡與信息安全領域有哪些具體崗位嗎&#xff1f;此前我們已陸續介紹網絡安全工程師、滲透測試工程師、SOC 總監、SOC 工具運維工程師等核心角色&…

mysql雙機熱備(主主模式)

一、環境準備 主機名ip操作系統備注node01192.168.48.91CentOS Linux 7 (Core)mysql主庫node01192.168.48.92CentOS Linux 7 (Core)mysql主庫192.168.48.90漂移IP&#xff08;VIP&#xff09; centos7鏡像下載地址&#xff1a; https://mirrors.aliyun.com/centos/7.9.2009/…

微積分 | 積分代換

注&#xff1a;本文為 “微積分 | 積分代換法 ” 相關合輯。 英文引文&#xff0c;機翻未校&#xff0c; 中文引文&#xff0c;略作重排。 未去重&#xff0c;如有內容異常&#xff0c;請看原文。 Integration by Substitution 積分代換法 May 23, 2018 / By Dave Peterson …

循環高級(1)

1.無限循環2.break3.coutinue4.練習1 打印矩形&#xff08;循環嵌套&#xff09;5.練習2 打印直角三角形#include<stdio.h> int main() {/*打印一個5行5列的三角形效果如下&#xff1a;***** ***** ***** ***** *****…

vpp開啟nat,分片包丟包問題分析與解決

現象描述兩個網口都開啟nat output-feature&#xff0c;路由模式進行大包轉發&#xff0c;網絡不同&#xff0c;小包轉發沒問題。通過trace發現&#xff0c;在nat44-ed-in2out-output-slowpath節點丟包。Packet 503:50:43:447292: handoff_traceHANDED-OFF: from thread 2 trac…

深入解析交換機端口安全:Sticky MAC的工作原理與應用實踐

深入解析交換機端口安全&#xff1a;Sticky MAC的工作原理與應用實踐在當今企業網絡環境中&#xff0c;未授權設備接入是常見的安全威脅之一&#xff0c;而Sticky MAC技術正是解決這一問題的利器。在網絡安全管理中&#xff0c;端口安全是保護網絡基礎設施的第一道防線。Sticky…

AI接管瀏覽器:Anthropic發布Claude for Chrome,是效率革命還是安全噩夢?

AI智能體&#xff08;Agent&#xff09;的競賽&#xff0c;正在以超乎想象的速度進入白熱化階段。 就在上個月&#xff0c;OpenAI剛剛憑借ChatGPT Agent&#xff0c;向世界展示了AI在云端遠程操作電腦、制作PPT的強大能力。而現在&#xff0c;它的老對手Anthropic&#xff0c;…

LFI-labs靶場通關教程

目錄 CMD01-06 pass01 pass02 pass03 pass04 pass05 pass06 HDR-1 hdr-1 LFI-01-14 pass01 pass02 pass03 pass04 pass05 pass06 pass07 pass08 pass09 pass10 pass11 pass12 pass13 pass14 CMD01-06 pass01 看看源碼, 這里顯示的是一個get參數cmd,并…

隨機森林的 “Bootstrap 采樣” 與 “特征隨機選擇”:如何避免過擬合?(附分類 / 回歸任務實戰)

隨機森林的 “Bootstrap 采樣” 與 “特征隨機選擇”&#xff1a;如何避免過擬合&#xff1f;&#xff08;附分類 / 回歸任務實戰&#xff09; 第一部分&#xff1a;揭開隨機森林的神秘面紗 1.1 告別“過擬合”&#xff0c;擁抱更強大的模型 在機器學習的旅程中&#xff0c;…