- 数据库简介
- 数据库分类
- 关系型数据库
- 常见的关系型数据库软件
- 非关系型数据库
- 常见的非关系型数据库软件
- 数据库的优点及作用
- 关系型数据库管理系统
- 简介
- SQL语言
- 组成
- MySQL
- 简介
- 特点
- 安装
- 相关Linux操作
- 数据类型和数据约束
- 数据类型
- 常用的数据类型
- 1. 整数类型
- 2. 字符串
- 3. 时间类型
- 数据约束
- 常见的约束
- SQL基本操作
- 数据库操作
- 数据表操作
- 数据项操作
- as
- distinct
- where
- 比较运算符:
- 逻辑运算符
- 模糊查询
- 范围查询
- 是否为空
- 升降序排序查询
- 分页查询
数据库简介
数据库(database)是按照数据结构来组织、存储和管理数据的仓库。
数据库分类 关系型数据库采用了关系模型来组织数据的数据库,其以行(数据行)和列(数据列)的形式(数据表)存储数据,以便于用户理解。一组二维表及其相互关系构成关系型数据库。
常见的关系型数据库软件- Oracle
- Microsoft SQL Server
- MySQL
- SQLite
又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL,对NoSQL 最普遍的定义是“非关联型的”,强调 以Key-Value 的方式存储数据。
常见的非关系型数据库软件- MongoDB
- Redis
数据库就是用来存储和管理数据的,用数据库储存数据有以下优点:
- 持久化存储
- 读写速度极高
- 保证数据的有效性
关系型数据库管理系统 简介
数据库管理系统(Relational Database Management System,简称RDBMS)是为管理关系型数据库而设计的软件系统。如果需要使用关系型数据库,就要安装相应的客户端软件和服务端软件。
- 关系型数据库服务端软件:主要负责管理不同的数据库,而每个数据库里面会有一系列数据文件,数据文件是用来存储数据的, 其实数据库就是一系列数据文件的集合。
- 关系型数据库客户端软件:主要负责和关系型数据库服务端软件进行通信, 向服务端传输数据或者从服务端获取数据.
SQL(Structured Query Language),即结构化查询语言,是一种用来操作RDBMS的数据库的语言。也就是说通过 SQL 语言可以操作 Oracle,Microsoft SQL Server,MySQL,SQLite 等关系型的数据库。
SQL的作用是实现数据库客户端软件和数据库服务端软件之间的通信,SQL就是通信的桥梁。
组成| 简称 | 全称 | 含义 |
|---|---|---|
| DQL | Data Query Language | 数据查询语言,用于对数据进行查询 |
| DML | Data Manipulation Language | 数据操作语言,对数据进行增加、修改、删除 |
| TPL | Transaction Processing Language | 事务处理语言,对事务进行处理 |
| DCL | Data Control Language | 数据控制语言,进行授权与权限回收 |
| DDL | Data Definition Language | 数据定义语言,进行数据库、表的管理等 |
MySQL 简介
MySQL是一个关系型数据库管理系统。
在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件。它由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
MySQL 是最流行的关系型数据库管理系统中的一个。
特点-
开源免费
-
支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
-
使用标准的SQL数据语言形式。
-
可以安装在不同的操作系统,并且提供多种编程语言(C、C++、Python、Java、Ruby)的操作接口。
windows:https://dev.mysql.com/downloads/installer/
linux:
sudo apt-get install mysql-server //服务端 sudo apt-get install mysql-client //客户端相关Linux操作
sudo service mysql status //查询服务状态 sudo service mysql stop //停止服务 sudo service mysql start //启动服务 sudo service mysql restart //重启服务 vim /etc/mysql/mysql.conf.d/mysqld.cnf //编辑配置文件 mysql --help //帮助 mysql -u [用户名] -p [密码] //mysql客户端登录 mysql >exit; //退出mysql
数据类型和数据约束
数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效性,可以在创建表的时候,为表添加一些强制性的验证,比如:数据类型和约束。
数据类型数据类型是指在创建表的时候为表中字段(表头)指定数据类型,只有符合类型要求的数据才能存储起来。
使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
常用的数据类型- 整数类型:如int,bit
- 小数类型:如decimal
- 字符串:如varchar,char
- 日期时间: 如date, time, datetime
- 枚举类型(enum)
| 类型 | 字节大小 | 有符号范围(Signed) | 无符号范围(Unsigned) |
|---|---|---|---|
| TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
| SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
| MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
| INT/INTEGER | 4 | -2147483648 ~2147483647 | 0 ~ 4294967295 |
| BIGINT | 8 | -9223372036854775808 ~ 9223372036854775807 | 0 ~ 18446744073709551615 |
| 类型 | 说明 | 使用场景 |
|---|---|---|
| CHAR | 固定长度,小型数据 | 身份证号、手机号、电话、密码 |
| VARCHAR | 可变长度,小型数据 | 姓名、地址、品牌、型号 |
| TEXT | 可变长度,字符个数大于 4000 | 存储小型文章或者新闻 |
| LONGTEXT | 可变长度, 极大型文本数据 | 存储极大型文本数据 |
| 类型 | 字节大小 | 示例 |
|---|---|---|
| DATE | 4 | ‘2020-01-01’ |
| TIME | 3 | ‘12:29:59’ |
| DATETIME | 8 | ‘2020-01-01 12:29:59’ |
| YEAR | 1 | ‘2017’ |
| TIMESTAMP | 4 | ‘1970-01-01 00:00:01’ UTC ~ ‘2038-01-01 00:00:01’ UTC |
约束是指数据在数据类型限定的基础上额外增加的要求.
常见的约束| 标识 | 含义 | 说明 |
|---|---|---|
| primary key | 主键 | 物理上存储的顺序. MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned. |
| not null | 非空 | 此字段不允许填写空值 |
| unique | 唯一 | 此字段的值不允许重复 |
| default | 默认 | 当不填写字段对应的值会使用默认值,如果填写时以填写为准. |
| foreign key | 外键 | 对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常. |
SQL基本操作
- sql语言关键字不区分大小写
- sql语句一般以;标志结束
show databases; #查询所有数据库 create database databaseName charset=utf8; #创建数据库 use databaseName; #使用数据库 select database(); #查询当前使用的数据库 drop database databaseName; #删除数据库 show create database databaseName; #展示创建库的语句
如:
create database student_info charset=utf8; #创建student_info数据库
Query OK, 1 row affected, 1 warning (0.01 sec)
show create database student_info; #展示创建student_info库的语句
+--------------+-------------------------------------------------------------------------------------------------------------+ | Database | Create Database | +--------------+-------------------------------------------------------------------------------------------------------------+ | student_info | CREATE DATABASE `student_info` | +--------------+-------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) 1 row in set (0.00 sec)
use student_info; #使用student_info数据库
Database changed
select database(); #查询当前使用的数据库
+--------------+ | database() | +--------------+ | student_info | +--------------+ 1 row in set (0.00 sec)
show databases; #查询所有数据库
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | student_info | | sys | | world | +--------------------+ 7 rows in set (0.00 sec)数据表操作
show tables; #查询所有数据表
create table tableName(
colomnName1(字段名/列名) datatype1(数据类型) control1(数据约束),
colomnName2 datatype1 control2,
...
); #创建表
alter table tableName add colomnName datatype control; #添加字段(表头)
alter table tableName modify colomnName datatype control; #修改字段的数据类型/约束
alter table tableName change oldColomnName newColomnName datatype control; #修改字段
alter table tableName drop colomnName; #删除字段
desc tableName; #查询表的结构
show create table tableName; #展示创建表的语句
drop table tableName; #删除表
如:
create table grade6class1(
id int unsigned primary key auto_increment not null, #主键递增非空无符号整数id
name varchar(10) not null, #可变非空程度不超过10字符串name
age tinyint default 12 not null, #默认值12非空极小整数age
gender enum("男","女") not null #枚举非空gender
); #创建grade6class1表
Query OK, 0 rows affected (0.03 sec)
show tables; #查询当前库中的所有表
+------------------------+ | Tables_in_student_info | +------------------------+ | grade6class1 | +------------------------+ 1 row in set (0.00 sec)
show create table grade6class1; #展示创建表grade6class1的语句
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| grade6class1 | CREATE TABLE `grade6class1` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL,
`age` tinyint NOT NULL DEFAULT '12',
`gender` enum('男','女') NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 |
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
desc grade6class1; #查询表grade6class1的结构
+--------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| age | tinyint | NO | | 12 | |
| gender | enum('男','女') | NO | | NULL | |
+--------+-----------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
alter table grade6class1 add birthday datetime ; #添加时间类型birthday字段 desc grade6class1;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
+----------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| age | tinyint | NO | | 12 | |
| gender | enum('男','女') | NO | | NULL | |
| birthday | datetime | YES | | NULL | |
+----------+-----------------+------+-----+---------+----------------+
alter table grade6class1 change birthday birth datetime not null; #改名birth增加not null限制 desc grade6class1;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
+--------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| age | tinyint | NO | | 12 | |
| gender | enum('男','女') | NO | | NULL | |
| birth | datetime | NO | | NULL | |
+--------+-----------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
数据项操作
#插入数据项 -- 1. 全列插入:值的顺序与表的字段的顺序完全一一对应 insert into tableName values (value1,value2,....) -- 2. 部分列插入:值的顺序与给出的列的顺序对应 insert into tableName (columnName1,columnName2,...) values(value1,value2,...) -- 3. 全列多行插入 insert into tableName values(value11,value21,...),(value12,value22,...),...; -- 4. 部分列多行插入 insert into tableName (columnName1,columnName2,...) values(value11,value21,...),(value12,value22,...),...; #查询数据项 -- 1. 查询所有列 select * from tableName; -- 2. 查询指定列 select columnName1,columnName2,... from tableName; #修改数据 update tableName set columnName1=value1,columnName2=value2,... where conditions(条件) #删除数据项 delete from tableName where conditions; #逻辑删除 -- 添加删除表示字段,0表示未删除 1表示删除 alter table tableName add deleted bit default 0; -- 逻辑删除数据 update tableName set deleted = 1 where conditions;
如:
-- 1.全列插入:值的顺序与表的字段的顺序完全一一对应 insert into grade6class1 values (default,"张三",13,"男","2009-01-25"); -- 查询所有列 select * from grade6class1;
Query OK, 1 row affected (0.02 sec) +----+------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+------+-----+--------+---------------------+ | 1 | 张三 | 13 | 男 | 2009-01-25 00:00:00 | +----+------+-----+--------+---------------------+ 1 row in set (0.00 sec)
-- 2. 部分列插入:值的顺序与给出的列的顺序对应
insert into grade6class1 (name,gender,birth) values("李四","男","2010-02-02");
select * from grade6class1;
Query OK, 1 row affected (0.01 sec) +----+------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+------+-----+--------+---------------------+ | 1 | 张三 | 13 | 男 | 2009-01-25 00:00:00 | | 2 | 李四 | 12 | 男 | 2010-02-02 00:00:00 | +----+------+-----+--------+---------------------+ 2 rows in set (0.00 sec)
-- 3. 全列多行插入 insert into grade6class1 values(default,"王二麻子",12,"男","2010-03-03"),(default,"赵老六",14,"男","2008-04-04"); select * from grade6class1;
Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 +----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 1 | 张三 | 13 | 男 | 2009-01-25 00:00:00 | | 2 | 李四 | 12 | 男 | 2010-02-02 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | +----+----------+-----+--------+---------------------+
-- 4. 部分列多行插入
insert into grade6class1 (name,gender,birth) values("郭靖","男","2010-05-05"),("黄蓉","女","2010-06-06");
select * from grade6class1;
Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 +----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 1 | 张三 | 13 | 男 | 2009-01-25 00:00:00 | | 2 | 李四 | 12 | 男 | 2010-02-02 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | +----+----------+-----+--------+---------------------+ 6 rows in set (0.00 sec)
update grade6class1 set age=13,birth="2009-02-02" where name="李四"; #修改李四的age和birth select * from grade6class1;
Query OK, 1 row affected (0.01 sec) +----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 1 | 张三 | 13 | 男 | 2009-01-25 00:00:00 | | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | +----+----------+-----+--------+---------------------+ 6 rows in set (0.00 sec)
delete from grade6class1 where name="张三"; #删除张三 select * from grade6class1;
+----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | +----+----------+-----+--------+---------------------+ 5 rows in set (0.00 sec)
select name,age,gender from grade6class1; #查询部分列
+----------+-----+--------+ | name | age | gender | +----------+-----+--------+ | 李四 | 13 | 男 | | 王二麻子 | 12 | 男 | | 赵老六 | 14 | 男 | | 郭靖 | 12 | 男 | | 黄蓉 | 12 | 女 | +----------+-----+--------+ 5 rows in set (0.00 sec)as
as关键字可用于给字段取别名再显示
select columnName1 as newName1,columnName2 as newName2,... from tableName;
如:
select name as 姓名,age as 年龄,gender as 性别,birth as 出生日期 from grade6class1;
+----------+------+------+---------------------+ | 姓名 | 年龄 | 性别 | 出生日期 | +----------+------+------+---------------------+ | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | +----------+------+------+---------------------+ 5 rows in set (0.00 sec)distinct
distinct可以用于去除重复数据后再显示
select distinct columnName1,columnName2,... from tableName;
如:
insert into grade6class1 (name,gender,birth) values("郭靖","男","2010-02-05"),("郭靖","男","2010-03-05");
select * from grade6class1;
select distinct name,age,gender from grade6class1;
Query OK, 2 rows affected (0.01 sec) +----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | | 7 | 郭靖 | 12 | 男 | 2010-02-05 00:00:00 | | 8 | 郭靖 | 12 | 男 | 2010-03-05 00:00:00 | +----+----------+-----+--------+---------------------+ +----------+-----+--------+ | name | age | gender | +----------+-----+--------+ | 李四 | 13 | 男 | | 王二麻子 | 12 | 男 | | 赵老六 | 14 | 男 | | 郭靖 | 12 | 男 | | 黄蓉 | 12 | 女 | +----------+-----+--------+where
where可以用于筛选和查询符合条件的数据项
select * from tableName where conditions;
conditions支持
比较运算符:= > < >= <= != <>(也是不等于)
如:
select * from grade6class1 where age>12; #年龄>12的
+----+--------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+--------+-----+--------+---------------------+ | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | +----+--------+-----+--------+---------------------+ 2 rows in set (0.00 sec)逻辑运算符
and or not
如:
select * from grade6class1 where id>3 and age>12; #id>3且age>12的
+----+--------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+--------+-----+--------+---------------------+ | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | +----+--------+-----+--------+---------------------+ 1 row in set (0.00 sec)
select * from grade6class1 where id>3 or age>12; #id>3或age>12的
+----+--------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+--------+-----+--------+---------------------+ | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | | 7 | 郭靖 | 12 | 男 | 2010-02-05 00:00:00 | | 8 | 郭靖 | 12 | 男 | 2010-03-05 00:00:00 | +----+--------+-----+--------+---------------------+ 6 rows in set (0.00 sec)
select * from grade6class1 where not name="郭靖"; #name不是"郭靖"的
+----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | +----+----------+-----+--------+---------------------+ 4 rows in set (0.00 sec)模糊查询
like "模糊词" % 代表任意字符 _ 代表任意一个字符
如:
select * from grade6class1 where name like "__";
+----+------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+------+-----+--------+---------------------+ | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | | 7 | 郭靖 | 12 | 男 | 2010-02-05 00:00:00 | | 8 | 郭靖 | 12 | 男 | 2010-03-05 00:00:00 | +----+------+-----+--------+---------------------+ 5 rows in set (0.00 sec)范围查询
between ... and ... in
如:
select * from grade6class1 where id between 2 and 5; #id在2到5之间的 select * from grade6class1 where id in (3,5,7); #id是3,5,7的
+----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | +----+----------+-----+--------+---------------------+ 4 rows in set (0.00 sec) +----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 7 | 郭靖 | 12 | 男 | 2010-02-05 00:00:00 | +----+----------+-----+--------+---------------------+ 3 rows in set (0.00 sec)是否为空
is null is not null升降序排序查询
select * from tableName order by columnName1 asc|desc [, columnName2 asc|desc,...]
- asc,即ascending,升序
- desc,即descending,降序
- 如果columnName1数据相同,再继续根据columnName2排序
如:
select * from grade6class1 order by birth asc; #按birth升序排序
+----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 7 | 郭靖 | 12 | 男 | 2010-02-05 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | | 8 | 郭靖 | 12 | 男 | 2010-03-05 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | +----+----------+-----+--------+---------------------+分页查询
select * from tableName limit start_index,count_num
- start_index是开始行的索引。从0开始计数
- count_num是要查询的数据个数
这样我们就能每n个数据一查询,实现逻辑上的分页
select * from grade6class1 limit 0,2; select * from grade6class1 limit 2,2; select * from grade6class1 limit 4,2; select * from grade6class1 limit 6,2; #4页,每页2行
+----+----------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+----------+-----+--------+---------------------+ | 2 | 李四 | 13 | 男 | 2009-02-02 00:00:00 | | 3 | 王二麻子 | 12 | 男 | 2010-03-03 00:00:00 | +----+----------+-----+--------+---------------------+ 2 rows in set (0.00 sec) +----+--------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+--------+-----+--------+---------------------+ | 4 | 赵老六 | 14 | 男 | 2008-04-04 00:00:00 | | 5 | 郭靖 | 12 | 男 | 2010-05-05 00:00:00 | +----+--------+-----+--------+---------------------+ 2 rows in set (0.00 sec) +----+------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+------+-----+--------+---------------------+ | 6 | 黄蓉 | 12 | 女 | 2010-06-06 00:00:00 | | 7 | 郭靖 | 12 | 男 | 2010-02-05 00:00:00 | +----+------+-----+--------+---------------------+ 2 rows in set (0.00 sec) +----+------+-----+--------+---------------------+ | id | name | age | gender | birth | +----+------+-----+--------+---------------------+ | 8 | 郭靖 | 12 | 男 | 2010-03-05 00:00:00 | +----+------+-----+--------+---------------------+ 1 row in set (0.00 sec)



