MySQL學習筆記-約束

来源:https://www.cnblogs.com/yellowsea/archive/2023/02/28/17164717.html
-Advertisement-
Play Games

約束 約束是作用於表中欄位上的規則,用於限制存儲在表中的數據,保證資料庫中數據的正確、有效和完整。 一. 常用的約束 約束作用於表中的欄位,可以在創建表或修改表的時候添加約束。 AUTO_INCREMENT 約束關鍵字 自動增長:用於比如每次新添加一行數據,id就+1。 如果自增和主鍵一起使用時,插 ...


約束

約束是作用於表中欄位上的規則,用於限制存儲在表中的數據,保證資料庫中數據的正確、有效和完整。

一. 常用的約束

image-20230228152002543

  • 約束作用於表中的欄位,可以在創建表或修改表的時候添加約束。
  • AUTO_INCREMENT 約束關鍵字 自動增長:用於比如每次新添加一行數據,id就+1。
  • 如果自增和主鍵一起使用時,插入了一行未按約束的數據(會顯示插入失敗),資料庫會申請一次主鍵,那麼下一次插入正確的數據時,獲得的自增主鍵就會是資料庫中前一個自增主鍵+2的值。
  • 一個欄位可以有多個約束。
  • 創建表時添加約束:
create table {表名}(
	欄位1 類型 [{約束}] [comment 註釋],
	欄位2 類型 [{約束}] [comment 註釋],
	...
	欄位n 類型 [{約束}] [comment 註釋]
)[comment 表註釋];
  • CHECK 檢查約束語法:
# 下麵是創建表語法中的其中一行
# 如我們的目的是:創建一個age欄位,限制取值範圍為0-120
age int check ( age > 0 and age <= 120) comment '年齡',
  • DEFAULT 預設約束語法:
# 下麵是創建表語法中的其中一行
# 如我們的目的是:創建一個status欄位,預設取值為1
status char(1) default '1' comment '狀態',

二. 外鍵約束

外鍵約束用於兩張表之間建立連接,從而保證數據的一致性和完整性。

image-20230228154324945

  • 如上圖所示,箭頭的起點稱為“子表”,終點稱為“父表”
  • 主表與從表:主表存的是從北京到上海的高鐵信息,從表則存的是:北京-天津;天津-河北....這種存在一定的主從關係,在資料庫中稱為主從表。
  • 父表與子表:你定義了一個導航菜單表(父表),然後每一個菜單下的子菜單定義了一張表(子表),這類數據稱為父表與子表。

1. 添加外鍵:

# 創建表時建立外鍵
create table {表名}(
	{欄位名} {數據類型},
	...
  [constraint] [{外鍵名稱}] foreign key({外鍵欄位名}) references {主表}({主表列名})
);

# 修改表時建立外鍵
alter table {表名} add constraint {外鍵名稱} foreign key({外鍵欄位名}) references {主表}({主表列名});

2. 刪除外鍵:

alter table {表名} drop foreign key {外鍵名};

3. 外鍵的刪除/更新行為

image-20230228160325629

# 添加外鍵時指定行為
alter table {表名} add constraint {外鍵名稱} foreign key({外鍵欄位名}) references {主表}({主表列名}) on update {在更新時的行為} on delete {在刪除時的行為};

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.系統是預設安裝的,查看系統是否安裝logrotate centos rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf /etc/logrotate.d /etc/rwtab.d/logrotate /usr/sbin/ ...
  • 1.IO的概念 IO簡單來講就是對輸入輸出設備的簡化表達形式 單片機中各種介面,進行數據流的傳輸 從磁碟中讀取數據至記憶體,又或者從記憶體中寫入磁碟 編程中的IO 此時的IO其應用程式的運行態,即進程 》IO調用 特別強調的是我們的應用程式其實並不存在實質的IO過程,真正的IO過程是操作系統的事情, 這 ...
  • 問題產生: 作者最近在搭建Hadoop+Hive集群時,將NameNode、DataNode、Rm全部部署到一臺物理機上,查詢量較大時連接掛掉。 問題定位: 使用JPS命令查看Metastore服務正常運行,hive2--Runjar掛掉。重啟之後,過段時間又會掛掉。 Linux 內核有個機制叫OO ...
  • 下載 官網下載地址:http://nginx.org/en/download.html Mainline version 開發版Stable version 穩定版Legacy versions 歷史版 滑鼠移動到你要選擇的版本超鏈接上點右鍵 複製鏈接地址 下載:wget http://nginx. ...
  • 編寫hello world腳本 #!/bin/bash # 編寫hello world腳本 echo "Hello World!" ##通過位置變數創建 Linux 系統賬戶及密碼 #!/bin/bash # 通過位置變數創建 Linux 系統賬戶及密碼 #$1 是執行腳本的第一個參數,$2 是執行 ...
  • 該引擎繼承於MergeTree,併在數據塊合併演算法中添加了摺疊行的邏輯。CollapsingMergeTree會非同步的刪除(摺疊)這些除了特定列Sign有1和-1的值以外,其餘所有欄位的值都相等的成對的行。沒有成對的行會被保留。因此,該引擎可以顯著的降低存儲量並提高SELECT查詢效率。 簡單來說就 ...
  • 轉載於:(140條消息) 如何管理oralce口令文件和參數文件_oracle 口令文件_夢想家DBA匠人的博客-CSDN博客口令文件審核 Step 1: 使用root賬號將 oracle dba的許可權移除 [root@oracle-db-19c ~]# su - oracle[oracle@ora ...
  • 前言 Redis 提供了 2 個不同形式的持久化方式: RDB(Redis DataBase) AOF(Append Of File) RDB 在指定的時間間隔內將記憶體中的數據集快照寫入磁碟, 也就是行話講的 Snapshot 快照,它恢復時是將快照文件直接讀到記憶體里。 備份是如何執行的 Redis ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...