色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql主鍵和外按鍵的區(qū)別

黃文隆2年前9瀏覽0評論

在MySQL數(shù)據(jù)庫中,主鍵和外鍵是兩個非常重要的概念。雖然它們都是數(shù)據(jù)庫表中的“鍵”,但在功能和應(yīng)用方面卻是完全不同的。

首先來看主鍵。主鍵是用來唯一標(biāo)識一條記錄的字段或字段集合。每個表都必須要有一個主鍵,而且主鍵值不能重復(fù)。主鍵通常是一個自增的整數(shù)字段,也可以是其他某個字段,比如郵箱、用戶名等。主鍵的作用是用來確保數(shù)據(jù)表中每個記錄都有一個唯一的標(biāo)識符,方便進(jìn)行數(shù)據(jù)的查找和修改。

CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`email` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB;

上面這個SQL語句創(chuàng)建了一個名為user的表,其中包含id、name和email三個字段。id字段是主鍵字段,它的類型是INT,且是自增的,也就是說每當(dāng)往表中添加一條新的記錄時,id都會自動遞增。PRIMARY KEY關(guān)鍵字表示id字段是該表的主鍵。

接下來看外鍵。外鍵是用來建立表與表之間關(guān)系的一種機制。用外鍵可以實現(xiàn)多個表之間的關(guān)聯(lián),保持?jǐn)?shù)據(jù)表之間的完整性。例如,在一個電話本應(yīng)用中,聯(lián)系人表和電話號碼表就可以使用外鍵來進(jìn)行關(guān)聯(lián)。一個聯(lián)系人可以有很多電話號碼,而一個電話號碼只屬于一個聯(lián)系人。這時可以在聯(lián)系人表中創(chuàng)建一個外鍵,關(guān)聯(lián)到電話號碼表的主鍵上,從而實現(xiàn)關(guān)聯(lián)。

CREATE TABLE `contact` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB;
CREATE TABLE `phone_number` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`number` VARCHAR(20) NOT NULL,
`contact_id` INT(11) NOT NULL,
PRIMARY KEY (`id`),
INDEX `contact_id_fk_idx` (`contact_id` ASC) VISIBLE,
CONSTRAINT `contact_id_fk`
FOREIGN KEY (`contact_id`)
REFERENCES `contact` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=INNODB;

上面這個SQL語句創(chuàng)建了兩個表,contact表和phone_number表。contact表有一個主鍵id,phone_number表有一個主鍵id和一個外鍵contact_id,關(guān)聯(lián)到contact表的主鍵。通過這種方式,可以在phone_number表中建立關(guān)聯(lián)關(guān)系,使得一個電話號碼只屬于一個聯(lián)系人。

綜上所述,主鍵和外鍵在MySQL中有著不同的功能和應(yīng)用。主鍵用來唯一標(biāo)識一條記錄,方便進(jìn)行數(shù)據(jù)的查找和修改;外鍵用來建立表與表之間關(guān)系,保持?jǐn)?shù)據(jù)表之間的完整性。