MySQL

作者: 谁占了我的一年的称号 | 来源:发表于2017-05-01 15:52 被阅读20次

    主键(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`
    

    关系

    一对一的关系

    一对多的关系

    多对多的关系

    相关文章

      网友评论

          本文标题:MySQL

          本文链接:https://www.haomeiwen.com/subject/xotmzttx.html