一、排列数据
1,排列规则
使用order by子句排序
- ASC(ascend):升序
- DESC(descend):降序
- order by子句在select语句的结尾
注意:如果没有使用排序操作,默认情况下查询返回的数据是添加数据的顺序显示的。
select id, name from employees order by id;
(注意:select后加的名称是选择的对象,即结果出来的表名)
若输入select id from employees order by id;
如果需要进行降序排列的话就需DESC:
select id from employees order by id desc;
通过ASC进行升序排序:
select id from employees order by id asc;
通过结果发现,如果在order by后没有显示指明排序的方式的话,则默认是升序排列。
在排序中,我们也可以通过别名进行排序:
select id as ID,name from employees order by ID;
2,二级排序:
显示学生信息,按照id进行升序排序,grade进行降序排序。
select id,grade,name from student order by id asc,grade desc;
二、分页
1,使用LIMIT实现对数据的分页显示
需求1:每页显示3条记录,此时显示第1页.
select id,grade,name from student limit 0,3;
需求2:每页显示3条记录,此时显示第2页.
select id,grade,name from student limit 3,3;
LIMIT格式:LIMIT 位置偏移量,条目数。
在MySQL8.0中有一个新特性:LIMIT......OFFSET..........
与单独的LIMIT相比,LIMIT后接数据条数,OFFSET后接偏移量。
三、多表查询
多表查询也称为关联查询,指两个或更多个表一起完成查询操作
前提条件:这些一起查询的表之间是有关系的(一对一、一对多),他们之间一定有关联字段,这些关联字段可能建立了外键,也可能没有建立外键。
1,笛卡尔积错误
笛卡尔积:是一个数学运算,假设我们有两个集合X和Y,那么X和Y的笛卡尔积就是X和Y的所有组合,也就是第一个对象来自X,第二个对象来自于Y的所有可能。组合个数即为两个集合中元素个数的乘积。
而出现笛卡尔积错误就是因为缺少了多表连接的条件,除此之外,还可能是连接条件无效、所有表中的所有行互相连接。
为了避免笛卡尔积,可以在where中加入有效的连接条件,查询语法为:
select table1.column,table2.column from table1,table2
where table1.column1=table2.column2; #连接条件
需要注意的是,如果查询语句中出现多个表中都存在的字段,则必须指明此字段所在的表。
如果给表起了别名,一旦在select或where中使用表名的话,则必须使用表的别名,而不能使用表的原名。
2,多表查询的分类
角度1:等值连接 vs 非等值连接
角度2:自连接 vs 非自连接
角度3:内连接 vs 外连接
内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行
外连接:两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接成为左(或右)外连接,没有匹配的行时,结果表中相应的列为空(NULL)。
如果是左外连接,则连接条件中左边的表也称为左表,右边称为从表;
如果是右外连接,则连接条件中右边的表也称为右表,左边称为从表;