主鍵(primary key)非空且唯一。
外鍵: 讓本表的某些列能過(guò)參照另一張表的某些列楚里。使得參照表里包含外鍵的列猎贴,不會(huì)超過(guò)被參照列蝴光,已有的內(nèi)容。
CREATE TABLE `USERS`(
`id` int PRIMARY KEY,#每張表只能有一個(gè)主鍵
`email` char(50) UNIQUE KEY NOT NULL ,
`user_name` varchar(20) NOT NULL,
`telphone` char(11)
);
CREATE TABLE `USERS`(
`id` int PRIMARY KEY AUTO_INCREMENT,#可以不輸入蔑祟,讓其自動(dòng)分配沉唠。
`email` char(50) UNIQE KEY NOT NULL ,
`user_name` varchar(20) NOT NULL,
`telphone` char(11)
);
CREATE TABLE `seller` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`user_id` int UNIQUE KEY NOT NULL,
FORGEIN KEY (`user_id`) REFERENCES `USERS` (`id`) # 添加外部約束
);
CREATE TABLE `houses` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`summary` int UNIQUE KEY NOT NULL,
`seller_id` int NOT NULL #賣房子的用戶不一定是唯一的,所以不用UNIQUE KEY
FORGEIN KEY (`seller_id`) REFERENCES `seller` (`id`) # 添加外部約束
);
CREATE TABLE `details`(
`id` int PRIMARY KEY AUTO_INCREMENT
`house_id` int UNIQUE KEY NOT NULL,
FOREIGN KEY (`house_id`) REFERENCES `houses`(`id`)
);
多對(duì)多:
中間表
CREATE TABLE `seller_tags`(
`seller_id` int NOT NULL,
`tag_id` int NOT NULL,
FOREIGN KEY (`seller_id`) REFERENCE seller(`id`),
FOREIGN KEY (`tag_id`) REFERENCE tags(`id`)
PRIMARY KEY (`seller_id`,`tag_id`) # 這句話的作用就是兩者的組合是唯一的径簿。
);
CREATE TABLE `tags`(
'id' int PRIMARY KEY AUTO_INCREMENT,
`name` varchar(20) UNIQUE KEY NOT NULL
);
增:#因?yàn)镮D設(shè)置了為主鍵篇亭,所以不能重復(fù)
INSERT INTO `USERS`( `id`,`email`,`user_name`,`telphone`)
VALUES(1,`335095199@qq.com`,`caoliang`,`11111111111`),
(2,`caoliang@qq.com`,`caoliang2`,`22222222222`);
INSERT INTO `USERS`( `email`,`user_name`,`telphone`译蒂,`id`)
VALUES(`335095199@qq.com`,`caoliang`,`11111111111`,1),
(`caoliang@qq.com`,`caoliang2`,`22222222222`蹂随,2);
INSERT INTO `USERS` #如果沒(méi)有括號(hào)內(nèi)的這一行只能按照順序來(lái)插入
VALUES(1,`335095199@qq.com`,`caoliang`,`11111111111`),
(2,`caoliang@qq.com`,`caoliang2`,`22222222222`);
查:
SELECT `email`,`telphone` FROM `USERS`
關(guān)系
一對(duì)一的關(guān)系
一對(duì)多的關(guān)系
多對(duì)多的關(guān)系