zoukankan      html  css  js  c++  java
  • mysql数据库_关系的创建

    一对多关系建立 

    以部门表与员工表为例

    create  table  dep(
        id int primary key auto_increment,    #创建主键非空且唯一
        dep_name varchar(128),
        dep_desc  varchar(128)
       );    
    
    create  table  emp(
        id int primary key auto_increment,
        emp_name varchar(128),
        emp_gender enum('mail', 'femail', 'others') default 'mail'  #使用枚举选择性别,默认为mail
        dep_id int,                             #创建关联字段
        foreign key (dep_id) references dep(id) #创建与dep表关联的外键dep_id
        on update cascade              #级联更新
        on delete cascade                 #级联删除          #创建与dep表关联的外键,级联更新,级联删除
       );

    插入部门数据

    insert into dep(dep_name, dep_desc) values('销售部', '买卖'),('技术部','搞技术'),('财务部','管钱')

    插入员工数据

    insert into emp(emp_name, emp_gender, dep_id) values('张三', 18, 1),('李四',19,2),('王五', 20, 3),('马六', 21, 1)

    注意:需要在创建关联表之前创建被关联表, 在多的一方去建立外键

    多对多关系建立

    在创建多对多关系的时候, 先把两个普通的表创建出来, 然后创建一个专门存放多对多关系的一个表(第三张表), 使用这张表去做关系绑定

    以图书表和作者表为例

    create  table  book(
        id int primary key auto_increment,
        title varchar(64),
        price int
        );
    
    
    create  table  authors(
        id int primary key auto_increment,
        name varchar(64),
        age int
        );
    
    
    create  table  book_authors(
        id int primary key auto_increment,
        book_id int,
        foreign key(book_id) references book(id)
        on update cascade
        on delete cascade,
        author_id int,
        foreign key(author_id) references authors(id)
        on update cascade
        on delete cascade
        );

    插入书籍数据

    insert into book(title, price) values('围城', 199),('', 187),('柒个我', 299)

    插入作者数据

    insert into authors(name, age) values('张三', 18),('李四', 19)

    插入第三张表数据

    insert into book_authors(book_id, author_id) values(1,1),(1,2),(2,1),(3,1),(3,2)

    一对一关系建立

    在创建一对一的关系时, 外键可以建立在任何一张表, 但是推荐建立在查询频率比较高的那一张表

    以用户表为例

    create  table  authordetail(
        id int primary key auto_increment,
        ipoh int,
        addr varchar(128)
        );
    
    
    create  table  author(
        id int primary key auto_increment,
        name varchar(16),
        age int,
        authordetail_id int unique,          # 一对一关系id不能重复
        foreign key(authordetail) references authordetail(id)
        on update cascade
        on delete cascade
        );

    修改表的语句

    1. 修改表名
    ALTER TABLE 表名
          RENAME 新表名;
    2. 增加字段
    ALTER TABLE 表名
          ADD 字段名 数据类型 [完整性约束条件…],
          ADD 字段名 数据类型 [完整性约束条件…];
    ALTER TABLE 表名
          ADD 字段名 数据类型 [完整性约束条件…] FIRST; # 直接移到最前面
    ALTER TABLE 表名
          ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; # 寻找插哪个字段的后面
    3. 删除字段
    ALTER TABLE 表名
          DROP 字段名;
    4. 修改字段 # modify只能改字段数据类型完整约束,不能改字段名,但是change可以!
    ALTER TABLE 表名
          MODIFY 字段名 数据类型 [完整性约束条件…];
    ALTER TABLE 表名
          CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

    复制表

    create  table 新表名  select * from 表名(要复制的表)    # 只会复制表结构,key不会复制: 主键、外键和索引
  • 相关阅读:
    无线网络技术知识点
    中国高校计算机大赛—网络技术挑战赛
    实验二 软件工程个人项目
    实验一 软件工程准备
    2018年春季软件工程教学设计(初稿)
    2017-2018春季学期软件工程教学资源目录
    2017-2018春季学期软件工程教学纲要
    如何解决Android Studio解决DDMS真机/模拟器无法查看data目录问题
    GitHub的Windows客户端的使用教程
    2017面向对象程序设计(JAVA)课程总结
  • 原文地址:https://www.cnblogs.com/chengzige/p/11385844.html
Copyright © 2011-2022 走看看