📢博客主页:https://blog.csdn.net/2301_779549673
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 JohnKi 原创,首发于 CSDN🙉
📢未来很长,值得我们全力奔赴更美好的生活✨
文章目录
- 📢前言 - MySQL的基本介绍
- 🏳️🌈一、Create 创建
- ❤️1.1 单行数据 + 全列插入
- 🧡1.2 多行数据 + 指定列插入
- 💛 1.3 插入否则更新
- 💚1.4 替换
- 🏳️🌈二、Retrieve 查询
- ❤️2.1 SELECT 列
- 🧡2.2 WHERE 条件
- 💛2.3 结果排序
- 💚2.4 筛选分页结果
- 👥总结
📢前言 - MySQL的基本介绍
MySQL 表是数据库中存储数据的基本单位,由行和列组成,每一行代表一条唯一的记录,每一列代表记录中的一个域。
在 MySQL 中,数据表主要由以下几个部分组成:数据行、列、索引、主键、外键和约束。
数据行:也被称为记录,是数据库表中的基本单位。每一行都代表了一条具体的记录,这条记录可能是一个人的详细信息,一个产品的具体参数,或者是一次交易的所有细节。
列:在数据库中,我们通常将一类具有相同属性的数据放在同一列中。例如,我们可能有一个名为 “姓名” 的列,用来存储所有人的名字,有一个 “年龄” 的列,用来存储所有人的年龄,等等。列的类型决定了可以存储在其中的数据类型,例如,数字、字符串、日期等。
索引:索引是数据库中的一种特殊结构,它可以极大地提高数据的查询速度。索引是对数据库表中一个或多个列的值进行排序的一种结构,类似于书籍的目录,可以快速定位到特定的行。索引的创建和使用需要根据实际情况来决定,因为虽然它可以提高查询速度,但是在插入、删除和更新操作时,也会带来额外的开销。
主键:主键是数据库表中的一个特殊列,它的值对于表内的每一行都是唯一的,常常被用来作为数据的唯一标识。在设计数据库表时,我们需要为每个表选择一个或多个列作为主键。
外键:外键是用来建立两个表之间关系的,一般是在一个表中创建一个列,这个列的值引用了另一个表的主键。通过外键,我们可以在一个表中引用另一个表中的数据。
约束:约束是用来保证数据的完整性和一致性的。例如,非空约束可以保证某列的值不能为 NULL,唯一约束可以保证某列的值在整个表中是唯一的,主键约束则同时具有非空约束和唯一约束的特性。
CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)
🏳️🌈一、Create 创建
语法:
INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value, [, value] ...
案例:
mysql> create table students (
-> id int unsigned primary key auto_increment,
-> sn int unsigned unique key,
-> name varchar(20) not null,
-> qq varchar(32) unique key
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> desc students;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| sn | int(10) unsigned | YES | UNI | NULL | |
| name | varchar(20) | NO | | NULL | |
| qq | varchar(32) | YES | UNI | NULL | |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
❤️1.1 单行数据 + 全列插入
- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
- 注意,这里在插入的时候,也可以不用指定id(当然,那时候就需要明确插入数据到那些列了),那么mysql会使用默认
的值进行自增。
// 单行数据插入
mysql> insert into students (sn, name, qq) values (123, '张飞', '123456');
Query OK, 1 row affected (0.01 sec)
// 全列插入 + 指定列
mysql> insert into students values (10, 125,'刘备', '223456');
Query OK, 1 row affected (0.00 sec)
// 全列插入 + 指定列 + 不加 into
mysql> insert students values (3, 130, '关羽', '323456');
Query OK, 1 row affected (0.00 sec)
mysql> select * from students;
+----+------+--------+--------+
| id | sn | name | qq |
+----+------+--------+--------+
| 1 | 123 | 张飞 | 123456 |
| 3 | 130 | 关羽 | 323456 |
| 10 | 125 | 刘备 | 223456 |
+----+------+--------+--------+
3 rows in set (0.00 sec)
🧡1.2 多行数据 + 指定列插入
插入两条记录,value_list 数量必须和指定列数量及顺序一致
// 多行插入
mysql> insert into students values (12, 140, '诸葛亮', '823456'),
-> (13, 150, '曹操', '623456'),
-> (15, 158, '许攸', '523456');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from students;
+----+------+-----------+--------+
| id | sn | name | qq |
+----+------+-----------+--------+
| 1 | 123 | 张飞 | 123456 |
| 3 | 130 | 关羽 | 323456 |
| 10 | 125 | 刘备 | 223456 |
| 12 | 140 | 诸葛亮 | 823456 |
| 13 | 150 | 曹操 | 623456 |
| 15 | 158 | 许攸 | 523456 |
+----+------+-----------+--------+
6 rows in set (0.00 sec)
// 多行插入 + 指定列
mysql> insert into students (sn, name, qq) values (164, '孙权', '823486'), (160, '吕布', '623656');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from students;
+----+------+-----------+--------+
| id | sn | name | qq |
+----+------+-----------+--------+
| 1 | 123 | 张飞 | 123456 |
| 3 | 130 | 关羽 | 323456 |
| 10 | 125 | 刘备 | 223456 |
| 12 | 140 | 诸葛亮 | 823456 |
| 13 | 150 | 曹操 | 623456 |
| 15 | 158 | 许攸 | 523456 |
| 16 | 164 | 孙权 | 823486 |
| 17 | 160 | 吕布 | 623656 |
+----+------+-----------+--------+
8 rows in set (0.00 sec)
💛 1.3 插入否则更新
由于 主键 或者 唯一键 对应的值已经存在而导致插入失败
// 主键id冲突 - 与诸葛亮
mysql> insert into students values (12, 141, '司马懿', '823456');
ERROR 1062 (23000): Duplicate entry '12' for key 'PRIMARY'
// 唯一键sn冲突 - 与诸葛亮
mysql> insert into students values (18, 140, '司马懿', '823456');
ERROR 1062 (23000): Duplicate entry '140' for key 'sn'
可以选择性的进行同步更新操作 语法:
INSERT ... ON DUPLICATE KEY UPDATE
column = value [, column = value] ...
mysql> insert into students values (12, 141, '司马懿', '823456')
on duplicate key update id=19, sn=133, name = '司马懿', qq = '823456';
Query OK, 2 rows affected (0.01 sec)
// 重写的时候自增值可以不写,意思就是前面的值插不了,就插duplicate后面的值
mysql> insert into students values (12, 141, '张辽', '826456')
on duplicate key update sn=153, name = '张辽', qq = '826456';
Query OK, 1 row affected (0.01 sec)
mysql> select * from students;
+----+------+-----------+--------+
| id | sn | name | qq |
+----+------+-----------+--------+
| 1 | 123 | 张飞 | 123456 |
| 3 | 130 | 关羽 | 323456 |
| 10 | 125 | 刘备 | 223456 |
| 12 | 141 | 张辽 | 826456 |
| 13 | 150 | 曹操 | 623456 |
| 15 | 158 | 许攸 | 523456 |
| 16 | 164 | 孙权 | 823486 |
| 17 | 160 | 吕布 | 623656 |
| 19 | 133 | 司马懿 | 823456 |
+----+------+-----------+--------+
9 rows in set (0.00 sec)
💚1.4 替换
- 主键 或者 唯一键 没有冲突,则直接插入;
- 主键 或者 唯一键 如果冲突,则删除后再插入
// sn值和吕布一样,删除后插入
mysql> replace into students (sn, name, qq) values (160, '貂蝉', 856744);
Query OK, 2 rows affected (0.01 sec)
// 没有冲突,则直接插入;
mysql> replace into students (sn, name, qq) values (161, '大乔', 856664);
Query OK, 1 row affected (0.01 sec)
mysql> select * from students;
+----+------+-----------+--------+
| id | sn | name | qq |
+----+------+-----------+--------+
| 1 | 123 | 张飞 | 123456 |
| 3 | 130 | 关羽 | 323456 |
| 10 | 125 | 刘备 | 223456 |
| 12 | 141 | 张辽 | 826456 |
| 13 | 150 | 曹操 | 623456 |
| 15 | 158 | 许攸 | 523456 |
| 16 | 164 | 孙权 | 823486 |
| 19 | 133 | 司马懿 | 823456 |
| 20 | 160 | 貂蝉 | 856744 |
| 21 | 161 | 大乔 | 856664 |
+----+------+-----------+--------+
10 rows in set (0.00 sec)
🏳️🌈二、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.02 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
❤️2.1 SELECT 列
2.1.1 全列查询
通常情况下不建议使用 * 进行全列查询
- 查询的列越多,意味着需要传输的数据量越大;
- 可能会影响到索引的使用。(索引待后面课程讲解)
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)
2.1.2 指定列查询
指定列的顺序不需要按定义表的顺序来
mysql> select id, name, english from exam_result;
+----+-----------+---------+
| id | name | english |
+----+-----------+---------+
| 1 | 唐三藏 | 56 |
| 2 | 孙悟空 | 77 |
| 3 | 猪悟能 | 90 |
| 4 | 曹孟德 | 67 |
| 5 | 刘玄德 | 45 |
| 6 | 孙权 | 78 |
| 7 | 宋公明 | 30 |
+----+-----------+---------+
7 rows in set (0.00 sec)
2.1.3 查询字段为表达式
// 表达式不包含字段
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)
// 表达式包含一个字段
mysql> select id, name, english+10 from exam_result;
+----+-----------+------------+
| id | name | english+10 |
+----+-----------+------------+
| 1 | 唐三藏 | 66 |
| 2 | 孙悟空 | 87 |
| 3 | 猪悟能 | 100 |
| 4 | 曹孟德 | 77 |
| 5 | 刘玄德 | 55 |
| 6 | 孙权 | 88 |
| 7 | 宋公明 | 40 |
+----+-----------+------------+
7 rows in set (0.00 sec)
// 表达式包含多个字段
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)
2.1.4 为查询结果指定别名
语法:
// as 可带可不带
SELECT column [AS] alias_name [...] FROM table_name;
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.01 sec)
mysql> select id, name, chinese + math + english 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.01 sec)
mysql> select id 学号, name 姓名, chinese + math + english 总分 from exam_result;
+--------+-----------+--------+
| 学号 | 姓名 | 总分 |
+--------+-----------+--------+
| 1 | 唐三藏 | 221 |
| 2 | 孙悟空 | 242 |
| 3 | 猪悟能 | 276 |
| 4 | 曹孟德 | 233 |
| 5 | 刘玄德 | 185 |
| 6 | 孙权 | 221 |
| 7 | 宋公明 | 170 |
+--------+-----------+--------+
7 rows in set (0.00 sec)
2.1.5 结果去重
DISTINCT
用于返回唯一不同的值,它应该紧跟在 SELECT
关键字后面,作用于后面所有要选择的列整体,用来去除整个结果集中重复的行记录。
// 98分的重复了
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)
🧡2.2 WHERE 条件
比较运算符:
逻辑运算符:
2.2.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.2.2 语文成绩在 [80, 90] 分的同学及语文成绩
// 使用 AND 进行条件连接
mysql> select name, chinese from exam_result where chinese >= 60 and chinese <= 80;
+-----------+---------+
| name | chinese |
+-----------+---------+
| 唐三藏 | 67 |
| 孙权 | 70 |
| 宋公明 | 75 |
+-----------+---------+
3 rows in set (0.00 sec)
// 使用 BETWEEN ... AND ... 条件
mysql> select name, chinese from exam_result where chinese between 60 and 80;
+-----------+---------+
| name | chinese |
+-----------+---------+
| 唐三藏 | 67 |
| 孙权 | 70 |
| 宋公明 | 75 |
+-----------+---------+
3 rows in set (0.00 sec)
2.2.3 数学成绩是 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.00 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.00 sec)
2.2.4 姓孙的同学 及 孙某同学
// % 匹配任意多个(包括 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)
2.2.5 语文成绩好于英语成绩的同学
// 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)
2.2.6 总分在 200 分以下的同学
mysql> select name, chinese + math + english 总分 from exam_result
where chinese + math + english < 200;
+-----------+--------+
| name | 总分 |
+-----------+--------+
| 刘玄德 | 185 |
| 宋公明 | 170 |
+-----------+--------+
2 rows in set (0.00 sec)
2.2.7 语文成绩 > 80 并且不姓孙的同学
mysql> select name, chinese, english from exam_result
where chinese > 80 and name not like '孙%';
+-----------+---------+---------+
| name | chinese | english |
+-----------+---------+---------+
| 猪悟能 | 88 | 90 |
| 曹孟德 | 82 | 67 |
+-----------+---------+---------+
2 rows in set (0.00 sec)
💛2.3 结果排序
语法:
// ASC 为升序(从小到大)
// DESC 为降序(从大到小)
// 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2.3.1 同学及数学成绩,按数学成绩升序显示
mysql> select name, math from exam_result order by math;
+-----------+------+
| name | math |
+-----------+------+
| 宋公明 | 65 |
| 孙权 | 73 |
| 孙悟空 | 78 |
| 曹孟德 | 84 |
| 刘玄德 | 85 |
| 唐三藏 | 98 |
| 猪悟能 | 98 |
+-----------+------+
7 rows in set (0.01 sec)
2.3.2 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
mysql> select name, math, english, chinese from exam_result
-> order by math desc, english, chinese;
+-----------+------+---------+---------+
| 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)
2.3.3 查询同学及总分,由高到低
mysql> select name, math + english + chinese 总分 from exam_result order by math + english + chinese desc;
+-----------+--------+
| name | 总分 |
+-----------+--------+
| 猪悟能 | 276 |
| 孙悟空 | 242 |
| 曹孟德 | 233 |
| 唐三藏 | 221 |
| 孙权 | 221 |
| 刘玄德 | 185 |
| 宋公明 | 170 |
+-----------+--------+
7 rows in set (0.00 sec)
// ORDER BY 子句中可以使用列别名
mysql> select name, math + english + chinese 总分 from exam_result order by 总分 desc;
+-----------+--------+
| name | 总分 |
+-----------+--------+
| 猪悟能 | 276 |
| 孙悟空 | 242 |
| 曹孟德 | 233 |
| 唐三藏 | 221 |
| 孙权 | 221 |
| 刘玄德 | 185 |
| 宋公明 | 170 |
+-----------+--------+
7 rows in set (0.00 sec)
2.3.4 查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示
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)
💚2.4 筛选分页结果
语法:
-- 起始下标为 0
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
-
LIMIT:关键字用于限制返回的行数。n代表要返回的最大行数,例如LIMIT 10就表示最多只返回 10 行数据。
-
OFFSET:关键字用于指定从结果集的第几行开始返回(行索引从 0 开始计数)。s就是偏移量的值,比如OFFSET 5意味 着从第 5 行开始返回(前面的 5 行就被跳过了),通常和LIMIT一起配合使用,常用于实现分页查询等功能,像每页显示固定数量的记录,通过改变OFFSET的值来获取不同页的数据。
建议: 对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死
按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页
// 总表
mysql> SELECT id, name, math, english, chinese FROM exam_result;
+----+-----------+------+---------+---------+
| id | name | math | english | chinese |
+----+-----------+------+---------+---------+
| 1 | 唐三藏 | 98 | 56 | 67 |
| 2 | 孙悟空 | 78 | 77 | 87 |
| 3 | 猪悟能 | 98 | 90 | 88 |
| 4 | 曹孟德 | 84 | 67 | 82 |
| 5 | 刘玄德 | 85 | 45 | 55 |
| 6 | 孙权 | 73 | 78 | 70 |
| 7 | 宋公明 | 65 | 30 | 75 |
+----+-----------+------+---------+---------+
7 rows in set (0.00 sec)
// 第一页
mysql> SELECT id, name, math, english, chinese FROM exam_result
-> ORDER BY id LIMIT 3 OFFSET 0;
+----+-----------+------+---------+---------+
| id | name | math | english | chinese |
+----+-----------+------+---------+---------+
| 1 | 唐三藏 | 98 | 56 | 67 |
| 2 | 孙悟空 | 78 | 77 | 87 |
| 3 | 猪悟能 | 98 | 90 | 88 |
+----+-----------+------+---------+---------+
3 rows in set (0.00 sec)
// 第二页
mysql> SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 3;
+----+-----------+------+---------+---------+
| id | name | math | english | chinese |
+----+-----------+------+---------+---------+
| 4 | 曹孟德 | 84 | 67 | 82 |
| 5 | 刘玄德 | 85 | 45 | 55 |
| 6 | 孙权 | 73 | 78 | 70 |
+----+-----------+------+---------+---------+
3 rows in set (0.00 sec)
// 第三页
mysql> SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 6;
+----+-----------+------+---------+---------+
| id | name | math | english | chinese |
+----+-----------+------+---------+---------+
| 7 | 宋公明 | 65 | 30 | 75 |
+----+-----------+------+---------+---------+
1 row in set (0.00 sec)
👥总结
本篇博文对 【MySQL】表的基本查询(上) 做了一个较为详细的介绍,不知道对你有没有帮助呢
觉得博主写得还不错的三连支持下吧!会继续努力的~