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

一文徹底搞清楚MySQL的主鍵、外鍵、約束和各種索引

這篇具有很好參考價值的文章主要介紹了一文徹底搞清楚MySQL的主鍵、外鍵、約束和各種索引。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0.前言

主鍵用于唯一標識表中每一行數(shù)據(jù),外鍵用于建立表與表之間關聯(lián)關系,約束用于限制表中數(shù)據(jù)的規(guī)則,索引用于加速查詢。

一文徹底搞清楚MySQL的主鍵、外鍵、約束和各種索引


1. 主鍵

主鍵是一種用于唯一標識表中每一行數(shù)據(jù)的標識符。在Mysql中,主鍵可以是一個或多個列的組合,但是必須滿足以下條件:

  • 主鍵列的值必須唯一,不能重復。
  • 主鍵列的值不能為空,不能為NULL。
  • 一個表只能有一個主鍵。

主鍵可以用于加速查詢和提高數(shù)據(jù)的完整性和安全性。在Mysql中,主鍵可以通過以下兩種方式定義:

1.1. 在創(chuàng)建表時定義主鍵

在創(chuàng)建表時,可以通過在列定義后面添加PRIMARY KEY關鍵字來定義主鍵。例如:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,id列被定義為主鍵。

1.2. 在已有表中添加主鍵

在已有表中添加主鍵,可以使用ALTER TABLE語句。例如:

ALTER TABLE `users` ADD PRIMARY KEY (`id`);

2. 外鍵

外鍵是一種用于建立表與表之間關聯(lián)關系的機制。外鍵可以用于保證數(shù)據(jù)的完整性和一致性。在Mysql中,外鍵可以通過以下兩種方式定義:

2.1. 在創(chuàng)建表時定義外鍵

在創(chuàng)建表時,可以通過在列定義后面添加FOREIGN KEY關鍵字來定義外鍵。例如:

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `quantity` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`user_id`) REFERENCES `users`(`id`),
  FOREIGN KEY (`product_id`) REFERENCES `products`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,orders表中的user_id和product_id列被定義為外鍵,分別引用了users表和products表中的id列。

2.2. 在已有表中添加外鍵

在已有表中添加外鍵,可以使用ALTER TABLE語句。例如:

ALTER TABLE `orders` ADD FOREIGN KEY (`user_id`) REFERENCES `users`(`id`);

3. 約束

約束是一種用于限制表中數(shù)據(jù)的規(guī)則。在Mysql中,約束可以用于保證數(shù)據(jù)的完整性和一致性。Mysql支持以下幾種約束:

3.1. NOT NULL約束

NOT NULL約束用于限制列中的數(shù)據(jù)不能為NULL。例如:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,name和email列被定義為NOT NULL。

3.2. UNIQUE約束

UNIQUE約束用于限制列中的數(shù)據(jù)不能重復。例如:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL UNIQUE,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,email列被定義為UNIQUE。

3.3. CHECK約束

CHECK約束用于限制列中的數(shù)據(jù)必須滿足指定的條件。例如:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `age` int(11) NOT NULL,
  CHECK (`age` >= 18),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,age列被定義為CHECK約束,要求age的值必須大于等于18。

3.4. DEFAULT約束

DEFAULT約束用于指定列的默認值。例如:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,status列被定義為DEFAULT約束,如果插入數(shù)據(jù)時沒有指定status的值,則默認為0。


4. 索引

索引是一種用于加速查詢的機制。在Mysql中,索引可以用于提高查詢效率和保證數(shù)據(jù)的完整性和一致性。Mysql支持以下幾種索引:

4.1. PRIMARY KEY索引

PRIMARY KEY索引是一種用于唯一標識表中每一行數(shù)據(jù)的索引。在Mysql中,每個表只能有一個PRIMARY KEY索引。例如:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,id列被定義為PRIMARY KEY索引。

4.2. UNIQUE索引

UNIQUE索引是一種用于限制列中的數(shù)據(jù)不能重復的索引。在Mysql中,每個表可以有多個UNIQUE索引。例如:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL UNIQUE,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,email列被定義為UNIQUE索引。

4.3. INDEX索引

INDEX索引是一種用于加速查詢的索引。在Mysql中,每個表可以有多個INDEX索引。例如:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  INDEX `idx_name` (`name`),
  INDEX `idx_email` (`email`),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,name和email列被定義為INDEX索引。

4.4. FULLTEXT索引

FULLTEXT索引是一種用于全文搜索的索引。在Mysql中,每個表只能有一個FULLTEXT索引。例如:

