【MySQL】 基本查询(上)

欢迎拜访:-CSDN博客
本篇主题:【MySQL】 基本查询(上)
发布时间:2025.2.14
隶属专栏:MySQL

在这里插入图片描述
CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)

目录
  • Create
    • 基本知识
    • 直接插入
      • 单行数据,指定列插入
      • 单行数据,全列插入
      • 多行数据,指定列插入
      • 多行数据,全列插入
    • 插入替换
      • 主键或者唯一键冲突
      • 插入时更新
        • 通过 MySQL 函数获取受到影响的数据行数
      • 插入时替换
  • Retrieve
    • 基本知识
    • select 列
      • 全列查询
      • 指定列进行查询
      • 查询字段为表达式
      • 为查询结果指定别名
      • 结果去重
    • where条件
      • 比较运算符
      • 逻辑运算符
      • 案例
    • 结果排序
      • 语法:
      • 案例:
    • 筛选分页结果
      • 语法
      • 案例

Create

基本知识

语法:

INSERT [INTO] table_name[(column [, column] ...)]VALUES (value_list) [, (value_list)] ...

案例:

mysql> create table students(-> id int unsigned primary key auto_increment,-> sn int not null unique key,-> name varchar(20) not null,-> qq varchar(32) unique key-> );
Query OK, 0 rows affected (0.02 sec)mysql> desc students;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| sn    | int(11)          | NO   | UNI | NULL    |                |
| name  | varchar(20)      | NO   |     | NULL    |                |
| qq    | varchar(32)      | YES  | UNI | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

直接插入

单行数据,指定列插入

into 可以省略,但是建议带上。

mysql> insert into students (sn, name, qq) values (123, '张飞', '4567890');
Query OK, 1 row affected (0.00 sec)mysql> select * from students;
+----+-----+--------+---------+
| id | sn  | name   | qq      |
+----+-----+--------+---------+
|  1 | 123 | 张飞   | 4567890 |
+----+-----+--------+---------+
1 row in set (0.00 sec)
单行数据,全列插入

into 可以省略,但是建议带上。

mysql> insert into students values (2, 124, '刘备', '4567891');
Query OK, 1 row affected (0.00 sec)mysql> select * from students;
+----+-----+--------+---------+
| id | sn  | name   | qq      |
+----+-----+--------+---------+
|  1 | 123 | 张飞   | 4567890 |
|  2 | 124 | 刘备   | 4567891 |
+----+-----+--------+---------+
2 rows in set (0.00 sec)
多行数据,指定列插入

每组数据之间用,(英文符号)隔开

mysql> insert into students (sn, name, qq) values (125, '关羽', '4562890'),(126, '诸葛亮', '423613719'),(127, '赵云', '3728140');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> select * from students;
+----+-----+-----------+-----------+
| id | sn  | name      | qq        |
+----+-----+-----------+-----------+
|  1 | 123 | 张飞      | 4567890   |
|  2 | 124 | 刘备      | 4567891   |
|  3 | 125 | 关羽      | 4562890   |
|  4 | 126 | 诸葛亮    | 423613719 |
|  5 | 127 | 赵云      | 3728140   |
+----+-----+-----------+-----------+
5 rows in set (0.00 sec)
多行数据,全列插入

每组数据之间用,(英文符号)隔开

mysql> insert into students values (10, 128, '曹操', '45637891'),(11, 129, '许攸','14723193'),(12, 130, '许褚','4723012');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> select * from students;
+----+-----+-----------+-----------+
| id | sn  | name      | qq        |
+----+-----+-----------+-----------+
|  1 | 123 | 张飞      | 4567890   |
|  2 | 124 | 刘备      | 4567891   |
|  3 | 125 | 关羽      | 4562890   |
|  4 | 126 | 诸葛亮    | 423613719 |
|  5 | 127 | 赵云      | 3728140   |
| 10 | 128 | 曹操      | 45637891  |
| 11 | 129 | 许攸      | 14723193  |
| 12 | 130 | 许褚      | 4723012   |
+----+-----+-----------+-----------+
8 rows in set (0.00 sec)

