最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL?FOREIGN?KEY約束保障表之間關系完整性關鍵規(guī)則詳解

 更新時間:2023年12月10日 10:53:38   作者:小萬哥  
這篇文章主要介紹了SQL?FOREIGN?KEY約束保障表之間關系完整性關鍵規(guī)則詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

SQL FOREIGN KEY 約束

SQL FOREIGN KEY 約束用于防止破壞表之間關系的操作。FOREIGN KEY 是一張表中的字段(或字段集合),它引用另一張表中的主鍵。具有外鍵的表稱為子表,具有主鍵的表稱為被引用表或父表。

以下是兩個表的例子:

Persons 表

PersonID  LastName  FirstName  Age
1          Hansen      Ola          30
2          Svendson  Tove      23
3          Pettersen  Kari      20

Orders 表

OrderID  OrderNumber  PersonID
1      77895      3
2      44678      3
3      22456      2
4      24562      1

注意,"Orders" 表中的 "PersonID" 列指向 "Persons" 表中的 "PersonID" 列。"Persons" 表中的 "PersonID" 列是 "Persons" 表中的主鍵。"Orders" 表中的 "PersonID" 列是 "Orders" 表中的外鍵。

FOREIGN KEY 約束防止將無效數據插入到外鍵列中,因為它必須是父表中包含的值之一。

在 CREATE TABLE 時使用 SQL FOREIGN KEY

以下 SQL 在創(chuàng)建 "Orders" 表時在 "PersonID" 列上創(chuàng)建了一個 FOREIGN KEY

對于 MySQL:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

對于 SQL Server / Oracle / MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

要允許對 FOREIGN KEY 約束進行命名,并在多列上定義 FOREIGN KEY 約束,請使用以下 SQL 語法:

對于 MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

在 ALTER TABLE 時使用 SQL FOREIGN KEY

要在表已經創(chuàng)建的情況下在 "PersonID" 列上創(chuàng)建 FOREIGN KEY 約束,請使用以下 SQL:

對于 MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

要允許對 FOREIGN KEY 約束進行命名,并在多列上定義 FOREIGN KEY 約束,請使用以下 SQL 語法:

對于 MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

刪除 FOREIGN KEY 約束

要刪除 FOREIGN KEY 約束,請使用以下 SQL:

對于 MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

對于 SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

通過這些 SQL 語句,您可以在數據庫中定義和管理 FOREIGN KEY 約束,以確保表之間的關系得到維護。

SQL CHECK 約束

SQL CHECK 約束用于限制可以放入列中的值范圍。如果在列上定義了 CHECK 約束,它將僅允許為該列指定某些值。如果在表上定義了 CHECK 約束,它可以基于行中其他列的值來限制某些列中的值。

在 CREATE TABLE 時使用 SQL CHECK

以下 SQL 在創(chuàng)建 "Persons" 表時在 "Age" 列上創(chuàng)建了一個 CHECK 約束。CHECK 約束確保一個人的年齡必須是 18 歲或以上:

對于 MySQL:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CHECK (Age>=18)
);

對于 SQL Server / Oracle / MS Access:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int CHECK (Age>=18)
);

要允許對 CHECK 約束進行命名,并在多列上定義 CHECK 約束,請使用以下 SQL 語法:

對于 MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255),
    CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);

在 ALTER TABLE 時使用 SQL CHECK

要在表已經創(chuàng)建的情況下在 "Age" 列上創(chuàng)建 CHECK 約束,請使用以下 SQL:

對于 MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CHECK (Age>=18);

要允許對 CHECK 約束進行命名,并在多列上定義 CHECK 約束,請使用以下 SQL 語法:

對于 MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

刪除 CHECK 約束

要刪除 CHECK 約束,請使用以下 SQL:

對于 SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;

對于 MySQL:

ALTER TABLE Persons
DROP CHECK CHK_PersonAge;

通過這些 SQL 語句,您可以在數據庫中定義和管理 CHECK 約束,以確保列中的值滿足指定的條件。

SQL DEFAULT 約束

SQL DEFAULT 約束用于為列設置默認值。如果沒有指定其他值,將在所有新記錄中添加默認值。

在 CREATE TABLE 時使用 SQL DEFAULT

以下 SQL 在創(chuàng)建 "Persons" 表時為 "City" 列設置了 DEFAULT 值:

對于 MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255) DEFAULT 'Sandnes'
);

DEFAULT 約束還可以用于通過使用諸如 GETDATE() 之類的函數插入系統(tǒng)值:

CREATE TABLE Orders (
    ID int NOT NULL,
    OrderNumber int NOT NULL,
    OrderDate date DEFAULT GETDATE()
);

