MySQL基础操作
数据库简介
数据库(database)是按照数据结构来组织、存储和管理数据的仓库。
数据库分类
关系型数据库
采用了关系模型来组织数据的数据库,其以行(数据行)和列(数据列)的形式(数据表)存储数据,以便于用户理解。一组二维表及其相互关系构成关系型数据库。
常见的关系型数据库软件
- Oracle
- Microsoft SQL Server
- MySQL
- SQLite
非关系型数据库
又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL,对NoSQL 最普遍的定义是“非关联型的”,强调 以Key-Value 的方式存储数据。
常见的非关系型数据库软件
- MongoDB
- Redis
数据库的优点及作用
数据库就是用来存储和管理数据的,用数据库储存数据有以下优点:
- 持久化存储
- 读写速度极高
- 保证数据的有效性
关系型数据库管理系统
简介
数据库管理系统(Relational Database Management System,简称RDBMS)是为管理关系型数据库而设计的软件系统。如果需要使用关系型数据库,就要安装相应的客户端软件和服务端软件。
- 关系型数据库服务端软件:主要负责管理不同的数据库,而每个数据库里面会有一系列数据文件,数据文件是用来存储数据的, 其实数据库就是一系列数据文件的集合。
- 关系型数据库客户端软件:主要负责和关系型数据库服务端软件进行通信, 向服务端传输数据或者从服务端获取数据.
SQL语言
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)
1. 整数类型
类型 | 字节大小 | 有符号范围(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 |
2. 字符串
类型 | 说明 | 使用场景 |
---|---|---|
CHAR | 固定长度,小型数据 | 身份证号、手机号、电话、密码 |
VARCHAR | 可变长度,小型数据 | 姓名、地址、品牌、型号 |
TEXT | 可变长度,字符个数大于 4000 | 存储小型文章或者新闻 |
LONGTEXT | 可变长度, 极大型文本数据 | 存储极大型文本数据 |
3. 时间类型
类型 | 字节大小 | 示例 |
---|---|---|
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` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+--------------+-------------------------------------------------------------------------------------------------------------+
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)