主键(primary key)非空且唯一。
外键: 让本表的某些列能过参照另一张表的某些列。使得参照表里包含外键的列,不会超过被参照列,已有的内容。
CREATE TABLE `USERS`(
`id` int PRIMARY KEY,#每张表只能有一个主键
`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,#可以不输入,让其自动分配。
`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`)
);
多对多:
中间表
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
);
增:#因为ID设置了为主键,所以不能重复
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` #如果没有括号内的这一行只能按照顺序来插入
VALUES(1,`335095199@qq.com`,`caoliang`,`11111111111`),
(2,`caoliang@qq.com`,`caoliang2`,`22222222222`);
查:
SELECT `email`,`telphone` FROM `USERS`
关系
一对一的关系
一对多的关系
多对多的关系
网友评论