插入替换

主键或者唯一键冲突
-- 主键冲突
mysql> insert into students values (12, 133, '荀彧', '45167891');
ERROR 1062 (23000): Duplicate entry '12' for key 'PRIMARY'-- 唯一键冲突
mysql> insert into students values (14, 132, '荀彧', '45167891');
ERROR 1062 (23000): Duplicate entry '132' for key 'sn'
插入时更新

语法:

INSERT ... ON DUPLICATE KEY UPDATE

案例:

mysql> insert into students values (11, 131, 'xuyou', '112121') on duplicate key update sn=131, name='xuyou', qq='112121';
Query OK, 2 rows affected (0.00 sec)mysql> insert into students values (13, 132, '貂蝉', '1121211') on duplicate key update sn=132, name='貂蝉', qq='1121211';
Query OK, 1 row affected (0.01 sec)mysql> insert into students values (13, 132, '貂蝉', '1121211') on duplicate key update sn=132, name='貂蝉', qq='1121211';
Query OK, 0 rows affected (0.00 sec)mysql> select * from students;
+----+-----+-----------+-----------+
| id | sn  | name      | qq        |
+----+-----+-----------+-----------+
|  1 | 123 | 张飞      | 4567890   |
|  2 | 124 | 刘备      | 4567891   |
|  3 | 125 | 关羽      | 4562890   |
|  4 | 126 | 诸葛亮    | 423613719 |
|  5 | 127 | 赵云      | 3728140   |
| 10 | 128 | 曹操      | 45637891  |
| 11 | 131 | xuyou     | 112121    |
| 12 | 130 | 许褚      | 4723012   |
| 13 | 132 | 貂蝉      | 1121211   |
+----+-----+-----------+-----------+
9 rows in set (0.00 sec)

受影响的行数不同,表示插入的情况也不同。

  • 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
  • 1 row affected: 表中没有冲突数据,数据被插入
  • 2 row affected: 表中有冲突数据,并且数据已经被更新
通过 MySQL 函数获取受到影响的数据行数
mysql> select row_count();
+-------------+
| row_count() |
+-------------+
|           0 |
+-------------+
1 row in set (0.00 sec)
插入时替换
  • 主键 或者 唯一键 没有冲突,则直接插入

  • 主键 或者 唯一键 如果冲突,则删除后再插入

    mysql> replace into students (sn, name, qq) values (133, ‘许攸’, ‘12345612’);
    Query OK, 1 row affected (0.01 sec)

    mysql> replace into students (sn, name, qq) values (133, ‘许攸1’, ‘12345612’);
    Query OK, 2 rows affected (0.02 sec)

    mysql> replace into students (sn, name, qq) values (132, ‘许攸1’, ‘12345612’);
    Query OK, 3 rows affected (0.01 sec)

    mysql> select * from students;
    ±—±----±----------±----------+
    | id | sn | name | qq |
    ±—±----±----------±----------+
    | 1 | 123 | 张飞 | 4567890 |
    | 2 | 124 | 刘备 | 4567891 |
    | 3 | 125 | 关羽 | 4562890 |
    | 4 | 126 | 诸葛亮 | 423613719 |
    | 5 | 127 | 赵云 | 3728140 |
    | 10 | 128 | 曹操 | 45637891 |
    | 11 | 131 | xuyou | 112121 |
    | 12 | 130 | 许褚 | 4723012 |
    | 16 | 132 | 许攸1 | 12345612 |
    ±—±----±----------±----------+
    9 rows in set (0.00 sec)

受影响的行数不同,表示插入的情况也不同。

  • 1 row affected: 表中没有冲突数据,数据被插入
  • 2 row affected: 表中有一行冲突数据,删除后重新插入
  • n row affected: 表中有 n-1 行冲突数据,删除后重新插入

Retrieve

基本知识

语法:

SELECT[DISTINCT] {* | {column [, column] ...}[FROM table_name][WHERE ...][ORDER BY column [ASC | DESC], ...]LIMIT ...

案例:

-- 创建表结构
mysql> CREATE TABLE exam_result (-> id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,-> name VARCHAR(20) NOT NULL COMMENT '同学姓名',-> chinese float DEFAULT 0.0 COMMENT '语文成绩',-> math float DEFAULT 0.0 COMMENT '数学成绩',-> english float DEFAULT 0.0 COMMENT '英语成绩'-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc exam_result;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name    | varchar(20)      | NO   |     | NULL    |                |
| chinese | float            | YES  |     | 0       |                |
| math    | float            | YES  |     | 0       |                |
| english | float            | YES  |     | 0       |                |
+---------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)-- 插入测试数据
mysql> INSERT INTO exam_result (name, chinese, math, english) VALUES-> ('唐三藏', 67, 98, 56),-> ('孙悟空', 87, 78, 77),-> ('猪悟能', 88, 98, 90),-> ('曹孟德', 82, 84, 67),-> ('刘玄德', 55, 85, 45),-> ('孙权', 70, 73, 78),-> ('宋公明', 75, 65, 30);
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0

select 列

全列查询

通常情况下不建议使用 * 进行全列查询

  1. 查询的列越多,意味着需要传输的数据量越大;

  2. 可能会影响到索引的使用。(索引待后面文章讲解)

    mysql> select * from exam_result;
    ±—±----------±--------±-----±--------+
    | id | name | chinese | math | english |
    ±—±----------±--------±-----±--------+
    | 1 | 唐三藏 | 67 | 98 | 56 |
    | 2 | 孙悟空 | 87 | 78 | 77 |
    | 3 | 猪悟能 | 88 | 98 | 90 |
    | 4 | 曹孟德 | 82 | 84 | 67 |
    | 5 | 刘玄德 | 55 | 85 | 45 |
    | 6 | 孙权 | 70 | 73 | 78 |
    | 7 | 宋公明 | 75 | 65 | 30 |
    ±—±----------±--------±-----±--------+
    7 rows in set (0.00 sec)

指定列进行查询

指定列的顺序不需要按定义表的顺序来

mysql> select id, math, name from exam_result;
+----+------+-----------+
| id | math | name      |
+----+------+-----------+
|  1 |   98 | 唐三藏    |
|  2 |   78 | 孙悟空    |
|  3 |   98 | 猪悟能    |
|  4 |   84 | 曹孟德    |
|  5 |   85 | 刘玄德    |
|  6 |   73 | 孙权      |
|  7 |   65 | 宋公明    |
+----+------+-----------+
7 rows in set (0.00 sec)
查询字段为表达式
  1. 表达式不包含字段

    mysql> select id, name, 10 from exam_result;
    ±—±----------±—+
    | id | name | 10 |
    ±—±----------±—+
    | 1 | 唐三藏 | 10 |
    | 2 | 孙悟空 | 10 |
    | 3 | 猪悟能 | 10 |
    | 4 | 曹孟德 | 10 |
    | 5 | 刘玄德 | 10 |
    | 6 | 孙权 | 10 |
    | 7 | 宋公明 | 10 |
    ±—±----------±—+
    7 rows in set (0.00 sec)

  2. 表达式包含一个字段

    mysql> select id, name, 10+math from exam_result;
    ±—±----------±--------+
    | id | name | 10+math |
    ±—±----------±--------+
    | 1 | 唐三藏 | 108 |
    | 2 | 孙悟空 | 88 |
    | 3 | 猪悟能 | 108 |
    | 4 | 曹孟德 | 94 |
    | 5 | 刘玄德 | 95 |
    | 6 | 孙权 | 83 |
    | 7 | 宋公明 | 75 |
    ±—±----------±--------+
    7 rows in set (0.03 sec)

  3. 表达式包含多个字段

    mysql> select id, name, chinese+math+english from exam_result;
    ±—±----------±---------------------+
    | id | name | chinese+math+english |
    ±—±----------±---------------------+
    | 1 | 唐三藏 | 221 |
    | 2 | 孙悟空 | 242 |
    | 3 | 猪悟能 | 276 |
    | 4 | 曹孟德 | 233 |
    | 5 | 刘玄德 | 185 |
    | 6 | 孙权 | 221 |
    | 7 | 宋公明 | 170 |
    ±—±----------±---------------------+
    7 rows in set (0.00 sec)

为查询结果指定别名

语法:

SELECT column [AS] alias_name [...] FROM table_name;

as可以省略

案例:

mysql> select id, name, chinese+math+english as total from exam_result;
+----+-----------+-------+
| id | name      | total |
+----+-----------+-------+
|  1 | 唐三藏    |   221 |
|  2 | 孙悟空    |   242 |
|  3 | 猪悟能    |   276 |
|  4 | 曹孟德    |   233 |
|  5 | 刘玄德    |   185 |
|  6 | 孙权      |   221 |
|  7 | 宋公明    |   170 |
+----+-----------+-------+
7 rows in set (0.00 sec)
结果去重

去重前

mysql> select math from exam_result;
+------+
| math |
+------+
|   98 |
|   78 |
|   98 |
|   84 |
|   85 |
|   73 |
|   65 |
+------+
7 rows in set (0.00 sec)

去重后

mysql> select distinct math from exam_result;
+------+
| math |
+------+
|   98 |
|   78 |
|   84 |
|   85 |
|   73 |
|   65 |
+------+
6 rows in set (0.00 sec)

where条件

比较运算符

运算符

说明

> , >=, <, <=

大于,大于等于,小于,小于等于

=

等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL

<=>

等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)

