更改表名
分页
- 方式1:
select * from table order by id limit m, n;
该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录。无疑该查询能够实现分页功能
但是如果m的值越大,查询的性能会越低(越后面的页数,查询性能越低),因为MySQL同样需要扫描过m+n条记录。
- 方式2:
select * from table where id > #max_id# order by id limit n;
该查询每次会返回n条记录,却无需像方式1扫描过m条记录,在大数据量的分页情况下,性能可以明显好于方式1
但该分页查询必须要每次查询时拿到上一次查询(上一页)的一个最值id。
该查询的问题就在于,我们有时无法拿到上一次查询(上一页)的最值id
比如当前在第3 页,需要查询第5页的数据,该方法便爱莫能助
- 方式3:
为了避免能够实现方式2不能实现的查询,就同样需要使用到limit m, n子句
为了性能,就需要将m的值尽力的小,比如当前在第3页,需要查询第5页,每页10条数据,当前第3页的最大id为#max_id#:
select * from table where id > #max_id# order by id limit 20, 10;
其实该查询方式是部分解决了方式2的问题,但如果当前在第2页,需要查询第100页或1000页,性能仍然会较差。
- 方式4:
select * from table as a inner join (select id from table order by id limit m, n) as b on a.id = b.id order by a.id;
该查询同方式1一样,m的值可能很大,但由于内部的子查询只扫描了字段id,而不是整张表,所以性能要强于方式1查询,并且该查询能够解决方式2和方式3不能解决的问题。
- 方式5:
select * from table where id > (select id from table order by id limit m, 1) limit n;
该查询方式同方式4,同样通过子查询扫描字段id,效果同方式4。
至于性能的话,方式5的性能会略好于方式4,因为方式5不需要在进行表的关联,而是一个简单的比较。
where
如需有条件地从表中选取数据,可将 where 子句添加到select语句中。
SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用where设定查询条件
可以在 where 子句中指定任何条件
可以使用 and 或者 or 指定一个或多个条件
where 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
where 类似于 if 条件,根据 MySQL 表中的字段值来读取指定的数据
想读取指定的数据,WHERE是非常有用的。
使用主键来作为 WHERE 子句的条件查询是非常快速的
如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据
- MySQL 的 where字符串比较是不区分大小写的。 可以使用 BINARY 关键字来设定 where字符串比较区分大小写
#update
修改或更新 MySQL 中的数据
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
update 表 set 列=新值 where 更新条件;
- 可以同时更新若干个字段
- 可以在
where子句中指定任何条件
当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的 - 可以在一个单独表中同时更新数据
UPDATE替换某个字段中的某个字符
UPDATE table_name SET field=REPLACE(field, 'old-string', 'new-string') [WHERE Clause]
#limit
实例:每行5页,返回第2页的数据
- 利用 limit 和 offset 。limit 后数代表返回几条记录,offset后数代表从第几条记录开始返回(第一条记录序号为0),即偏移记录条数
SELECT * FROM employees LIMIT5OFFSET5
- 在 limit x,y
- y:返回几条记录
- x:从第几条记录开始返回(第一条记录序号为0)
SELECT * FROM employees LIMIT 5,5
limit y,x == limit x offset y
#字符串截取
MySQL 字符串截取函数 :left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。



