SQL语句-DQL(数据查询语言)中排序、分页功能详解

2023-12-11 16:46:52

排序

取出按照某个字段升序或者降序进行排列的结果集,用 ORDER BY 关键字来实现。

SELECT [字段名1, ..., 字段n] FROM 表名 
[WHERE 条件] 
[ORDER BY 字段名1 [DESC|ASC], 字段名2 [DESC|ASC], ...字段名n [DESC|ASC] ];

desc|asc: 排序顺序关键字,desc是descend简写,表示降序,asc是ascend简写,表示升序。

如果不写排序关键字,默认是asc,升序排列

ORDER BY 后面可以跟多个排序字段,每个排序字段后可以有不同的排序顺序。

如果排序字段的值一致,则值相同的字段按照第二个排序字段进行排序,以此类推。如果只有一个排序字段,这些字段相同的记录,则无需排列。

例如:

(1)在student表中,按照分数降序(从上到下,依次减少)排列学生信息:

SELECT * FROM student ORDER BY score DESC;

order by

(2)在student表中,学生按照分数降序排列,如果分数相同,则按照年龄降序排序:

SELECT * FROM student ORDER BY score DESC, age DESC;

order by

分页

取出的结果集只需要显示其中一部分,用 LIMIT 关键字来实现,语法如下:

SELECT [字段名1, ..., 字段n] FROM 表名 
[WHERE 条件] 
[LIMIT 起始偏移量, 记录数];

起始偏移量,默认是0,如果是0,默认可以省略

记录数: 展示的记录行数

注意:LIMIT 只是mysql的分页关键字,不同的数据库可能不一样。

例如:

(1)取出排名前3的学生信息:

SELECT * FROM student LIMIT 0, 3;
// 或者
SELECT * FROM student LIMIT 3;

limit

(2)取出第二页,每页3个的学生信息:

SELECT * FROM student LIMIT 3, 3;

limit

如果pageSize表示每页的记录数,pageNo表示当前页码(从1开始),那么:

起始偏移量:(pageNo - 1) * pageSize

记录数:pageSize

student表和teacher表创建及插入数据完整语法

语法如下:

SELECT [字段名1, 字段名2, ...字段名n] [, function_name]
FROM 表名
WHERE 条件1, 条件2, ...条件n
GROUP BY 分组字段列表
[WITH ROLLUP]
HAVING 分组后条件列表
ORDER BY 排序字段列表
LIMIT 分页参数

首先,创建student和teacher表:

CREATE TABLE student (
  id INT PRIMARY KEY AUTO_INCREMENT COMMENT "主键id",
  name varchar(10) UNIQUE NOT NULL COMMENT "学生名称",
  age INT COMMENT "学生年龄",
  teacher_id INT COMMENT "学生辅导员id",
  score INT NOT NULL COMMENT "学生分数" 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO 
student (name, age, teacher_id, score) 
VALUES 
("李红", 20, 1, 80), 
("刘涛", 10, 1, 90), 
("王武", 19, 2, 80), 
("李明", 18, null, 90), 
("李小明", 15, null, 99);

CREATE TABLE teacher (
  id INT PRIMARY KEY AUTO_INCREMENT COMMENT "主键id",
  name VARCHAR(10) UNIQUE NOT NULL COMMENT "辅导员名称"
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO teacher (name) VALUES ("王老师"), ("蒋老师");

ALTER TABLE student ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(id);

select where

目录

相关推荐
MySQL入门-什么是MySQL,什么是SQL超详细的 SQL 语句 DDL(数据定义语言)讲解MySQL中如何对表字段进行增加、删除、改名、类型修改SQL语句-DML(数据操作语言)对表记录的插入、更改、删除命令MySQL中的约束详解超详细的DQL(数据查询语言)讲解