博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql基本查询语句和多表联合查询
阅读量:4100 次
发布时间:2019-05-25

本文共 1198 字,大约阅读时间需要 3 分钟。

mysql优化避免全表扫描策略总结

 MySQL行级锁、表级锁和页级锁(和索引的关系)

Mysql多表查询语句

基本查询语句:    select  可选字段名  from  表名;

条件查询:   select  可选字段名  from  表名  where  id < 5;

多条件查询:   select  可选字段名  from  表名  where  id < 5 and sex_id = 0;

模糊查询: select  可选字段名  from  表名  where  real_name like '王%';


多表查询

1、两表查询问题——场景:人员表(部门id字段)+部门表

转载:(必须要带条件查询,不然就会产生笛卡尔积)

select  可选显示的部分字段  from 人员表, 部门表 where 人员表.部门id字段 = 部门表.id;

第一种 多表联合查询

select real_name, department_name from employee,department where employee.department_id=department.id;

第二种 多表连接查询

内连接查询(和多表联合查询效果一样)
select *  from employee inner join department on employee.department_id=department.id;

左连接查询

select * from employee left join department on employee.department_id=department.id;

右连接查询

select * from employee right join department on employee.department_id=department.id;


2、多对多查询问题——场景:选课表(学生sid,课程cid)+课程表+学生表 

转载:

查询学生学号为1学生的有 哪些课程 分别什么老师(只查询了课程信息,没有查询学生信息——还是两表问题

select cname,cteacher from Course inner join selectCourse on selectCourse.cid=Course.cid and sid=1;

查询这三个表的详细信息(必须连接 课程表+学生表

select * from (selectCourse left join course on selectcourse.cid=course.cid) left join student on selectcourse.sid=student.sid;


LEFT JOIN延伸:

LEFT JOIN关联表中ON,WHERE后面跟条件的区别

转载:

多个left join 之间的执行顺序问题 (待验证....)

转载:


 

你可能感兴趣的文章
Java并发编程 | 一不小心就死锁了,怎么办?
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
(python版)《剑指Offer》JZ06:旋转数组的最小数字
查看>>
(python版)《剑指Offer》JZ13:调整数组顺序使奇数位于偶数前面
查看>>
(python版)《剑指Offer》JZ28:数组中出现次数超过一半的数字
查看>>
(python版)《剑指Offer》JZ30:连续子数组的最大和
查看>>
(python版)《剑指Offer》JZ02:替换空格
查看>>
JSP/Servlet——MVC设计模式
查看>>
使用JSTL
查看>>
Java 8新特性:Stream API
查看>>
管理用户状态——Cookie与Session
查看>>
最受欢迎的前端框架Bootstrap 入门
查看>>
JavaScript编程简介:DOM、AJAX与Chrome调试器
查看>>
通过Maven管理项目依赖
查看>>
通过Spring Boot三分钟创建Spring Web项目
查看>>
Spring的IoC(依赖注入)原理
查看>>
Guava快速入门
查看>>
Java编程基础:static的用法
查看>>
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>