!=, <>

不等于

BETWEEN a0 AND a1

范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)

IN (option, …)

如果是 option 中的任意一个,返回 TRUE(1)

IS NULL

是 NULL

IS NOT NULL

不是 NULL

LIKE

模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

逻辑运算符

运算符

说明

AND

多个条件必须都为 TRUE(1),结果才是 TRUE(1)

OR

任意一个条件为 TRUE(1), 结果为 TRUE(1)

NOT

条件为 TRUE(1),结过为 FALSE(0)

案例
  1. 英语不及格的同学及英语成绩(<60)

    mysql> select name, english from exam_result where english<60;
    ±----------±--------+
    | name | english |
    ±----------±--------+
    | 唐三藏 | 56 |
    | 刘玄德 | 45 |
    | 宋公明 | 30 |
    ±----------±--------+
    3 rows in set (0.00 sec)

  2. 语文成绩在 [80, 90] 分的同学及语文成绩

使用 AND 进行条件连接

mysql> select name, chinese from exam_result where chinese>=80 and chinese<=90;
+-----------+---------+
| name      | chinese |
+-----------+---------+
| 孙悟空    |      87 |
| 猪悟能    |      88 |
| 曹孟德    |      82 |
+-----------+---------+
3 rows in set (0.00 sec)

使用 BETWEEN ... AND ... 条件

mysql> select name, chinese from exam_result where chinese between 80 and 90;
+-----------+---------+
| name      | chinese |
+-----------+---------+
| 孙悟空    |      87 |
| 猪悟能    |      88 |
| 曹孟德    |      82 |
+-----------+---------+
3 rows in set (0.00 sec)
  1. 数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩的同学及数学成绩

使用 OR 进行条件连接

mysql> select name, math from exam_result where math=58 or math=59 or math=98 or math=99;
+-----------+------+
| name      | math |
+-----------+------+
| 唐三藏    |   98 |
| 猪悟能    |   98 |
+-----------+------+
2 rows in set (0.01 sec)

使用 IN 条件

mysql> select name, math from exam_result where math in (58, 59, 98, 99);
+-----------+------+
| name      | math |
+-----------+------+
| 唐三藏    |   98 |
| 猪悟能    |   98 |
+-----------+------+
2 rows in set (0.01 sec)
  1. 姓孙的同学 及 孙某同学

% 匹配任意多个(包括 0 个)任意字符

mysql> select name from exam_result where name like '孙%';
+-----------+
| name      |
+-----------+
| 孙悟空    |
| 孙权      |
+-----------+
2 rows in set (0.00 sec)

_ 匹配严格的一个任意字符

