zoukankan      html  css  js  c++  java
  • 多表查询

    create table dept(
    id int primary key auto_increment,
    name varchar(20)
    );
    insert into dept values(null, '财务部'),(null, '人事部'),
    (null, '销售部'),(null, '行政部')
    (null, '研发部');

    create table emp(
    id int primary key auto_increment,
    name varchar(20),
    dept_id int,
    foreign key(dept_id) references dept(id)
    );
    insert into emp values(null, '奥巴马', 1),(null, '哈利波特', 2),(null, '本拉登', 3),
    (null, 'zy', 3);


    一对多:在多的一方保存一的一方的主键作为外键。
    一对一:在任意一方保存另一方的主键作为外键。
    多对多:创建第三方关系表保存两张表的主键作为外键,保存他们的对应关系

    笛卡尔积查询:将两张的记录进行相乘的操作。如果左表有n条记录,右表有m条记录,结果有n*m条结果
    其中有很多错误的数据,不常用
    select * from dept, emp;

    内链接查询: 查询出来的是左边表和右表都能够找到对应记录的记录
    select * from dept,emp where dept.id = emp.dept_id;
    select * from dept inner join emp on dept.id = emp.dept_id;

    外连接查询:
    左外连接查询: 在内连接的基础上,增加左边表有而右边表没有的记录
    select * from dept left join emp on dept.id = emp.dept_id;

    右外连接查询: 在内连接的基础上,增加右边表有而左边表没有的记录
    select * from dept right join emp on dept.id = emp.dept_id;

    全外连接查询: 在内链接的基础上,增加左边表有而右边表没有的记录,和右边表有而左边表没有的记录
    select * from dept full join emp on dept.id = emp.dept_id; //mysql 不支持全外连接
    可以使用union关键字模拟全外连接
    select * from dept left join emp on dept.id = emp.dept_id;
    union
    select * from dept right join emp on dept.id = emp.dept_id;

  • 相关阅读:
    第10组 Beta冲刺 (3/5)
    第10组 Beta冲刺 (2/5)
    第10组 Beta冲刺 (1/5)
    软工实践个人总结
    第03组 每周小结(3/3)
    第03组 每周小结(2/3)
    第03组 每周小结(1/3)
    第03组 Beta冲刺 总结
    第03组 Beta冲刺 (5/5)
    第03组 Beta冲刺 (4/5)
  • 原文地址:https://www.cnblogs.com/superPerfect/p/4359273.html
Copyright © 2011-2022 走看看