MYSQL一些命令④

1 阅读3分钟

内连接

链接查询可以实现多个表的查询,当查询的字段数据来自不同的表就可以使用链接查询。

连接查询可分为

  1. 内连接查询
  2. 左连接查询
  3. 右连接查询
  4. 自连接查询

内连接查询

语法

select 字段 from1 inner join2 on1.字段1=表2.字段2;

内连接查询.png

  • inner join就是内连接查询关键字
  • on就是链接查询条件

例:使用内链接查询学生表与班级表

select * from students inner join class on students.id=class.id;

总结

  • 内连接使用inner join..on..,on表示两个表的链接查询条件
  • 内连接根据链接查询条件取出两个表的”交集“

左连接

以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在使用null值填充

语法

select 字段 from1 left join2 on1.字段1=表2.字段2;

左连接查询.png

  • left join就是左连接查询关键字
  • on就是链接查询条件
  • 表1是左表
  • 表2是右表

例:使用左连接查询学生表与班级表

select * from students as s left join class as c on s.cls_id=c.id;

总结

  • 左连接使用left join .. on ..,on表示两个表的链接查询条件
  • 左连接以左表为主根据条件查询游标数据,右表数据不存在使用null值填充

右连接

以右表为主根据条件查询左表数据,如果根据条件查询坐标数据不存在使用null值填充

语法

select 字段 from1 right join2 on1.字段1=表2.字段2;

右连接查询.png

  • right join就是右连接查询关键字
  • on就是链接查询条件
  • 表1是左表
  • 表2是右表

使用右连接查询学生表与班级表

select * from students as s right join class as c on s.id=c.id;

总结

  • 右连接使用right join .. on..., on表示两个表的链接查询条件
  • 右连接以右表为主根据条件查询左表数据,坐标数据不存在使用null值填充。

自链接

坐标和右表是同一个表,根据链接查询条件查询两个表中的数据。

创建areas表

create table areas{
    id varchar(30) not null primary key,
    title varchar(30);
    pid varchar(30)
};

执行sql文件给areas表导入数据

source areas.sql;

自链接查询的用法

select c.id,c.title,c.pid,p.title from areas as c inner join areas as p on c.pid=p.id where p.title='山西省';
  • 自联结查询必须对表起别名

总结

  • 自链接查询就是把一张表模拟成左右两张表,然后进行连表查询
  • 自链接就是一种特殊的链接方式,链接的表还是本身这张表。

子查询

在一个select语句中,嵌入了另一个select语句,那么被嵌入的select语句就成为子查询语句,外部那个select语句被称为著=主查询

主查询与子查询的关系

  1. 子查询是嵌入到主查询中
  2. 子查询是辅助主查询的,要么充当条件,要么充当数据源
  3. 子查询是可以独立存在的语句,是一条完整的select语句

列:查询大于平均年龄的学生

select * from students where age>(select avg(age) from students);

查询年龄最大,身高最高的学生

select * from students where (age,height)=(select max(age),max(height) from students);

总结

  • 子查询是一个完整的SQL语句,子查询被嵌入到一对小括号里