mysql> select name from exam_result where name like '孙_';
+--------+
| name   |
+--------+
| 孙权   |
+--------+
1 row in set (0.00 sec)
  1. 语文成绩好于英语成绩的同学

WHERE 条件中比较运算符两侧都是字段

mysql> select name, chinese, english from exam_result where chinese > english;
+-----------+---------+---------+
| name      | chinese | english |
+-----------+---------+---------+
| 唐三藏    |      67 |      56 |
| 孙悟空    |      87 |      77 |
| 曹孟德    |      82 |      67 |
| 刘玄德    |      55 |      45 |
| 宋公明    |      75 |      30 |
+-----------+---------+---------+
5 rows in set (0.00 sec)
  1. 总分在 200 分以下的同学

WHERE 条件中使用表达式
别名不能用在 WHERE 条件中

mysql> select name, chinese+math+english as 总分 from exam_result where chinese+math+english<200;
+-----------+--------+
| name      | 总分   |
+-----------+--------+
| 刘玄德    |    185 |
| 宋公明    |    170 |
+-----------+--------+
2 rows in set (0.00 sec)
  1. 语文成绩 > 80 并且不姓孙的同学

ANDNOT 的使用

mysql> select name, chinese from exam_result where chinese>80 and name not like '孙%';
+-----------+---------+
| name      | chinese |
+-----------+---------+
| 猪悟能    |      88 |
| 曹孟德    |      82 |
+-----------+---------+
2 rows in set (0.00 sec)
  1. 孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80

综合查询

mysql> select name, chinese, math, english, chinese+math+english as 总分 ->from exam_result ->where name like '孙_' or (chinese+math+english>200 and chinese<math and english>80);
+-----------+---------+------+---------+--------+
| name      | chinese | math | english | 总分   |
+-----------+---------+------+---------+--------+
| 猪悟能    |      88 |   98 |      90 |    276 |
| 孙权      |      70 |   73 |      78 |    221 |
+-----------+---------+------+---------+--------+
2 rows in set (0.00 sec)
  1. NULL 的查询

    mysql> create table test(
    -> id int,
    -> name varchar(20)
    -> );
    Query OK, 0 rows affected (0.01 sec)

    mysql> insert into test values (1,‘张三’);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test values (null,‘张三’);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test values (1,null);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test values (null,null);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test values (1,‘’);
    Query OK, 1 row affected (0.00 sec)

    mysql> select * from test;
    ±-----±-------+
    | id | name |
    ±-----±-------+
    | 1 | 张三 |
    | NULL | 张三 |
    | 1 | NULL |
    | NULL | NULL |
    | 1 | |
    ±-----±-------+
    5 rows in set (0.00 sec)

    mysql> select * from test where name is null;
    ±-----±-----+
    | id | name |
    ±-----±-----+
    | 1 | NULL |
    | NULL | NULL |
    ±-----±-----+
    2 rows in set (0.00 sec)

    mysql> select * from test where name is not null;
    ±-----±-------+
    | id | name |
    ±-----±-------+
    | 1 | 张三 |
    | NULL | 张三 |
    | 1 | |
    ±-----±-------+
    3 rows in set (0.00 sec)

NULLNULL的比较,=<=>的区别

SELECT NULL = NULL, NULL = 1, NULL = 0;
+-------------+----------+----------+
| NULL = NULL | NULL = 1 | NULL = 0 |
+-------------+----------+----------+
|        NULL |     NULL |     NULL |
+-------------+----------+----------+
1 row in set (0.00 sec)SELECT NULL <=> NULL, NULL <=> 1, NULL <=> 0;
+---------------+------------+------------+
| NULL <=> NULL | NULL <=> 1 | NULL <=> 0 |
+---------------+------------+------------+
|             1 |          0 |          0 |
+---------------+------------+------------+
1 row in set (0.00 sec)

结果排序

语法:
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
  • ASC 为升序(从小到大)
  • DESC 为降序(从大到小)
  • 默认为 ASC
  • 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
