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

本文详细介绍了MySQL中的查询操作,包括子查询、筛选、排序、分组和统计计算等内容,并通过具体的例子帮助读者理解如何使用这些查询语句。
959

被折叠的 条评论
为什么被折叠?



