1, 关于mysql,常去的地方有:https://www.yiibai.com/mysql, http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh, mysql中文网。
mysql里东西很多,反而redis的东西并不多,作为一名后端程序员,不断地去学习mysql是必要的。
2. 先看看mysql的基础数据类型,https://www.yiibai.com/mysql/data-types.html,实际建表的时候会用到,类型无非就是 数字,布尔,字符,日期,等这些,
如果数字很大,考虑用bigint, char和vchar的区别,一个是固定长度,不够会补0,一个是按实际长度来,对于保存用户昵称,最好用uft8bm4格式,日期保存,我一般用时间戳。其他的日期类型有空再研究吧。
mysql后面也支持json类型了。
3. sql语句
基本的sql语句必须要会写。
下面我简单写写吧,
select * from table1 join table2 on conditions where conditions group by column1 having group_conditions order by column1 desc limit 100000, 10
SELECT
之后是逗号分隔列或星号(*
)的列表,表示要返回所有列。FROM
指定要查询数据的表或视图。JOIN
根据某些连接条件从其他表中获取数据。WHERE
过滤结果集中的行。GROUP BY
将一组行组合成小分组,并对每个小分组应用聚合函数。HAVING
过滤器基于GROUP BY
子句定义的小分组。ORDER BY
指定用于排序的列的列表。LIMIT
限制返回行的数量。
4. msyql查找重复,删除重复只保留一个。
5. msyql百万计分页查询。
select * from table1 limit 0, 10; -- 查询0开始的10条数据。
select * from table1 limit 100, 10; -- 查询100开始的10条数据。
select * from table1 limit 10000, 10; -- 查询10000开始的10条数据。
select * from table1 limit 100000, 10; -- 查询100000开始的10条数据。
selet id from table1 limit 100000, 10 ; 同上。
速度可以自己测试,应该id是有主键索引的,所以查询id会非常快,这里就可以优化了。先找到第100000条数据的id,再去查询。这里有。
方法一
select id from table order by id limit 100000, 1, 先找出第100000条数据的id
select * from table where id >= (select id from table order by id limit 100000, 1) order by id limit 10.
方法二:
select * from table t1 join (select id from table order by id limit 100000,10) t2 on t1.id =t2.id;
两种方法均可,可根据实际情况使用。