案例:
  1. 同学及数学成绩,按数学成绩升序显示

    mysql> select name, math from exam_result order by math asc;
    ±----------±-----+
    | name | math |
    ±----------±-----+
    | 宋公明 | 65 |
    | 孙权 | 73 |
    | 孙悟空 | 78 |
    | 曹孟德 | 84 |
    | 刘玄德 | 85 |
    | 唐三藏 | 98 |
    | 猪悟能 | 98 |
    ±----------±-----+
    7 rows in set (0.02 sec)

  2. id及姓名,按姓名排序显示

NULL 视为比任何值都小,升序出现在最上面

mysql> select id,name from test order by name asc;
+------+--------+
| id   | name   |
+------+--------+
|    1 | NULL   |
| NULL | NULL   |
|    1 |        |
|    1 | 张三   |
| NULL | 张三   |
+------+--------+
5 rows in set (0.00 sec)

NULL 视为比任何值都小,降序出现在最下面

mysql> select id,name from test order by name desc;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
| NULL | 张三   |
|    1 |        |
|    1 | NULL   |
| NULL | NULL   |
+------+--------+
5 rows in set (0.00 sec)
  1. 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示

多字段排序,排序优先级随书写顺序

mysql> select name, math, english, chinese from exam_result order by math desc, english asc, chinese asc;
+-----------+------+---------+---------+
| name      | math | english | chinese |
+-----------+------+---------+---------+
| 唐三藏    |   98 |      56 |      67 |
| 猪悟能    |   98 |      90 |      88 |
| 刘玄德    |   85 |      45 |      55 |
| 曹孟德    |   84 |      67 |      82 |
| 孙悟空    |   78 |      77 |      87 |
| 孙权      |   73 |      78 |      70 |
| 宋公明    |   65 |      30 |      75 |
+-----------+------+---------+---------+
7 rows in set (0.00 sec)
  1. 查询同学及总分,由高到低

ORDER BY 中可以使用表达式

mysql> select name, chinese+english+math from exam_result order by chinese+english+math desc;
+-----------+----------------------+
| name      | chinese+english+math |
+-----------+----------------------+
| 猪悟能    |                  276 |
| 孙悟空    |                  242 |
| 曹孟德    |                  233 |
| 唐三藏    |                  221 |
| 孙权      |                  221 |
| 刘玄德    |                  185 |
| 宋公明    |                  170 |
+-----------+----------------------+
7 rows in set (0.00 sec)

ORDER BY 子句中可以使用列别名

mysql> select name, chinese+english+math as total from exam_result order by total desc;
+-----------+-------+
| name      | total |
+-----------+-------+
| 猪悟能    |   276 |
| 孙悟空    |   242 |
| 曹孟德    |   233 |
| 唐三藏    |   221 |
| 孙权      |   221 |
| 刘玄德    |   185 |
| 宋公明    |   170 |
+-----------+-------+
7 rows in set (0.00 sec)
  1. 查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

结合WHERE 子句 和 ORDER BY 子句

mysql> select name, math from exam_result-> where name like '孙%' or name like '曹%'-> order by math desc;
+-----------+------+
| name      | math |
+-----------+------+
| 曹孟德    |   84 |
| 孙悟空    |   78 |
| 孙权      |   73 |
+-----------+------+
3 rows in set (0.00 sec)

筛选分页结果

语法

起始下标为 0

  1. 从 s 开始,筛选 n 条结果

    SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT s, n

  2. 从 0 开始,筛选 n 条结果

    SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT n;
    ;

  3. 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用

    SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT n OFFSET s;

只有数据准备好了,你才要显示,limit的本质功能是显示.

案例

建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死按 id 进行分页,每页 3 条记录,分别显示1、2、3页

第一页

ysql> select id, name, chinese, math, english from exam_result order by id limit 3 offset 0;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  1 | 唐三藏    |      67 |   98 |      56 |
|  2 | 孙悟空    |      87 |   78 |      77 |
|  3 | 猪悟能    |      88 |   98 |      90 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)

第二页

