当前位置: 首页 > news >正文

【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)
  1. 表达式包含一个字段
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)
  1. 表达式包含多个字段
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)
  1. 语文成绩在 [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)

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

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)
  1. 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
  1. 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
;
  1. 从 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)

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

相关文章:

【MySQL】 基本查询(上)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;【MySQL】 基本查询(上) 发布时间&#xff1a;2025.2.14 隶属专栏&#xff1a;MySQL CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; 目录 Create基…...

python 爬虫教程 0 基础入门 一份较为全面的爬虫python学习方向

文章目录 前言一、Python 爬虫简介二、环境搭建1. 下载 Python2. 安装 Python3. 安装必要的库 三、一个简单的爬虫示例四、应对网站反爬机制五、深入学习方向 前言 以下是一份较为全面的 Python 爬虫教程&#xff0c;涵盖基础知识、环境搭建、简单示例、反爬应对及深入学习方向…...

总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证

总结&#xff1a;使用JDK原生HttpsURLConnection&#xff0c;封装HttpsUtil工具类&#xff0c;加载自定义证书验证&#xff0c;忽略ssl证书验证 一HttpsUtil工具类二SSLUtil工具类 一HttpsUtil工具类 package com.example.util;import javax.net.ssl.HttpsURLConnection; impo…...

你认为如何理解“约定大于配置”?

SpringBoot的“约定大于配置”&#xff08;Convention Over Configuration&#xff09;是一种核心理念&#xff0c;旨在简化开发过程&#xff0c;减少开发人员在配置上的繁琐工作。以下是对其含义的详细介绍&#xff1a; 一、定义与目的 定义&#xff1a;约定优于配置&#x…...

Linux 基础IO——重定向和缓冲区

目录 一、重定向 1、重定向的本质 2、使用 dup2 系统调用 &#xff08;1&#xff09;输出重定向 &#xff08;2&#xff09;追加重定向 (3) 输入重定向 ​ 二、缓冲区 1.理解缓冲区 2.缓冲区刷新问题 3.为什么要有缓冲区&#xff1f; 4.这个缓冲区在哪里&#xff…...

基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!

一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统&#xff0c;专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈&#xff0c;提供了丰富的功能…...

华为云之CodeArts IDE的使用体验

一、CodeArts IDE介绍 1.1 CodeArts IDE简介 CodeArts IDE定位华为云开发者桌面&#xff0c;是利用华为自研IDE内核技术&#xff0c;面向华为云开发者提供的智能化可扩展桌面集成开发环境&#xff08;IDE&#xff09;&#xff0c;结合华为云行业和产业开发套件&#xff0c;实现…...

DeepSeek-VL2 环境配置与使用指南

DeepSeek-VL2 环境配置与使用指南 DeepSeek-VL2 是由 DeepSeek 公司开发的一种高性能视觉-语言模型&#xff08;VLM&#xff09;。它是 DeepSeek 系列多模态模型中的一个版本&#xff0c;专注于提升图像和文本之间的交互能力。 本文将详细介绍如何配置 DeepSeek-VL2 的运行环…...

超纯水设备的智能化控制系统为用户带来安全简便的操作体验

随着信息技术的发展&#xff0c;智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列&#xff0c;配备了高性能的PLC控制系统及人机交互界面&#xff0c;实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统&#xff0c;探讨它如…...

若依系统环境搭建记录

开源若依系统网上资料也很全的&#xff0c;本篇博文记录下自己搭建环境过程中遇到的一些问题。 配置Maven和编辑器选择 我懒得配置Eclipse了&#xff0c;直接用vscode作为编辑器&#xff0c;后面构建运行都用命令行。 配置数据库连接 按照mysql5.7按网上教程即可&#xff1…...

基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南

基于Docker-compose的禅道部署实践&#xff1a;自建MySQL与Redis集成及故障排查指南 禅道镜像版本&#xff1a;easysoft/zentao:21.4 Redis版本&#xff1a;redis:6.2.0 Mysql版本&#xff1a;mysql:8.0.35 文章目录 **基于Docker-compose的禅道部署实践&#xff1a;自建MySQL与…...

为AI聊天工具添加一个知识系统 之102 详细设计之43 自性三藏 之3 祖传代码

本文要点 法宝和三藏 总括如下&#xff1a; 三藏[经/律/论] 法宝&#xff1a;法阵/法轮/法力&#xff08;三“件” 证件 / 表件 / 物件 &#xff0c;分别对应三藏&#xff1a;论藏/律藏/经藏 --反序&#xff09;。“法宝”演示了 发轮轮转的法阵中物件具有的法力。 这里的“…...

fork: retry: No child processes-linux18

