美文网首页PYTHON
MySQL多表关联

MySQL多表关联

作者: LoseDemon | 来源:发表于2018-07-11 21:30 被阅读39次

    在设计数据库时,一般而言要求遵循数据库三范式(3 NF)(面试题)
    1、设计的字段具有原子性(字段具有不可分割性)
    2、每条记录具有唯一性 主键
    3、外键

    分表的重要性(垂直分表)

    多表关联查询五种连接方式
    1、交叉查询(笛卡儿积现象)
    select *
    from dept,emp
    SELECT * from emp cross join dept;
    2、内连接
    SELECT *
    FROM emp,dept
    WHERE emp.deptid = dept.id

       SELECT e.*,t.name as deptname, t.describle deptdesc from emp as e inner join dept t on (e.deptid = t.id)
    

    3、外连接(外连接分为左外连接和右外连接)
    SELECT e.*,d.name deptname, d.describle deptdesc FROM emp e LEFT JOIN dept d on(e.deptid=d.id);

       SELECT e.*,d.name deptname, d.describle deptdesc FROM emp e RIGHT OUTER JOIN dept d on(e.deptid=d.id);
    

    4、自然连接(真正开发用不到,作为一个知识点)、
    SELECT * from emp natural join dept;
    5、自连接
    外键在约束自身的某个字段(如主键)
    外键:constraint foreign key(新表的字段)references 主表(引用字段)

    条件查询:select
    from
    where
    group by
    having
    order by
    limit

    子查询:将一个查询结果作为条件的一部分写入到第二个sql中
    select depthame from dept where deptid

    表与表的关联关系
    OneToOne(1 : 1 )
    ManyToOne (n : 1)
    ManyToMany (n : n)

    外键约束
    创建表的同时创建外键:
    create table tName(
    id........,
    deptid int,
    [constraint fk_xx_xx]foreign key(deptid) references dept(id) on delete restrict(cascade) on update restrict
    )
    为已经存在的表创建外键
    alter table add tName [constrint fk_xx_xx] foreign
    删除外键
    alter table drop 外键名称;

    相关文章

      网友评论

        本文标题:MySQL多表关联

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