美文网首页
MySQL多表查询

MySQL多表查询

作者: 你猜_e00d | 来源:发表于2018-09-16 20:26 被阅读0次

链接查询

什么是链接查询

也可以叫跨表查询,需要关联多个表进行查询

什么是笛卡尔集

假设集合A={a,b},集合B={0,1,2},
则两个集合的笛卡尔集为 {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}
可以拓展到多个集合的情况

同时查询两个表(使用一个SQL语句),出现的就是笛卡尔集结果

SELECT *FROM students,score;

解决方法

要保证我们当时建表的时候,关系的那个键保持一致
SELECT *
FROM students,score
WHERE students.id = score.sid;

内连接划分

内连接分为:等值连接,非等值连接,自然连接

内连接之等值连接

两个表同时出现的id号(值)才显示

1. 99写法

SELECT * FROM
students st,score sc
WHERE st.id = sc.sid;

2.内连接写法

SELECT * FROM students st INNER JOIN score sc ON st.id = sc.sid

注意:

多表联查约束主外键一样,只是写法改变了
ON后面只写主外键4. (对于结果)如果还有条件直接在后面写WHERE5. 多表联查后还有条件就直接写AND

左链接

两表满足条件相同的数据查出来,如果左边表当中有不相同的数据,也把左边表当中的数据查出来.(换句话说就是左边表数据全部查询出来,右边表只查询满足条件的)

--OUTER可以省略
SELECT *
FROM students st
LEFT OUTER JOIN score sc
ON st.id = sc.sid;
右链接

右连接会把右当中的数据全部查出,左表当中只查满足条件的数据
站在表的角度去看,使用左连接就会把左边的内容全部查出,右边查出满足条件的
使用右连接,就把右边表当中的数据全部查出,左边查出满足条件的

SELECT *
FROM students st
RIGHT OUTER JOIN score sc
ON st.id = sc.sid;

自然连接

连接查询会产生无用笛卡尔集,我们通常使用主外键关系等式来去除它.
而自然连接无需你去给出主外键等式,它会自动找到这一等式
也就是说不用去写条件
但是自然连接有一个要求

  1. 两张连接的表中列名称和类型完全一致的列作为条件
  2. 会去除相同的列

子连接

子查询

什么是子查询
  1. 一个select语句中包含另外一个完整的select语句
  2. 或者说两个以上select,那么就是子查询语句了
子查询出现的位置

1.where后,把select查询出的结果当做另外一个select的条件值
2.from后,把查询出的结果当作一个新表

例如:
先查出项羽所在的部门编号

SELECT deptno FROM emp WHERE ename = '项羽';

再根据编号查询同一部门的员工

SELECT ename FROM emp WHERE deptno = 20;

把第1条查出来的结果当第2条语句的条件

SELECT ename,deptno FROM emp
WHERE deptno = (SELECT deptno FROM emp WHERE ename = '项羽')

相关文章

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • SQLAlchemy(四)

    知识要点: 1.多表查询 2.原生SQL的查询 多表查询 在MySQL中我们讲了多表查询,在SQLAlchemy中...

  • 深入浅出MySQL(五)

    多表查询 MySQL中的多表联查 MySQL中多表查询分为三种形式: 笛卡尔积的形式 内连接的形式 外连接的形式 ...

  • mysql数据库-多表查询

    今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MY...

  • Mysql-多表查询as索引

    1、Mysql多表查询2、information_schema 虚拟库3、索引 1、多表查询 方法(1) 根据需求...

  • 4/30day45_MySql多表

    回顾 MySQL多表查询&权限 今日目标 一 多表查询【重点...】 同时查询多张表获取到需要的数据组成完整的信息...

  • MySQL学习笔记二之单表查询与多表查询

    title: MySQL学习笔记二之单表查询与多表查询tags: MySQL 数据库categories: MyS...

  • MySQL 多表操作

    day07-多表操作 今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建...

  • MySQL 多表查询

    测试表 --建表--学生表CREATETABLE`Student`(`s_id`VARCHAR(20),`s_na...

  • MySql多表查询

    1、嵌套 2、联结

网友评论

      本文标题:MySQL多表查询

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