mysql> select id, name, chinese, math, english from exam_result order by id limit 3 offset 3;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  4 | 曹孟德    |      82 |   84 |      67 |
|  5 | 刘玄德    |      55 |   85 |      45 |
|  6 | 孙权      |      70 |   73 |      78 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)

第三页,如果结果不足 3 个,不会有影响

mysql> select id, name, chinese, math, english from exam_result order by id limit 3 offset 6;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  7 | 宋公明    |      75 |   65 |      30 |
+----+-----------+---------+------+---------+
1 row in set (0.00 sec)

写在最后:以上内容是我在学习以后得一些总结和概括,如有错误或者需要补充的地方欢迎各位大佬评论或者私信我交流!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39071.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3(自定义指令directive详解)

文章目录 前言一、自定义指令的生命周期钩子二、自定义指令的创建与注册使用三、扩展 简化形式​总结 前言 在Vue3中&#xff0c;自定义指令是一种强大的工具&#xff0c;允许开发者扩展和增强HTML元素的功能。以下是对Vue3中自定义指令的详细解析&#xff1a; 一、自定义指令…

进制转换(R转十)(1290. 二进制转换十进制、1292. 十六进制转十进制、1291. 八进制转十进制、1405. 小丽找潜在的素数)

题单地址&#xff1a;题单中心-东方博宜OJ 这里以二进制转十进制为例&#xff08;按位加权求和法&#xff09; 1290. 二进制转换十进制 问题描述 请将一个 25 位以内的 2 进制正整数转换为 1010 进制&#xff01; 输入 一个 25 位以内的二进制正整数。 输出 该数对应的…

个人博客系统 --- 测试报告

一、项目功能介绍 该项目由&#xff1a;登录模块、博客首页模块、博客详情页模块、博客编辑页模块四个功能模块组成。 该系统实现了个人博客的保存以及记录了发布日期、时间、发布人等信息。 二、测试内容与测试用例 我们需要对该系统进行功能测试&#xff0c;界面测试&…

从入门到精通【MySQL】 CRUD

文章目录 &#x1f4d5;1. Create 新增✏️1.1 单行数据全列插入✏️1.2 单行数据指定列插入✏️1.3 多行数据指定列插入 &#x1f4d5;2. Retrieve 检索✏️2.1 全列查询✏️2.2 指定列查询✏️2.3 查询字段为表达式✏️2.4 为查询结果指定别名✏️2.5 结果去重查询 &#x1f…

C++ 继承

目录 一、继承的概念与定义 1.1 继承的概念 1.2 继承的定义 1.2.1 语法 1.2.2 继承关系和访问限定符 1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、C11 final 六、继承与友元 七、继承与静态成…

Python及PyCharm配置教程:从零开始搭建开发环境

引言 Python作为一门简单易学、功能强大的编程语言&#xff0c;近年来在数据分析、人工智能、Web开发等领域得到了广泛应用。而PyCharm作为一款专为Python开发者设计的集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了丰富的功能和工具&#xff0c;能够极大地提高开…

python网络爬虫开发实战之网页数据的解析提取

目录 1 XPath的使用 1.1 XPath概览 1.2 XPath常用规则 1.3 准备工作 1.4 实例引入 1.5 所有节点 1.6 节点 1.7 父节点 1.8 属性匹配 1.9 文本获取 1.10 属性获取 1.11 属性多值匹配 1.12 多属性匹配 1.13 按序选择 1.14 节点轴选择 2 Beautiful Soup 2.1 简介…

【AI】Orin Nano+ubuntu22.04上移植YoloV11,并使用DeepStream测试成功

1、准备工作 使用 sdk-manager 烧写 OrinNano, JetPack版本为6.0 DP,对应操作系统为:Ubuntu22.04 参见博客:【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04 2、安装 PyTorch 2.1 下载依赖 1)安装onnx pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/sim…

在coze工作流中将数据回写到飞书表格

在coze工作流中将数据回写到飞书表格

datawhale组队学习-大语言模型-task5:主流模型架构及新型架构

