MySQL入门实践(二)
这篇博客主要讲查询操作,如果你对MySQL的安装和配置以及基础的创建操作有疑惑可以去看上一篇博客:
http://blog.youkuaiyun.com/kirivr/article/details/71170999
子查询语句
基本的SELECT语句
SELECT 列名 FROM 表名;
或者
SELECT 列名 AS 别名 FROM 表名;
或者
SELECT 列名 别名 FROM 表名;
这段语句中如果要查询多个列,那么使用,
分割列名。如果想返回所有的列,可以使用通配符*:
SELECT 列1,列2 FROM 表名;
或者
SELECT 列1 AS 别名1,列2 FROM 表名;
或者
SELECT 列1 别名1,列2 FROM 表名;
带筛选的SELECT语句
SELECT 列名 FROM 表名 WHERE ...
关键词WHERE
能为查询提供筛选,在WHERE
后可以使用表中的任意列来进行逻辑判断,例如从employee
表中筛选出薪水salary
大于3000的员工:
SELECT * FROM employee WHERE salary>3000;
结果:
关键词WHERE
的逻辑判断当然也能使用AND
与,OR
或,NOT
非以及XOR
异或等逻辑语句,例如:查询employee
表中薪水大于3000或者id号不小于3的员工:
SELECT * FROM employee WHERE salary>3000 OR NOT id<3;
结果:
在WHERE
中也能使用逻辑语句IN
(NOT IN
)。它的意义是判断是否存在(不存在)于给定的集合中,例如从employee
表中选择in_dpt
为dpt1
和dpt2
的员工的姓名及id:
SELECT name,id FROM employee WHERE in_dpt IN (“dpt1”,“dpt2”);
结果:
除了这些常见的逻辑判断语句之外,MySQL还提供对字符串LIKE
简单匹配语句以及REGEXP
正则匹配语句。
LIKE
语句比较简单,只有两个常用通配符——%
匹配任意数目字符(包括零字符)。
——_
匹配任意单个字符。
例如从employee
表中选出名字以“R”开头的员工:
SELECT * FROM employee WHERE name LIKE "R%";
从employee
表中选出名字以“J”开头,并且长度为3的员工:
SELECT * FROM employee WHERE name LIKE "J__";
结果:
利用正则表达式进行匹配的语法如下:
SELECT 列名 FROM 表名 WHERE 属性 REGEXP “正则表达式”;#扩展的正则表达式
具体正则表达式的语法,各位可以去下面网站简单学习。
对结果进行排序
关键词ORDER BY
,结合关键词ASC
(升序,默认),DESC
(降序)可以对查询结果排序。例如从employee表中选择姓名和年龄,并按年龄从大到小排序:
SELECT name,age FROM employee ORDER BY age DESC;
结果:
分组查询
有些时候我们需要对数据先分组,然后对每个组分别进行操作,最后再将各自汇总。MySQL为此提供了关键词GROUP BY
来解决这个问题,依旧用employee
表为例,从employee
表中按照属性in_dpt
来分组,并在组内计算age
的平均值,并按均值由小到大输出:
SELECT AVG(age) AS MEAN FROM employee GROUP BY in_dpt ORDER BY MEAN;
结果:
在使用GROUP BY
时有几点必须要注意:
GROUP BY
最后会分组结果进行汇总,如果想以in_dpt
分组,然后再输出age
排序,这样只会得到每个分组中的一个age
的排序结果:
GROUP BY
和ORDER BY
联用的时候一定要将GROUP BY
放在前面。GROUP BY
不能和WHERE
联用,如果要在每个分组中作筛选要使用关键词having
,它的用法基本与WHERE
一样。
统计与计算
正如上节中使用的AVG
函数一样,MySQL内置了丰富的多种函数,详细的可以前往官方文档查询,这里只列出了些可能常用的函数,默认都只有一个参数:
统计函数
名字 | 用途 |
---|---|
AVG | 求均值 |
COUNT | 统计数目 |
MAX | 求最大值 |
MIN | 求最小值 |
SUM | 求和 |
STDEV | 求标准差 |
VAR | 求变异数 |
数值函数
名字 | 用途 |
---|---|
ABS | 求绝对值 |
CEIL | 向上取整 |
FLOOR | 向下取整 |
MOD(x,y) | 求x模y |
RAND() | 返回0-1之间的随机数 |
ROUND | 求四舍五入 |
参考资料
http://blog.youkuaiyun.com/weiwangchao_/article/details/12019345
http://www.cnblogs.com/icyJ/archive/2012/10/17/T_Sql.html