国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【建議收藏】數(shù)據(jù)庫 SQL 入門——約束(內附演示)

這篇具有很好參考價值的文章主要介紹了【建議收藏】數(shù)據(jù)庫 SQL 入門——約束(內附演示)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

sql數(shù)據(jù)庫原理怎么定義約束,# SQL入門語句速查手冊,數(shù)據(jù)庫,sql

??引言

???♂?作者簡介:生魚同學,大數(shù)據(jù)科學與技術專業(yè)碩士在讀?????,曾獲得華為杯數(shù)學建模國家二等獎??,MathorCup 數(shù)學建模競賽國家二等獎??,亞太數(shù)學建模國家二等獎??。

??研究方向:復雜網(wǎng)絡科學

??興趣方向:利用python進行數(shù)據(jù)分析與機器學習,數(shù)學建模競賽經(jīng)驗交流,網(wǎng)絡爬蟲等。

**約束作用于表中字段上的規(guī)則,用于限制儲存在表中的數(shù)據(jù)。**在本文中我們主要介紹SQL中約束分類以及約束以及約束的不同類型,并作出演示。

??約束

首先我們來看約束的主要分類,常見的約束分類如下:

約束 描述 關鍵字
非空約束 限制該字段的數(shù)據(jù)不能為NULL NOT NULL
唯一約束 保證該字段的所有數(shù)據(jù)都是唯一、不重復的 UNIQUE
主鍵約束 主鍵是一行數(shù)據(jù)的唯一標識,要求非空且唯一 PRIMARY KEY
默認約束 保存數(shù)據(jù)時,如果未指定該字段的值,則采用默認值 DEFAULT
檢查約束 保證字段值滿足一個條件 CHECK
外鍵約束 用來讓兩張表之間建立連接,保證數(shù)據(jù)的一致和完整 FOREIGN KEY

我們可以選擇在創(chuàng)建表或修改表的過程中進行約束的添加。

接下來,我們將會根據(jù)不同的約束類型進行分別介紹與演示。

??非空約束

非空約束限制字段的數(shù)據(jù)不能為NULL,非空約束的關鍵字為NOT NULL。當我們希望在創(chuàng)建表的過程中添加非空約束的時候,我們可以使用下面的代碼:

# 創(chuàng)建一個名為TABLE_NAME的表并且將Id和AGE設為非空
CREATE TABLE TABLE_NAME
(
Id int NOT NULL,
AGE varchar(10) NOT NULL
)

當表已經(jīng)創(chuàng)建后,我們可以使用下面的代碼為字段添加約束:

ALTER TABLE TABLE_NAME ADD NOT NULL ( Id )

在我的數(shù)據(jù)庫中,我已經(jīng)預先創(chuàng)建了表EMP,建表結構如下:
sql數(shù)據(jù)庫原理怎么定義約束,# SQL入門語句速查手冊,數(shù)據(jù)庫,sql
如果我們想為name加上非空的約束,可以使用下面的代碼:

ALTER TABLE EMP  MODIFY name varchar(255) NOT NULL;

結果如下:
sql數(shù)據(jù)庫原理怎么定義約束,# SQL入門語句速查手冊,數(shù)據(jù)庫,sql
當我們在這時想要插入一個數(shù)據(jù)的時候,我們發(fā)現(xiàn)沒有name的設定已經(jīng)不能夠插入了:
sql數(shù)據(jù)庫原理怎么定義約束,# SQL入門語句速查手冊,數(shù)據(jù)庫,sql
另外,刪除上述約束的代碼為:

ALTER TABLE EMP MODIFY varchar(255) NOT NULL;

??唯一約束

唯一約束表示該字段是唯一的,表示為UNIQUE。同樣的添加唯一約束有兩種方法,一種是在創(chuàng)建表結構的時候進行添加,另一種是創(chuàng)建表后進行更改,代碼如下:

# 表示對AGE進行唯一約束
CREATE TABLE TABLE_NAME
(
Id int NOT NULL,
AGE varchar(10) UNIQUE
)

另外,我們還可以在建表的時候對某字段進行約束的命名,代碼如下:

CREATE TABLE EMP
(
Id int NOT NULL,
AGE varchar(10)
CONSTRAINT UNIQUE EMP_ID_AGE UNIQUE (Id,AGE)
)

