MySQL

主键(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,`[email protected]`,`caoliang`,`11111111111`),
          (2,`[email protected]`,`caoliang2`,`22222222222`);

INSERT INTO `USERS`( `email`,`user_name`,`telphone`,`id`)
    VALUES(`[email protected]`,`caoliang`,`11111111111`,1),
          (`[email protected]`,`caoliang2`,`22222222222`,2);

INSERT INTO `USERS`  #如果没有括号内的这一行只能按照顺序来插入
    VALUES(1,`[email protected]`,`caoliang`,`11111111111`),
          (2,`[email protected]`,`caoliang2`,`22222222222`);


查:
SELECT `email`,`telphone` FROM `USERS`

关系

一对一的关系

一对多的关系

多对多的关系

你可能感兴趣的:(MySQL)