设为首页 加入收藏

TOP

mysql SELECT查询(二)
2015-11-21 01:28:04 来源: 作者: 【 】 浏览:4
Tags:mysql SELECT 查询
B [hellodb]> SELECT Name FROM students WHERE Name LIKE 'X%';
+-------------+
| Name ? ? ? ?|
+-------------+
| Xie Yanke ? |
| Xi Ren ? ? ?|
| Xu Zhu ? ? ?|
| Xue Baochai |
| Xiao Qiao ? |
| Xu Xian ? ? |
+-------------+
6 rows in set (0.00 sec)
下面的效果跟上面的相同。这里是用正则表达式匹配的。
1
MariaDB [hellodb]> SELECT Name FROM students WHERE Name RLIKE '^X.*';
?
例3:IN。下面是查找ClassID是1或3或5的记录。只显示Name和ClassID字段。
?
MariaDB [hellodb]> SELECT Name,ClassID FROM students WHERE ClassID IN (1,3,5);
+--------------+---------+
| Name ? ? ? ? | ClassID |
+--------------+---------+
| Shi Potian ? | ? ? ? 1 |
| Yu Yutong ? ?| ? ? ? 3 |
| Shi Qing ? ? | ? ? ? 5 |
| Xi Ren ? ? ? | ? ? ? 3 |
| Yue Lingshan | ? ? ? 3 |
| Wen Qingqing | ? ? ? 1 |
| Lu Wushuang ?| ? ? ? 3 |
| Xu Zhu ? ? ? | ? ? ? 1 |
| Xiao Qiao ? ?| ? ? ? 1 |
+--------------+---------+
9 rows in set (0.00 sec)
?
MariaDB [hellodb]>
? ? ? ??
例4:BETWEEN ?AND ,匹配一个范围。年龄在30到50之间。
?
MariaDB [hellodb]> SELECT Name,Age FROM students WHERE Age BETWEEN 30 AND 50;
+--------------+-----+
| Name ? ? ? ? | Age |
+--------------+-----+
| Ding Dian ? ?| ?32 |
| Shi Qing ? ? | ?46 |
| Tian Boguang | ?33 |
+--------------+-----+
3 rows in set (0.00 sec)
?
MariaDB [hellodb]>
?
例5:组合AND,gender为m,并且,Age大于30或等于20。这个括号是一定要有的,不然就变成“gender为M并且Age大于30,或者Age等于20。
?
MariaDB [hellodb]> SELECT * FROM students WHERE gender='M' AND (Age > 30 OR Age = 20);
+-------+--------------+-----+--------+---------+-----------+
| StuID | Name ? ? ? ? | Age | Gender | ClassID | TeacherID |
+-------+--------------+-----+--------+---------+-----------+
| ? ? 3 | Xie Yanke ? ?| ?53 | M ? ? ?| ? ? ? 2 | ? ? ? ?16 |
| ? ? 4 | Ding Dian ? ?| ?32 | M ? ? ?| ? ? ? 4 | ? ? ? ? 4 |
| ? ? 6 | Shi Qing ? ? | ?46 | M ? ? ?| ? ? ? 5 | ? ? ?NULL |
| ? ?13 | Tian Boguang | ?33 | M ? ? ?| ? ? ? 2 | ? ? ?NULL |
| ? ?25 | Sun Dasheng ?| 100 | M ? ? ?| ? ?NULL | ? ? ?NULL |
+-------+--------------+-----+--------+---------+-----------+
5 rows in set (0.01 sec)
?
想以年龄排序。可以用
ORDER BY ?[ASC|DESC|字段]
?
ASC表示升序, DESC表示降序。 ?默认是ASC
以年龄降序排列。
?
MariaDB [hellodb]> SELECT * FROM students WHERE gender='M' AND (Age > 30 OR Age = 20) ORDER BY Age DESC;
+-------+--------------+-----+--------+---------+-----------+
| StuID | Name ? ? ? ? | Age | Gender | ClassID | TeacherID |
+-------+--------------+-----+--------+---------+-----------+
| ? ?25 | Sun Dasheng ?| 100 | M ? ? ?| ? ?NULL | ? ? ?NULL |
| ? ? 3 | Xie Yanke ? ?| ?53 | M ? ? ?| ? ? ? 2 | ? ? ? ?16 |
| ? ? 6 | Shi Qing ? ? | ?46 | M ? ? ?| ? ? ? 5 | ? ? ?NULL |
| ? ?13 | Tian Boguang | ?33 | M ? ? ?| ? ? ? 2 | ? ? ?NULL |
| ? ? 4 | Ding Dian ? ?| ?32 | M ? ? ?| ? ? ? 4 | ? ? ? ? 4 |
+-------+--------------+-----+--------+---------+-----------+
5 rows in set (0.01 sec)
?
MariaDB [hellodb]>
?
这些只是一般的查询,如果要统计数据,就要用聚合函数了。
?
2、聚合函数。
?
话说想统计下一共有多少人,或者女的有多少,男的有多少,平均年龄,最小最大年龄。
?
SUM(), AVG(), MAX(), MIN(), COUNT()
?
分别是求和、平均值、最大、最小、统计个数。这几个是常用到的。
?
例6:SUM(),全体同学年龄总和。可以用WHERE加上条件,如男同学的年龄总和。
?
MariaDB [hellodb]> SELECT SUM(Age) FROM students;
+----------+
| SUM(Age) |
+----------+
| ? ? ?685 |
+----------+
1 row in set (0.00 sec)
也可以显示其它字段,不过也只是一行。
?
例7:AVG(),全体同学的年龄平均值。
?
MariaDB [hellodb]> SELECT AVG(Age) FROM students;
+----------+
| AVG(Age) |
+----------+
| ?27.4000 |
+----------+
1 row in set (0.00 sec)
?
例8:COUNT(), 统计一共多少学生。COUNT后面有的会使用*。COUNT(*),这样也可以,不过性能
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇后端分布式系列:分布式存储-MyS.. 下一篇mysql学习记录(二十二)--mysql..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: