SQL學習筆記4

約束

1、約束

約束,是指作用在表中字段上的規則,用于限制字段輸入的數據,使得表格式統一,數據內容正確。同一個字段的約束可以有多個

約束包括:

非空約束,限制表中的值不為null:not?null

唯一約束:同一個字段的值不重復:unique

主鍵約束:一行數據的唯一標識,非空且唯一:primary key

默認約束:若字段的值為空,則使用默認值:default

檢查約束:保證字段值符合某一個條件:check(條件)

約束的語法為:字段名 字段類型 約束1 約束2……[comment]

create table cusinfo(id int primary key auto_increment comment'序號',name varchar(20) not null comment '姓名',sex varchar(10) check(sex='男'||sex='女'||sex='未知') default '未知' comment '性別',age int check (age>=0&&age<=120)comment '年齡',birthday date  check ( birthday <= '2025-6-27')  comment '生日',phone varchar(20) check(length(phone)=11) unique comment '電話',address varchar(50) comment '地址'
)comment='用戶信息表';insert into cusinfo values(null,'張三','男',18,'1999-01-01','13888888888','北京'),
(null,'李四','女',19,'1998-01-01','13888888889','上海'),
(null,'王五','未知',20,'1997-01-01','13888888890','廣州'),
(null,'趙六','男',21,'1996-01-01','13888888891','深圳'),
(null,'孫七','女',22,'1995-01-01','13888888892','杭州'),
(null,'周八','男',23,'1994-01-01','13888888893','西安'),
(null,'吳九','女',24,'1993-01-01','13888888894','武漢'),
(null,'鄭十','男',25,'1992-01-01','13888888895','南京');

2、外鍵約束(不常用)

兩張表在數據庫層面建立連接的約束,使得兩張表的完整與統一,外鍵連接最常用的方法是在子表中創建一個子id,然后去連接父表的主鍵

