MySQL__SQL语句
Posted s-blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL__SQL语句相关的知识,希望对你有一定的参考价值。
二、数据库操作(继上篇)
- 分页
语法:select * from 表名 limit start,count; 说明从start开始,获取count条数据
例句1:select * from 表名 where gender=1 limit 0,3; 获取性别为男的前三条数据
例句2:每页显示m条数据,当前显示第n页
求第n页的数据:select * from 表名 where is_delete=0 limit (n-1)*m,m; - 连接查询
分为:内连接、外连接(左连接,右连接)
- 内连接查询:查询结果为两个表匹配到的数据 - inner join
- 右连接查询:查询结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充 - right join
- 左连接查询:查询结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充 - left join
- 语法:select * from 表1 inner/right/left join 表2 on 表1.列 = 表2.列
- 例句1:使用内连接查询班级表和学生表(这里学生属于班级 所以查询学生表 on后面的条件使用到外键关联)
select * from students inner join classes on students.cls_id = classes.id;
例句2:使用左连接查询班级表和学生表(使用as为表另起别名)
select * from students as s left join classes as c on s.cls_id = c.id;
例句3:使用右连接查询班级表和学生表
select * from students as s right join classes as c on s.cls_id = c.id;
例句4:查询学生姓名以及班级姓名
select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id; - 总结:
1.在你需要查询匹配两个表的记录时使用内连接
2.在你不仅需要查询匹配两个表还需要其中一个表不匹配的记录时使用外连接,至于左/右 取决于表放在左边还是右边
- 自关联
- 一个表中的一列数据关联了这个表中的另外一列,这就是自关联,但是业务逻辑是不一样的
- 比较有代表性的案例就是地址省市区联动,省没有所属的省份,可以填写null,哪个城市所属的省份就写对应的id,这里不做详细说明了
- 子查询
介绍:在一个select语句中嵌入了另外一个select语句,那么被嵌入的那条select语句称之为
子查询语句
主查询:主要查询的对象,第一条select 语句
- 标量子查询(一行一列)
例句:查询班级学生平均年龄,查询大于平均年龄的学生
select * from students where age > (select avg(age) from students); - 列级子查询(一列多行)
例句:查询还有学生在班级的所有班级名称 -- 1.找出学生表中所有的班级id 2.找出班级表中对应的名字
select name from classes where id in (select cls_id from students); - 行级子查询(一行多列)
例句:查询班级年龄最大,身高最高的学生
行元素:将多个字段合成一个行元素,在行级子查询中会使用到的行元素
select * from students where (height,age) = (select max(height),max(age) from students); - 子查询中特定关键字使用
in 范围:主查询 where 条件 in(列子查询)
以上是关于MySQL__SQL语句的主要内容,如果未能解决你的问题,请参考以下文章