目录 5.3 主流架构 5.3.1 编码器-解码器架构 5.3.2 因果解码器架构 5.3.3 前缀解码器架构 5.4 长上下文模型 5.4.1 扩展位置编码 5.4.2 调整上下文窗口 5.4.3 长文本数据 5.5 新型模型架构 5.5.1 参数化状态空间模型 5.5.2 状态空间模型变种 5.3 主流架构 在预训…

stc8g1k08a+cd4017红绿灯

2,4脚供电,567脚控制三个灯,另外三只脚控制cd4017脉冲输入,复位清零和数码管共阴极 数字只能显示一位0-9 hex文件 蓝奏云 main.c sfr p5 0xc8;//p5端口寄存器 sfr P5M1 0xc9;//p5端口m1配置寄存器 sfr P5M0 0xca;//p5端口m0配置寄存器 sbit p54 p5^4;//p5.4端口 sbit p5…

【MySQL】基本查询(表的增删查改+聚合函数)

目录 一、Create1.1 单行数据 全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 二、Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 比较运算符2.2.2 逻辑运算符2.2.3 案…

Qt中通过QLabel实时显示图像

Qt中的QLabel控件用于显示文本或图像&#xff0c;不提供用户交互功能。以下测试代码用于从内置摄像头获取图像并实时显示&#xff1a; Widgets_Test.h&#xff1a; class Widgets_Test : public QMainWindow {Q_OBJECTpublic:Widgets_Test(QWidget *parent nullptr);~Widgets…

缓存监控治理在游戏业务的实践和探索

作者&#xff1a;来自 vivo 互联网服务器团队- Wang Zhi 通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。 一、缓存监控的背景 游戏业务中存在大量的高频请求尤其是对热门游戏而言&#xff0c;而应对高并发场景缓存是一个常见且有效的手段。 游戏业…

城市街拍人像自拍电影风格Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 城市街拍人像自拍的电影风格 Lr 调色&#xff0c;是利用 Adobe Lightroom 软件&#xff0c;对在城市街景中拍摄的人像自拍照片进行后期处理&#xff0c;使其呈现出电影画面般独特的视觉质感与艺术氛围。通过一系列调色操作&#xff0c;改变照片的色彩、明暗、对比等元…

爬虫案例-爬取某站视频

文章目录 1、下载FFmpeg2、爬取代码3、效果图 1、下载FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。 点击下载: ffmpeg 安装并配置 FFmpeg 步骤&#xff1a; 1.下载 FFmpeg&#xff1a; 2.访问 FFmpeg 官网。 3.选择 Wi…

LeetCode热题100精讲——Top3:最长连续序列【哈希】

你好&#xff0c;我是安然无虞。 文章目录 题目背景最长连续序列C解法Python解法 题目背景 如果大家对于 哈希 类型的概念并不熟悉, 可以先看我之前为此专门写的算法详解: 蓝桥杯算法竞赛系列第九章巧解哈希题&#xff0c;用这3种数据类型足矣 最长连续序列 题目链接&#x…

pyecharts在jupyter notebook中不能够渲染图表问题。

在使用jupyter notebook中使用pyecharts绘制可视化图表的时候,发现图表不能渲染到页面中,生成的html是没问题的,本文主要解决在jupyter notebook中不能渲染这个问题。 1、原因分析 2、解决办法 如果是使用的虚拟环境,需要下你提前激活虚拟环境,再进行下列操作。 因为需要…

使用python numpy计算并显示音频数据的频谱信息

一 概念 最近需要用到这个数据。笔者需要&#xff0c;使用 Python 的numpy库结合scipy和matplotlib库来计算并显示音频数据频谱信息的示例代码。我们将使用scipy.io.wavfile来读取音频文件&#xff0c;numpy进行快速傅里叶变换&#xff08;FFT&#xff09;计算频谱&#xff0…

算法刷题整理合集(七)·【算法赛】

本篇博客旨在记录自已的算法刷题练习成长&#xff0c;里面注有详细的代码注释以及和个人的思路想法&#xff0c;希望可以给同道之人些许帮助。本人也是算法小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误或遗漏之处&#xff0c;望各位可以在评论区指正出来&#xf…