添加外鍵:在創建表格時添加:create table 表名(

字段名 數據類型 ,

……

[constraint] [外鍵名稱] foreign key (外鍵字段名) reference 父表 父表字段名

創建表后在表中增加一個外鍵: alter table 表名 [add constraint fk_子表名_父表名]?foreign key (父表名_外鍵字段名 )references 父表名 (父表字段名)

create table serinfo(id int primary key  comment'序號',level varchar(10) comment'等級'
)comment '用戶等級表';insert into serinfo values(1,'普通會員'),(2,'高級會員'),(3,'VIP會員');alter table cusinfo add column serinfo_id int comment '等級id';update cusinfo set serinfo_id=1 where id=1;
update cusinfo set serinfo_id=2 where id=2;
update cusinfo set serinfo_id=1 where id=3;
update cusinfo set serinfo_id=3 where id=4;
update cusinfo set serinfo_id=2 where id=5;
update cusinfo set serinfo_id=3 where id=6;
update cusinfo set serinfo_id=1 where id=7;
update cusinfo set serinfo_id=3 where id=8;
update cusinfo set serinfo_id=2 where id=9;alter table cusinfo add constraint fk_cusinfo_serinfo foreign key (serinfo_id) references serinfo(id);

刪除外鍵

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

alter table cusinfo drop foreign key fk_cusinfo_serinfo;

外鍵的刪除更新行為約束

在創建外鍵時可以語句后增加一個約束更新、刪除的語法:alter table 表名 [add constraint fk_子表名_父表名]?foreign key (父表名_外鍵字段名 )references 父表名 (父表字段名)on update 行為 on delete 行為

外鍵的更新/刪除行為有:

當在父表中刪除/更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許刪除/更新:no action #默認存在

當在父表中刪除/更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許刪除/更新:

restrict #默認存在,與no action一致

將父表與子表級聯:當在父表中刪除/更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有,則也刪除/更新外鍵在子表中的記錄:cascadeas

當在父表中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則設置子表中該外鍵值為null: set null

alter table cusinfo add constraint fk_cusinfo_serinfo foreign key (serinfo_id) references serinfo(id) on delete cascade on update cascade;alter table cusinfo add constraint fk_cusinfo_serinfo foreign key (serinfo_id) references serinfo(id) on delete set null;

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

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

相關文章

力扣刷題(第七十天)

靈感來源 - 保持更新&#xff0c;努力學習 - python腳本學習 比特位計數 解題思路 對于任意整數 x&#xff0c;其 1 的個數等于 x // 2 的 1 的個數加上 x % 2。狀態轉移方程&#xff1a;dp[x] dp[x // 2] (x % 2)。 class Solution:def countBits(self, n: int) ->…

鴻蒙網絡編程系列56-倉頡版通過數據包結束標志解決TCP粘包問題

1. TCP粘包問題解決思路 在本系列的上一篇文章演示了TCP數據粘包的原因以及可能的解決方法&#xff0c;本文將通過其中的添加數據包結束標志的方法來解決這個問題。我們知道&#xff0c;數據粘包的原因是因為發送的時候沒有標明數據包的邊界&#xff0c;那么&#xff0c;我們人…

Redis網絡通信模塊深度解析:單線程Reactor到多線程IO的架構演進

一、核心架構&#xff1a;單線程Reactor模型 Redis網絡模塊采用經典Reactor模式&#xff0c;核心流程如下&#xff1a; void aeMain(aeEventLoop *eventLoop) {while (!eventLoop->stop) {// 前置鉤子&#xff08;集群心跳/數據持久化&#xff09;if (eventLoop->befor…

PILCO: 基于模型的高效策略搜索方法原理解析

PILCO: 基于模型的高效策略搜索方法原理解析 PILCO (Probabilistic Inference for Learning Control) 是一種基于模型的強化學習算法&#xff0c;由Marc Deisenroth和Carl Rasmussen于2011年提出。該算法在數據效率方面表現出色&#xff0c;能夠以極少的樣本數據實現有效學習。…

大語言模型訓練中的自監督學習和其他訓練方式

大語言模型訓練中的自監督學習和其他訓練方式。 自監督學習&#xff08;Self-Supervised Learning&#xff09; 1. 什么是自監督學習&#xff1f; 自監督學習是一種不需要人工標注數據的訓練方式&#xff0c;模型從數據本身學習特征和模式。 在語言模型中的具體實現&#x…

[mcp-servers] 工具與資源 | 模型上下文協議MCP | 錨點分類

第三章&#xff1a;工具與資源 歡迎回來&#xff01; 在之前的旅程中&#xff0c;我們認識了客戶端&#xff08;第一章&#xff1a;客戶端&#xff09;——AI的信使組件 以及MCP服務器&#xff08;第二章&#xff1a;MCP服務器&#xff09;——接收請求并具備執行能力的智能助…

2025年06月27日Github流行趨勢

項目名稱&#xff1a;edit 項目地址 url&#xff1a;https://github.com/microsoft/edit項目語言&#xff1a;Rust歷史 star 數&#xff1a;10807今日 star 數&#xff1a;411項目維護者&#xff1a;lhecker, DHowett, b6k-dev, rhysd, MingcongBai項目簡介&#xff1a;我們都編…

Camera Api 2 和 OPEN GL ES 使用(顯示濾鏡效果)

Camera Api 2 和 OPEN GL ES 使用&#xff08;顯示濾鏡效果&#xff09; 相機預覽和open GL 使用實現濾鏡效果 代碼 https://github.com/loggerBill/camera 相機預覽 1.相機動態權限 <uses-permission android:name"android.permission.CAMERA" /><uses-f…

CAS教務系統單點登錄分析

1. 核心 URL 結構 GET /authserver/login?servicehttp%3A%2F%2F192.168.254.188%2Fjsxsd%2Fframework%2FxsMainV.htmlx認證服務器&#xff1a;authserver.XXXX.edu.cn&#xff08;典型 CAS 系統&#xff09;目標服務&#xff1a;http://192.168.254.188/jsxsd/framework/xsMa…

利用云霧自動化在智能無人水面航行器中實現自主碰撞檢測和分類

大家覺得有讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; 抽象 工業信息物理系統 &#xff08;ICPS&#xff09; 技術是推動海上自主化的基礎&#xff0c;尤其是對于無人水面航行器 &#xff08;USV&#xff09;。然而&#xff0c;船上計算限制和通信延遲…

AI+物聯網:從萬物互聯到萬物智聯

AI物聯網&#xff1a;從萬物互聯到萬物智聯的范式革命 當農田傳感器自主決策灌溉時機&#xff0c;當咖啡機根據睡眠數據調節濃度&#xff0c;當城市交通系統在擁堵發生前主動干預——這些場景不再是科幻想象&#xff0c;而是2025年AIoT&#xff08;人工智能物聯網&#xff09;…

Python爬蟲實戰:研究Levenshtein庫相關技術

1. 引言 1.1 研究背景與意義 隨著電子商務的快速發展,網絡上積累了海量的產品數據。這些數據來自不同的電商平臺、賣家,存在著產品名稱不統一、規格描述差異大等問題,給數據整合、價格比較、競品分析等應用帶來了極大挑戰。傳統的精確匹配方法無法處理產品名稱中的拼寫錯誤…

MySQL 總是差八個小時,如何破?

MySQL 總是差八個小時&#xff0c;如何破&#xff1f;_mysql__江南一點雨-Byzer 白澤 解決 SpringBoot 應用中 MySQL 時區配置引起的時間不一致問題 - 路有所思 - 博客園

iOS 為圖片添加水印

(instancetype)waterMarkWithImage:(UIImage *)image andMarkImageName:(NSString *)markName{ UIImage *watermarkImage [UIImage imageNamed:markName]; if (!watermarkImage) { NSLog("水印圖片加載失敗: %", markName); return image; } // 獲取原圖尺寸和方向 …

藍牙工作頻段與跳頻擴頻技術(FHSS)詳解:面試高頻考點與真題解析

藍牙技術憑借其低功耗、短距離通信的特性,已成為物聯網、智能穿戴等領域的核心技術之一。其核心競爭力在于對 2.4GHz ISM 頻段的高效利用與跳頻擴頻技術(FHSS)的創新應用。本文將系統梳理藍牙工作頻段與 FHSS 的高頻考點,并結合歷年真題與解析,快速掌握核心知識,輕松應對…

ArkTS與倉頡開發語言:鴻蒙編程的雙子星

前言 鴻蒙是多語言生態&#xff0c;ArkTS、倉頡和 C/C充分互補。ArkTS 是動態類型編程語言&#xff0c;主打易學易用、生態豐富、極簡開發、持續創新四大特征&#xff1b;倉頡是靜態類型編程語言&#xff0c;主打高性能、強安全、跨平臺、智能化等特性。為滿足不同業務場景訴求…

怎么把本地倉庫push 到gitlab 上

1. 首先 我們需要再gitlab 上建立一個group &#xff0c; &#xff08;group 可也設定是public 還是private&#xff09;&#xff0c;public 可以不用用戶密碼用 https 下載 2. 再gitlab 的group 下 建立一個倉庫 &#xff08;pulbic/private) 如何刪除 一個倉庫&#xff08;…

論文筆記(八十六)V-HOP: Visuo-Haptic 6D Object Pose Tracking

V-HOP: Visuo-Haptic 6D Object Pose Tracking 文章概括摘要1. 引言2.背景A. 問題定義B. 觸覺表示基于單元陣列的傳感器基于視覺的傳感器 3. 方法學A. 手爪表示B. 物體表示C. 網絡設計D. 訓練范式 IV. 實驗A. 多形態數據集B. 位姿跟蹤比較C. 模態消融D. 融合策略消融E. 遮擋對性…

[論文閱讀] (40)CCS24 PowerPeeler:一種通用的PowerShell腳本動態去混淆方法

《娜璋帶你讀論文》系列主要是督促自己閱讀優秀論文及聽取學術講座&#xff0c;并分享給大家&#xff0c;希望您喜歡。由于作者的英文水平和學術能力不高&#xff0c;需要不斷提升&#xff0c;所以還請大家批評指正&#xff0c;非常歡迎大家給我留言評論&#xff0c;學術路上期…

DeepSeek工具對AI編程幫助

一、技術架構&#xff1a;混合專家模型&#xff08;MoE&#xff09;的顛覆性優勢 DeepSeek的核心競爭力源于其混合專家模型架構&#xff08;Mixture of Experts&#xff09;&#xff1a; 參數規模&#xff1a;6710億參數&#xff0c;每個token僅激活37億參數&#xff0c;實現超…