根据错误信息 fork: retry: Resource temporarily unavailable 和 sh: fork: retry: No child processes&#xff0c;这通常是因为系统资源不足&#xff08;例如可用的进程数、内存或 CPU 限制&#xff09;导致的。为了解决这个问题&#xff0c;您可以尝试以下几种方法&#xf…...

渗透测试--文件包含漏洞

文件包含漏洞 前言 《Web安全实战》系列集合了WEB类常见的各种漏洞&#xff0c;笔者根据自己在Web安全领域中学习和工作的经验&#xff0c;对漏洞原理和漏洞利用面进行了总结分析&#xff0c;致力于漏洞准确性、丰富性&#xff0c;希望对WEB安全工作者、WEB安全学习者能有所帮助…...

【物联网】电子电路基础知识

文章目录 一、基本元器件1. 电阻2. 电容3. 电感4. 二极管(1)符号(2)特性(3)实例分析5. 三极管(1)符号(2)开关特性(3)实例6. MOS管(产效应管)(1)符号(2)MOS管极性判定(3)MOS管作为开关(4)MOS管vs三极管7. 门电路(1)与门(2)或门(3)非门二、常用元器件…...

vue学习10

1.GPT和Copilot Copilot Tab接受 删除键&#xff0c;不接受 ctrlenter更多方案 更适合的是修改方向 const submitForm async () > {//等待校验结果await formRef.value.validate()//提交修改await userUpdateInfoService(form.value)//通知user模块&#xff0c;进行数据更…...