CREATE TABLE `articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) NOT NULL,
  `content` text NOT NULL,
  FULLTEXT INDEX `idx_content` (`content`),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的例子中,content列被定義為FULLTEXT索引。


5. 總結

本文介紹了Mysql中主鍵、外鍵、約束和索引的概念和用法。在實際應用中,應根據(jù)具體情況選擇合適的主鍵、外鍵、約束和索引,以提高數(shù)據(jù)的完整性和一致性,加速查詢。


一文徹底搞清楚MySQL的主鍵、外鍵、約束和各種索引文章來源地址http://www.zghlxwxcb.cn/news/detail-481506.html

到了這里,關于一文徹底搞清楚MySQL的主鍵、外鍵、約束和各種索引的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關文章

  • mysql的主鍵索引為什么不能null

    這是一個非常奇怪且有趣的問題??梢酝ㄟ^官方文檔進行解讀 https://dev.mysql.com/doc/refman/5.7/en/glossary.html A special value in SQL, indicating the absence of data. Any arithmetic operation or equality test involving a NULL value, in turn produces a NULL result. (Thus it is similar to the IEEE floating-point concept of NaN, “not

    2024年02月14日
    瀏覽(27)
  • 主鍵、外鍵、建表范式、MySQL索引、用戶管理

    1.1 問題 完成如下練習: 練習主鍵的創(chuàng)建、查看、刪除、添加、驗證主鍵 練習復合主鍵的使用 練習與auto_increment連用的效果 1.2 方案 主鍵使用規(guī)則: 表頭值不允許重復,不允許賦NULL值 一個表中只能有一個primary key 表頭 多個表頭做主鍵,稱為復合主鍵,必須一起創(chuàng)建和刪除

    2024年01月16日
    瀏覽(26)
  • 【MySQL】更改表的主鍵報錯及解決辦法

    報錯: [HY000][3750] Unable to create or change a table without a primary key, when the system variable ‘sql_require_primary_key’ is set. Add a primary key to the table or unset this variable to avoid this message. Note that tables without a primary key can cause performance problems in row-based replication, so please consult your DBA before changing

    2024年01月20日
    瀏覽(21)
  • MySQL:創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)表,主鍵和外鍵

    MySQL:創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)表,主鍵和外鍵

    目錄 前言: 安裝MySQL: 打開MySQL: 創(chuàng)建數(shù)據(jù)庫: 查看已建數(shù)據(jù)庫: 查看數(shù)據(jù)庫引擎: 創(chuàng)建數(shù)據(jù)表: ?主鍵約束: 單字段主鍵: 多字段聯(lián)合主鍵: 外鍵約束: MySQL數(shù)據(jù)庫安裝了很久,一直也沒靜下心來學習,因為起步太晚,所以什么都想學點,又感覺有些力不從心,目前

    2023年04月27日
    瀏覽(695)
  • 【MySQL】外鍵約束和外鍵策略

    【MySQL】外鍵約束和外鍵策略

    ???????? 外鍵約束 ( FOREIGN KEY ,縮寫FK)是用來實現(xiàn)數(shù)據(jù)庫表的參照完整性的。外鍵約束可以使兩張表緊密的結合起來,特別是針對修改或者刪除的級聯(lián)操作時,會保證數(shù)據(jù)的完整性。 ????????外鍵是指表中某個字段的值依賴于另一張表中某個字段的值,而 被依賴的

    2024年02月03日
    瀏覽(20)
  • 【?MySQL | 約束(二)】外鍵 | 默認值 | 檢查約束 — 綜合案例

    【?MySQL | 約束(二)】外鍵 | 默認值 | 檢查約束 — 綜合案例

    ?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL外鍵 | 默認值 | 檢查約束 以及綜合案例的分享 ? 6. 外鍵約束(FOREIGN KEY,FK) 前面介紹的完整性約束都是在單表中進行設置,而外鍵約束則保證多個表(通常為兩個表)之間的參照完整性,即構建于兩個表的兩個字段之間的參照關

    2024年02月12日
    瀏覽(18)
  • MySQL的多表操作-外鍵約束

    MySQL的多表操作-外鍵約束

    介紹 MySQL 外鍵約束(FOREIGN KEY)是表的一個特殊字段,經(jīng)常與主鍵約束一起使用。對于兩個具有關聯(lián)關系的表而言,相關聯(lián)字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。 如下圖員工表中dept_id 表示員工屬于哪個部門,員工表就是從表,部門表就是

    2024年02月07日
    瀏覽(19)
  • MySQL外鍵約束和多表查詢

    MySQL外鍵約束和多表查詢

    知識點 示例 知識點 示例 準備數(shù)據(jù) 示例 知識點 示例 知識點 示例

    2024年02月04日
    瀏覽(27)
  • 【MySQL入門指南】外鍵約束使用詳解

    【MySQL入門指南】外鍵約束使用詳解

    ?MySQL是一種關系型數(shù)據(jù)庫,現(xiàn)實中的業(yè)務往往是相互關聯(lián)的,這也就決定了數(shù)據(jù)庫中的表也是存在相互關系的。而表與表之間的相互關系就是通過外鍵來維護的。給大家舉一個現(xiàn)實的例子來幫助理解: ?現(xiàn)在我們需要在數(shù)據(jù)庫中存放學生的選課信息。如果我們將課程具體信

    2024年02月01日
    瀏覽(14)
  • MySQL--刪除表的外鍵約束,簡單易懂。

    MySQL--刪除表的外鍵約束,簡單易懂。

    刪除表的外鍵約束 我們曾在第一章中講過外鍵的作用,以及如何創(chuàng)建一個表的外鍵。建立了外鍵我們就建立起了兩張表的關聯(lián)關系,那如果我想刪除主表呢?為了確保數(shù)據(jù)庫的正確性,我們必須先解除兩個表之間的關聯(lián)關系,那就是刪除外鍵約束啦!讓我們先來看看刪除外鍵

    2024年04月17日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包