同樣的,我們也可以在表創(chuàng)建后對唯一約束進行添加以及刪除,代碼如下:

# 為Id添加唯一約束
ALTER TABLE EMP ADD UNIQUE (Id);
ALTER TABLE EMP ADD CONSTRAINT uc_EMP_ID_AGE UNIQUE (Id,AGE);
# 刪除名為uc_EMP_ID_AGE 的唯一約束
ALTER TABLE EMP DROP CONSTRAINT uc_EMP_ID_AGE;

??主鍵約束

主鍵在每個表中只有一個,其是唯一的值并且不能包括NULL值,同樣的我們可以在創(chuàng)建表的過程中指定主鍵或者在創(chuàng)建表后添加主鍵,代碼如下:

CREATE TABLE EMP
(
Id int PRIMARY KEY,
AGE varchar(10)
)

在創(chuàng)建表后,我們可以通過ALTER來進行主鍵的添加和取消,代碼如下所示:

# 為名為TABLE_NAME 的表的字段Id添加主鍵
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (Id)
# 刪除表中的主鍵
ALTER TABLE TABLE_NAME DROP PRIMARY KEY

??默認約束

當我們想對某些字段進行默認值的設定時,可以使用默認約束,這種約束能夠對插入的時候的數(shù)據(jù)賦予一個我們初始化的默認值,代碼如下:

CREATE TABLE EMP
(
Id int NOT NULL,
NANME varchar(255) DEFAULT '無名氏'
)

或者在建表后對表格加上或者刪除默認的約束,代碼如下:

# 添加一個默認約束
ALTER TABLE EMP ALTER NANME SET DEFAULT '無名氏'
# 刪除一個默認約束
ALTER TABLE EMP; ALTER NANME DROP DEFAULT;

??檢查約束

當我們希望都某個字段的值進行檢查時,可以使用檢查約束限定范圍,可以在建表的過程中對其添加檢查的條件,代碼如下:

# 在括號中傳入約束條件
CREATE TABLE EMP
(
Id int NOT NULL CHECK (Id>0),
NANME  varchar(255) NOT NULL
)

我們可以對后續(xù)添加的約束進行命名,從而更好的刪除約束以及操作約束,代碼如下:

ALTER TABLE EMP ADD CHECK (Id>0);
# 我們對該檢查約束命名為chk_emp
ALTER TABLE EMP ADD CONSTRAINT chk_emp CHECK (Id>0 AND MAME='路人甲');

另外,刪除約束也可以在建表之后進行。這時我們就可以利用其約束名,代碼如下:

ALTER TABLE EMP DROP CONSTRAINT chk_emp;

??外鍵約束

??外鍵的添加

添加外鍵可以把表進行鏈接,為了更好的解釋外鍵,我們首先看一個例子:
假設我們員工表(EMP)如下:

Id 名字 部門
1 張三 1
2 李四 2
3 王五 3

我們還有一個部門表(PARTY)如下:

Id 部門
1 研發(fā)部
2 銷售部
3 營銷部

此時員工表的部門字段就是一個外鍵,我們通常把部門表稱作母表,而員工表稱作子表。在SQL中我們可以在創(chuàng)建的時候添加外鍵,或者創(chuàng)建后添加外鍵,代碼如下:

CREATE TABLE EMP
(
Id int PRIMARY KEY,
NAME varchar(10) NOT NULL,
PARTY_ID int,
FOREIGN KEY (Id ) REFERENCES PARTY(Id)
)

特別的,在創(chuàng)建表后添加外鍵的代碼如下:

ALTER TABLE EMP ADD CONSTRAINT FOREIGN_PARTY FOREIGN KEY (Id) REFERENCES PARTY(Id);

與此同時我們也可以撤銷外鍵的約束,代碼如下:

ALTER TABLE Orders DROP FOREIGN KEY FOREIGN_PARTY;

??刪除/更新外鍵

當我們對表的某字段設定了外鍵時,刪除外鍵中的數(shù)據(jù)通常是不允許的,假如我們希望外鍵的數(shù)據(jù)改變時在子表的操作發(fā)生改變,可以使用不同的行為對外鍵的更新或者刪除做限定,行為分為以下幾類:

行為 說明
NO ACTION 當在父表中刪除/更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許刪除/更新。(與 RESTRICT 一致)
RESTRICT 當在父表中刪除/更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許刪除/更新。(與 NO ACTION一致
CASCADE 當在父表中刪除/更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有,則也刪除/更新外鍵在子表中的記錄。
SETNULL 當在父表中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則設置子表中該外鍵值為ull(這就要求該外鍵允許取nul)。
SETDEFAULT 父表有變更時,子表將外鍵列設置成一個默認的值(Innodb不支持)
設頂外鍵更新或刪除行為的語句如下所示:
# 對EMP表中的Id設置外鍵PARTY表中的Id
# 在更新PARTY表中的內容時檢查該記錄是否有對應外鍵,如果有,則也刪除/更新外鍵在子表中的記錄。
# 在刪除PARTY表中的內容時首先檢查該記錄是否有對應外鍵,如果有則設置子表中該外鍵值為ull(這就要求該外鍵允許取nul)。
ALTER TABLE EMP ADD CONSTRAINT FOREIGN_PARTY FOREIGN KEY (Id) REFERENCES PARTY(Id) ON UPDATE CASCADE ON DELETE SET NULL;

??總結

本次列舉了SQL中常用約束相關語句,在實際學習的過程中還需要多學習以及使用才能熟練掌握。

余下的SQL內容我也將持續(xù)更新,如果感興趣的話不妨訂閱本專欄或者點個關注,我們下次再見。文章來源地址http://www.zghlxwxcb.cn/news/detail-771098.html

到了這里,關于【建議收藏】數(shù)據(jù)庫 SQL 入門——約束(內附演示)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Spring Boot進階(54):Windows 平臺安裝 MongoDB數(shù)據(jù)庫 | 超級詳細,建議收藏

    Spring Boot進階(54):Windows 平臺安裝 MongoDB數(shù)據(jù)庫 | 超級詳細,建議收藏

    ????????MongoDB是一種流行的文檔型NoSQL數(shù)據(jù)庫,它具有高性能、高可用性、可伸縮性等優(yōu)點,因此被廣泛應用于Web應用程序、分布式系統(tǒng)、云計算等領域。在Windows系統(tǒng)中安裝和使用MongoDB也非常簡單,只需要按照官方文檔提供的步驟進行操作即可。在本篇文章中,我們將介

    2024年02月16日
    瀏覽(31)
  • 序列號及序列號生成器(號段模式,數(shù)據(jù)庫模式)詳細介紹(建議收藏)

    現(xiàn)如今,數(shù)據(jù)的唯一性和可追溯性變得越來越重要。從簡單的數(shù)據(jù)庫主鍵到復雜的分布式系統(tǒng),唯一標識符在各種場景中都發(fā)揮著關鍵作用。序列號,作為一種廣泛應用的唯一標識符,為我們提供了確保數(shù)據(jù)完整性和一致性的基礎。在這個背景下,高效、可靠的序列號生成器

    2024年02月03日
    瀏覽(93)
  • MySQL數(shù)據(jù)庫基礎(九):SQL約束

    MySQL數(shù)據(jù)庫基礎(九):SQL約束

    文章目錄 SQL約束 一、主鍵約束 二、非空約束 三、唯一約束 四、默認值約束 五、外鍵約束(了解) 六、總結 PRIMARY KEY 約束唯一標識數(shù)據(jù)庫表中的每條記錄。 主鍵必須包含唯一的值。 主鍵列不能包含 NULL 值。 每個表都應該有一個主鍵,并且每個表只能有一個主鍵。 遵循原

    2024年02月19日
    瀏覽(25)
  • 【SQL Server】數(shù)據(jù)庫開發(fā)指南(二)MSSQL數(shù)據(jù)庫開發(fā)對于庫、表、數(shù)據(jù)類型、約束等相關操作

    本系列博文還在更新中,收錄在專欄:#MS-SQL Server 專欄中。 本系列文章列表如下: 【SQL Server】 Linux 運維下對 SQL Server 進行安裝、升級、回滾、卸載操作 【SQL Server】數(shù)據(jù)庫開發(fā)指南(一)數(shù)據(jù)庫設計的核心概念和基本步驟 【SQL Server】數(shù)據(jù)庫開發(fā)指南(二)MSSQL數(shù)據(jù)庫開發(fā)對

    2023年04月09日
    瀏覽(1749)
  • SQL筆記(1)——MySQL創(chuàng)建數(shù)據(jù)庫(收藏吃灰版)

    SQL筆記(1)——MySQL創(chuàng)建數(shù)據(jù)庫(收藏吃灰版)

    本文詳細記錄MySQL創(chuàng)建一個數(shù)據(jù)庫的過程,不只是構建步驟,更多的是每一步涉及到的知識點。一般創(chuàng)建數(shù)據(jù)庫有兩種方式,一種是命令,另外一種就是通過數(shù)據(jù)庫管理工具,本文主要記錄通過命令的方式創(chuàng)建; 后面的學習也都是基于這個數(shù)據(jù)庫進行的; 創(chuàng)建一個大學生成績

    2024年02月08日
    瀏覽(23)
  • 異地訪問Oracle數(shù)據(jù)庫的解決方案:利用內網(wǎng)穿透實現(xiàn)PL/SQL遠程連接的建議與步驟

    異地訪問Oracle數(shù)據(jù)庫的解決方案:利用內網(wǎng)穿透實現(xiàn)PL/SQL遠程連接的建議與步驟

    ? 小月糖糖主頁 在強者的眼中,沒有最好,只有更好。 移動開發(fā)領域優(yōu)質創(chuàng)作者,阿里云專家博主 Oracle,是甲骨文公司的一款關系數(shù)據(jù)庫管理系統(tǒng),它在數(shù)據(jù)庫領域一直處于領先地位。可以說Oracle數(shù)據(jù)庫系統(tǒng)是世界上流行的關系數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)可移植性好、使用方便

    2024年02月11日
    瀏覽(21)
  • 數(shù)據(jù)庫入門-----SQL基礎知識

    數(shù)據(jù)庫入門-----SQL基礎知識

    目錄 ??前言: ??SQL概述通用語法: ???DDL: ??操作數(shù)據(jù)庫: ??數(shù)據(jù)類型: ???操作表: ??DML: 語法規(guī)則: 案例演示: ??DQL: 語法規(guī)則: 案例演示: # 基礎查詢: ?# 條件查詢: ?#聚合函數(shù): ?# 分組查詢: ?#排序查詢: ?#分頁查詢: ?執(zhí)行順序: ??DCL: 語法規(guī)則:

    2024年04月10日
    瀏覽(44)
  • GaussDB高斯數(shù)據(jù)庫(SQL語法入門)

    GaussDB高斯數(shù)據(jù)庫(SQL語法入門)

    DDL數(shù)據(jù)定于語言:用于定義或修改數(shù)據(jù)庫中的對象,如:表,索引,視圖,數(shù)據(jù)庫,序列,用戶,角色,表空間,會話等。 DDL不支持物化視圖,存儲過程,觸發(fā)器,自定義函數(shù),自定義類型。 DML數(shù)據(jù)操作語言:用于對數(shù)據(jù)庫表中的數(shù)據(jù)進行操作,如插入,更新和刪除。 DCL數(shù)

    2023年04月10日
    瀏覽(97)
  • Spring Boot入門(14):使用Mybatis-Plus執(zhí)行自定義SQL | 超級詳細,建議收藏

    ? ? ? ? 在上幾期,我們既講了如何整合Mybatis-Plus進行數(shù)據(jù)庫的增刪改查,也講解了如何使用MP的 Wrapper 構造器,但若是遇到復雜業(yè)務邏輯,如多表聯(lián)查、動態(tài)拼接條件等,這些操作往往會讓代碼變得冗長且難以維護。但是,有了Mybatis-Plus這個優(yōu)秀的框架,我們可以輕松實現(xiàn)

    2024年02月12日
    瀏覽(19)
  • sql_server數(shù)據(jù)庫入門學習(二)

    sql_server數(shù)據(jù)庫入門學習(二)

    ?? 博客主頁:博主鏈接 ?? 本文由 M malloc 原創(chuàng),首發(fā)于 CSDN?? ?? 學習專欄推薦:LeetCode刷題集! ?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正! ?? 未來很長,值得我們全力奔赴更美好的生活? ------------------??分割線??------------------------- —————————

    2024年02月08日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包