在MySQL数据查询中,最基本的查询语句是:

select * from table_name where condition;

假设数据库中表students中有id, name, age, birthday四个字段

*代表表中所有字段,在查询时可结合实际选取自己需要查询的字段,即:



select name, id, age from students;



在查询时,输入的字段顺序即为查询结果显示的顺序。

如果某个字段下的数据有重复,但我们只想看到不重复的,可使用关键字distinct:



select distinct name age from students;



似乎distinct后只能跟着一个字段名 ,用distinct同时查询多个字段暂时还没看到;

在MySQL中也可以使用简单的四则运算,如:



select name, age-18 from students;



可以给进行四则运算后的字段名添加别名:



select name, age-18 as child from students;



其实在上述语句中as也可以不写,写上似乎只是稳了增加理解和可读性;

与python类似,MySQL也也可以设置显示格式,和字符串拼接差不多:



select concat(name, '同学的年龄是: ', age-18) falseage from students;



concat()提供拼接字符串和数值的功能。

在MySQL中支持带关系运算符和逻辑运算符的条件数据查询,如<,>, and,  or, not等, 都是在最后的where子句中实现的;



select name, age from students where id>10 ;



select name from students where age between 10 and 20;



上面代码查询了年龄在10到20岁学生的姓名。

查询年龄不在此范围的学生,可以使用not:



select name from age not between 10 and 20;



可使用关键字not null, 实现判断字段的数值是否为空的条件查询。



select name from students where age is null;



相反,可使用not找到与此相反的结果:



select name from students where age is not null;



或者:



select name from students where not age is null;



in关键字提供了集合查询:



select name from students where age in (18,19,27,25)



该语句查询了年龄在这四个数值的学生姓名;其实使用or关键词也可以达到相同的效果,但是会造成语句过长。

如果需要查询不在该集合中的数据,可在in前加上not;

使用like的模糊查询:

"_"通配符,该通配符能匹配单个字符;

"%"通配符可以匹配任意长度的字符串。



select name from students where name like 'A%';



查询名字以A开头的学生姓名;

like模糊查询可以和not关键字配合使用,达到相反的效果。

在查询时,查询结果根据数据最初记录的顺序来显示,可以使用order by关键词来设置升序或者降序排序:



select field1, field2, field3 from table_name where condition order by filed desc;



order by field desc为按照field降序排序,如果写为order by field;则为升序排序,即默认为升序(asc)。

也可按照一个字段升序,一个字段降序同时排序:



select * from table_name where condition order by field1 by asc, field2 desc;



通过limit关键字限制查询结果的显示数量:



select name from students where age>18 limit offset_start, row_count;



如:



select * from students where age is null order by name limit 5, 5;