现在我创建了一个数据表,表的内容如下:
- mysql> select * from gubeiqing_table;
- +----------+-----+
- | name | age |
- +----------+-----+
- | gbq | 21 |
- | zhangsan | 20 |
- | lisi | 22 |
- +----------+-----+
- 3 rows in set (0.00 sec)
-
我现在需要对这些数据按照年龄进行一个升序排序。
- mysql> select * from gubeiqing_table order by age ASC;
- +----------+-----+
- | name | age |
- +----------+-----+
- | zhangsan | 20 |
- | gbq | 21 |
- | lisi | 22 |
- +----------+-----+
- 3 rows in set (0.00 sec)
-
可以看到现在的数据库已经按照升序的方式进行排序了。
order by是用来排序的,ASC是升序排序,DESC是降序排序。
现在我有一个这样的数据表。
- mysql> select * from gubeiqing_table;
- +----------+-----+
- | name | age |
- +----------+-----+
- | gbq | 21 |
- | zhangsan | 20 |
- | lisi | 22 |
- | zhangsi | 21 |
- | lisan | 22 |
- +----------+-----+
- 5 rows in set (0.00 sec)
-
我想知道这个数据表里有哪些年龄段。
- mysql> select age from gubeiqing_table group by age;
- +-----+
- | age |
- +-----+
- | 21 |
- | 20 |
- | 22 |
- +-----+
- 3 rows in set (0.00 sec)
-
首先从数据表中查找age字段,接着通过group by将这些年龄分组。
还可以统计这些年龄分别有多少人。
- mysql> select age,count(*) from gubeiqing_table group by age;
- +-----+----------+
- | age | count(*) |
- +-----+----------+
- | 21 | 2 |
- | 20 | 1 |
- | 22 | 2 |
- +-----+----------+
- 3 rows in set (0.00 sec)
-
接着学一下联合查询,使用UNION,UNION用于连接两个以上的SELECT语句的结果组合到一个结果集合中,多个SELECT语句会删除重复的数据。。
- mysql> show tables;
- +---------------------+
- | Tables_in_gubeiqing |
- +---------------------+
- | gbq |
- | gubeiqing_table |
- +---------------------+
- 2 rows in set (0.00 sec)
-
- mysql> select * from gbq;
- +------+-----+
- | name | age |
- +------+-----+
- | qaz | 20 |
- | wsx | 23 |
- | edc | 21 |
- +------+-----+
- 3 rows in set (0.00 sec)
-
- mysql> select * from gubeiqing_table;
- +----------+-----+
- | name | age |
- +----------+-----+
- | gbq | 21 |
- | zhangsan | 20 |
- | lisi | 22 |
- | zhangsi | 21 |
- | lisan | 22 |
- +----------+-----+
- 5 rows in set (0.00 sec)
-
我现在想查看两个表
- mysql> select age from gbq
- -> union
- -> select age from gubeiqing_table;
- +-----+
- | age |
- +-----+
- | 20 |
- | 23 |
- | 21 |
- | 22 |
- +-----+
- 4 rows in set (0.00 sec)
-
现在看到的是所有的值,但是并不是这个字段所以的值。用UNION看到的是去重之后的所有值,如果不想去重那么要使用UNION ALL。
- mysql> select age from gbq
- -> union all
- -> select age from gubeiqing_table;
- +-----+
- | age |
- +-----+
- | 20 |
- | 23 |
- | 21 |
- | 21 |
- | 20 |
- | 22 |
- | 21 |
- | 22 |
- +-----+
- 8 rows in set (0.00 sec)
-
这样就看到了全部的值。