【C语言】C语言 停车场管理系统的设计与实现(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设…...

LeetCodehot100 力扣热题100 二叉树展开为链表

代码思路 目标&#xff1a; 将二叉树展平&#xff08;flatten&#xff09;为一个单链表。展平后的链表应该按照前序遍历的顺序排列节点&#xff0c;即&#xff1a; • 节点的左子树指针设置为 nullptr。 • 节点的右子树指针指向下一个节点。 代码注释及思路 class Solution…...

备战蓝桥杯 Day1 回顾语言基础

开启蓝桥杯刷题之路 Day1 回顾语言基础 1.配置dev 工具->编译选项->勾选编译时加入以下命令->设定编译器配置(release和debug)都要-> -stdc11 ->代码生成/优化->代码生成/优化->语言标准(-std)->ISO C11 ->代码警告->显示最多警告信息(-Wall)…...

基于Ceedling的嵌入式软件单元测试

Ceedling 如果你使用 Ceedling&#xff08;一个针对 C 代码单元测试的构建管理器&#xff09;&#xff0c;可以更方便地管理测试。Ceedling 会自动处理 Unity 和 CMock 的集成&#xff0c;无需手动编写 Makefile。 1.环境搭建 1.1 Ruby环境 sudo apt-get install ruby1.2 安…...

聊一聊FutureTask源码中体现的“自旋锁”思想

前言 这篇文章记录了笔者自己对FutureTask的部分源码设计的思考与心得&#xff0c;属于笔者自己的观点&#xff0c;若有哪位热爱源码研究的同仁觉得我说的不对&#xff0c;欢迎批评指正。 提示&#xff1a;在阅读之前必须对FutureTask的源码和实现原理有一定的了解。本文要聊…...

自有证书的rancher集群使用rke部署k8s集群异常

rancher使用自签域名&#xff0c;或者商业证书容易踩到的坑。 最开始的报错&#xff1a; docker logs kubelet‘s id E0214 13:04:14.590268 9614 pod_workers.go:1300] "Error syncing pod, skipping" err"failed to \"StartContainer\" for …...

LabVIEW外腔二极管激光器稳频实验

本项目利用LabVIEW软件开发了一个用于外腔二极管激光器稳频实验的系统。系统能够实现激光器频率的稳定控制和实时监测&#xff0c;为激光实验提供了重要支持。 项目背景&#xff1a; 系统解决了外腔二极管激光器频率不稳定的问题&#xff0c;以满足对激光器频率稳定性要求较高…...

使用docker compose启动postgres并设置时区

设置PostGres时区 方法 1: 使用 POSTGRES_INITDB_ARGS 设置时区方法 2: 使用初始化脚本设置时区创建 init-user-db.sql更新 docker-compose.yml 启动服务 要在启动 PostgreSQL 数据库时设置时区&#xff0c;可以通过在 docker-compose.yml 文件中添加环境变量或通过配置文件来实…...

杜绝遛狗不牵绳,AI技术助力智慧城市宠物管理

在我们的生活中&#xff0c;宠物扮演着越来越重要的角色。然而&#xff0c;随着养宠人数的增加&#xff0c;一系列问题也随之而来&#xff0c;如烈性犬伤人、遛狗不牵绳、流浪犬泛滥等。这些问题不仅影响了社会秩序&#xff0c;也给宠物本身带来了安全隐患。幸运的是&#xff0…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第二十节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;WriteMemoryByAddress_0x3D服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月14日 关键词&#xff1a;UDS协议、0x3D服务、内存写入、ISO 14229-1:2023、ECU测试 一、服务功能概述…...

[npm install 报错] Verion 9 of Highlight.js has reached EOL

1、在项目中执行npm install 报错 Verion 9 of Highlight.js has reached EOL,如下图: 2、报错原因 Highlight.js 不再支持10以前的版本&#xff0c;需下载10及之后的版本 3、解决办法 打开项目中的package.json文件&#xff0c;将highlight.js的版本修改为:10.7.2,删除node…...

Flutter Gradle 命令式插件正式移除,你迁移旧版 Gradle 配置了吗?

在 Flutter 3.29 版本里官方正式移除了 Flutter Gradle Apply 插件&#xff0c;其实该插件自 3.19 起已被弃用&#xff0c;同时 Flutter 团队后续也打算把 Flutter Gradle 从 Groovy 转换为 Kotlin&#xff0c;并将其迁移到使用 AGP&#xff08;Android Gradle Plugin&#xff…...

CCF-GESP 等级考试 2024年9月认证C++二级真题解析

2024年9月真题 一、单选题&#xff08;每题2分&#xff0c;共30分&#xff09; 正确答案&#xff1a;A 考察知识点&#xff1a;计算机存储 解析&#xff1a;磁心存储元件是早期计算机中用于存储数据的部件&#xff0c;它和现代计算机中的内存功能类似&#xff0c;都是用于临时…...

CubeMX配置STM32L071KZT6

明确需要配置的项 下面是工作中遇到某个项目提炼出来的的功能需求。其中MCU选用STM32L071KZT6。 名称 标识 IO功能 对应引脚 备注 蜂鸣器 BUZZER 开关量输出 PA2 指示灯 LED-R PA15 LED-G PA12 LED-Y PA11 按键 KEY-1 开关量输入 PB5 外…...

RadASM环境,win32汇编入门教程之二

;win32汇编环境&#xff0c;RadAsm入门教程之二 ;前面我们已经学了教程一&#xff0c;生成了第一个软件。那么让我们继续我们的学习旅程。本教程讲解一下基本窗口模版的原理。让我们打开RadASM后&#xff0c;双击右侧的ABC.Asm文件&#xff0c;一点点研究。 ;首先&#xff0c;我…...

mysql开启gtid并配置主从

默认主从都开启了bin log. 1.主从都在/etc/my.cnf中加入并重启服务 gtid_mode ON enforce_gtid_consistency ON 2.在主库创建用户并授权 create user slave identified with mysql_native_password by 123456 mysql>GRANT REPLICATION SLAVE ON *.* to slave% identified…...

RAG科普文!检索增强生成的技术全景解析

RAG 相关技术的八个主题&#xff1a;https://pub.towardsai.net/a-taxonomy-of-retrieval-augmented-generation-a39eb2c4e2ab 增强生成 (RAG) 是塑造应用生成式 AI 格局的关键技术。Lewis 等人在其开创性论文中提出了一个新概念面向知识密集型 NLP 任务的检索增强生成之后&…...

【Sceneform-EQR】实现3D场景背景颜色的定制化(背景融合的方式、Filament材质定制)

写在前面的话 Sceneform-EQR是基于&#xff08;filament&#xff09;扩展的一个用于安卓端的渲染引擎。故本文内容对Sceneform-EQR与Filament都适用。 需求场景 在使用Filament加载三维场景的过程中&#xff0c;一个3D场景对应加载一个背景纹理。而这样的话&#xff0c;即便…...

python自动化测试之统一请求封装及通过文件实现接口关联

一、接口文档怎么看&#xff1f; http://www.aaa.com/api.php?sindex/index&applicationapp&application_client_typeweixi n&tokentokenvalue&ajaxajax 参数解释&#xff1a; http 协议 www.aaa.com IP和端口 api.php 接口的地址 sindex/index 接口名称以 …...

Redis笔记

文章目录 Redis笔记通用命令get和setkeysexistsdelexpirettlRedis的key过期策略定时器的实现原理type 持久化RDB(Redis DataBase)---定期备份bgsave AOF(Append Only File)---实时备份 Redis笔记 Redis是一个“客户端-服务器”结构的程序&#xff0c;客户端和服务器之间通过网…...

repo学习使用

Repo 是以 Git 为基础构建的代码库管理工具。Repo 可以在必要时整合多个 Git 代码库&#xff0c;将相关内容上传到版本控制系统。借助单个 Repo 命令&#xff0c;可以将文件从多个代码库下载到本地工作目录。 Repo 命令是一段可执行的 Python 脚本&#xff0c;你可以将其放在路…...

windows 通过docker 安装mysql

参考&#xff1a;Docker安装并使用Mysql&#xff08;可用详细&#xff09;_docker 安装mysql-CSDN博客 1. 拉取镜像&#xff1a;docker pull mysql:5.7 2. 查看镜像&#xff1a;docker image 3. 创建mysql 容器实例&#xff0c;并将data 目录挂载到本地d盘上 docker run --n…...

高效利用Python爬虫开发批量获取商品信息

在当今电商行业竞争激烈的环境下&#xff0c;精准且高效地获取商品信息对于商家和数据分析师来说至关重要。无论是进行市场调研、优化商品布局&#xff0c;还是制定竞争策略&#xff0c;商品信息的全面掌握都是关键。Python爬虫技术以其强大的功能和灵活性&#xff0c;成为批量…...

【C语言】左旋字符串(三种实现方式)

题目&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 方法一&#xff1a; 我们画个图分析一下&#xff1a; 基本逻辑&#xff1a; 就是我们每一次旋转之前&#xff0c;我们就取出…...

Spring Security,servlet filter,和白名单之间的关系

首先&#xff0c;Servlet Filter是Java Web应用中的基础组件&#xff0c;用于拦截请求和响应&#xff0c;进行预处理和后处理。它们在处理HTTP请求时处于最外层&#xff0c;可以执行日志记录、身份验证、授权等操作。白名单机制通常指允许特定IP、用户或请求通过的安全策略&…...

Python 调用 Azure OpenAI API

在人工智能和机器学习快速发展的今天,Azure OpenAI 服务为开发者提供了强大的工具来集成先进的 AI 能力到他们的应用中。本文将指导您如何使用 Python 调用 Azure OpenAI API,特别是使用 GPT-4 模型进行对话生成。 准备工作 在开始之前,请确保您已经: 拥有一个 Azure 账户…...

Git标签管理:从基础到高阶自动化实践

引言 在软件发布过程中&#xff0c;88%的生产事故与版本标记错误相关。Git标签&#xff08;Tag&#xff09;作为版本控制的关键锚点&#xff0c;不仅是发布流程的里程碑&#xff0c;更是代码审计和问题追溯的重要依据。本文将深入Git标签的底层机制&#xff0c;揭示企业级标签…...

运行Petalinux的准备

参考文档 建议使用Xilinx官方的文档中心DocNav&#xff0c;在Design Hub View选项卡中可以看到Xilinx官方组织的开发流程&#xff0c;非常详尽且总是最新的。 《UG1144-petalinux-tools-reference-guide》 安装linux系统 1.查看Petalinux版本支持的系统版本,对于官方未提及或…...

Jenkins 通过 Execute Shell 执行 shell 脚本 七

Jenkins 通过 Execute Shell 执行 shell 脚本 七 一、创建 .sh 文件 项目目录下新建 .sh 文件 jenkins-script\shell\ci_android_master.sh添加 Execute Shell 模块 在 Command 中添加 # 获取 .sh 路径 CI_ANDROID_MASTER_PATH"${WORKSPACE}/jenkins-script/shell/…...

AT32系列微控制器低压电机控制开发板

参考&#xff1a;《UM0014_AT32_LV_Motor_Control_EVB_V20_User_Manual_V1.0.1_ZH.pdf》 开发板介绍 此电机开发板是一个泛用型的低压三相电机驱动器&#xff0c;应用雅特力科技AT32系列微控制器搭配雅特力电机函数库&#xff0c;可驱动直流无刷电机、交流同步电机&#xff0…...

k8s部署redis集群

前置环境:已部署k8s集群,ip地址为 192.168.10.1~192.168.10.5,总共5台机器。 1. 创建provisioner制备器(如果已存在,则不需要) 需要部署方式,可以参考我之前的文章:k8s部署rabbitmq-CSDN博客 2. 新增redis配置文件 redis-6001.yaml --- apiVersion: v1 kind: Serv…...

道路运输安全员考试题库及答案

一、判断题 32.驾驶员必须取得道路危险货物运输从业资格证&#xff0c;才能从事道路危险货物运输活动。 答案&#xff1a;正确 33.可以将危险货物与普通货物混装运输。 答案&#xff1a;错误 34.货车正常行驶时&#xff0c;转向轮转向后应有一定的回正能力&#xff0c;以使货…...

反射概率以及一些基本API的使用

请问&#xff0c;获取对象有几种方式&#xff1f; 1、通过构造函数来new一个对象&#xff1b; 2、通过clone来克隆一个对象&#xff1b; 3、通过序列化反序列化来构建一个对象&#xff1b; 4、通过反射来创建对象&#xff1b;a、通过Class类来创建&#xff1b;b、通过Const…...

DeepSeek API 调用 - Spring Boot 实现

DeepSeek API 调用 - Spring Boot 实现 1. 项目依赖 在 pom.xml 中添加以下依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></depe…...