在 ALTER TABLE 時使用 SQL DEFAULT

要在表已經創(chuàng)建的情況下在 "City" 列上創(chuàng)建 DEFAULT 約束,請使用以下 SQL:

對于 MySQL:

ALTER TABLE Persons
ALTER City SET DEFAULT 'Sandnes';

對于 SQL Server:

ALTER TABLE Persons
ADD CONSTRAINT df_City
DEFAULT 'Sandnes' FOR City;

對于 MS Access:

ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'Sandnes';

對于 Oracle:

ALTER TABLE Persons
MODIFY City DEFAULT 'Sandnes';

刪除 DEFAULT 約束

要刪除 DEFAULT 約束,請使用以下 SQL:

對于 MySQL:

ALTER TABLE Persons
ALTER City DROP DEFAULT;

對于 SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;

對于 SQL Server:

ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;

通過這些 SQL 語句,您可以在數據庫中為列設置默認值,確保在插入新記錄時,如果未提供值,將使用指定的默認值。

以上就是SQL FOREIGN KEY約束保障表之間關系完整性關鍵規(guī)則詳解的詳細內容,更多關于SQL FOREIGN KEY約束表完整性的資料請關注腳本之家其它相關文章!

相關文章

  • 解析MySQL?join查詢的原理

    解析MySQL?join查詢的原理

    這篇文章主要介紹了MySQL?join查詢的原理,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • MySQL 8.0.18使用clone plugin重建MGR的實現(xiàn)

    MySQL 8.0.18使用clone plugin重建MGR的實現(xiàn)

    這篇文章主要介紹了MySQL 8.0.18使用clone plugin重建MGR的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關總結

    MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關總結

    這篇文章主要介紹了MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關總結,幫助大家更好的理解和學習使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • MySQL鎖(表鎖,行鎖,共享鎖,排它鎖,間隙鎖)使用詳解

    MySQL鎖(表鎖,行鎖,共享鎖,排它鎖,間隙鎖)使用詳解

    本文全面講解了MySQL中鎖包括表鎖,行鎖,共享鎖,排它鎖,間隙鎖的詳細使用方法
    2018-10-10
  • MySQL事務的四大特性以及并發(fā)事務問題解讀

    MySQL事務的四大特性以及并發(fā)事務問題解讀

    這篇文章主要介紹了MySQL事務的四大特性以及并發(fā)事務問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Ubuntu中遠程連接Mysql數據庫的詳細圖文教程

    Ubuntu中遠程連接Mysql數據庫的詳細圖文教程

    Ubuntu是一個以桌面應用為主的Linux發(fā)行版操作系統(tǒng),這篇文章主要為大家詳細介紹了Ubuntu中遠程連接Mysql數據庫的詳細圖文教程,有需要的小伙伴可以參考下
    2025-04-04
  • MySQL高級查詢示例詳細介紹

    MySQL高級查詢示例詳細介紹

    這篇文章主要介紹了MySQL高級查詢示例,在面試過程中經常會遇到sq查詢問題,今天小編通過本文給大家介紹下MySQL高級查詢語法分析,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • 淺談MYSQL主鍵約束和唯一約束的區(qū)別

    淺談MYSQL主鍵約束和唯一約束的區(qū)別

    本文主要介紹了MYSQL主鍵約束和唯一約束的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • MySQL InnoDB中意向鎖的作用及原理

    MySQL InnoDB中意向鎖的作用及原理

    意向鎖是由InnoDB在操作數據之前自動加的,本文主要介紹了MySQL InnoDB中意向鎖的作用及原理,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Mysql升級到5.7后遇到的group by查詢問題解決

    Mysql升級到5.7后遇到的group by查詢問題解決

    這篇文章主要給大家介紹了關于Mysql升級到5.7后遇到的group by查詢問題的解決方法,文中通過示例代碼介紹的非常詳細,對同樣遇到這個問題的朋友們具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09

最新評論

呼伦贝尔市| 繁昌县| 靖远县| 合肥市| 雷州市| 册亨县| 平乐县| 光泽县| 车险| 盐池县| 龙州县| 客服| 崇礼县| 富宁县| 松原市| 宜黄县| 仙游县| 青浦区| 漾濞| 漳州市| 阳朔县| 犍为县| 阿勒泰市| 芜湖市| 木里| 全州县| 疏附县| 保定市| 交口县| 玛纳斯县| 崇明县| 河间市| 兴山县| 柳河县| 勐海县| 焉耆| 井陉县| 西峡县| 大邑县| 嵊泗县| 彩票|