Oracle Java EE实训教材系列之三
数据库的设计与开发
教师:刘成武
第三章 表数据查询
目 标
使用SELECT语法执行基本的、单个表的查询
聚集查询结果
使用UNION关键字连接多个SELECT语句的结果
-> FROM Country
-> ORDER BY Continent DESC, Name ASC;
10
在SELECT语句里使用LIMIT
当一个查询返回许多记录行时,有必要通过增加LIMIT子句来限定只显示部分记录。
LIMIT子句可以采用以下一个或两个参数:
LIMIT row_count
LIMIT skip_count, row_count
例如:
mysql> SELECT Name FROM Country ORDER BY Name LIMIT 3;
mysql> SELECT Name FROM Country ORDER BY Name LIMIT 2,3;
它常见的用处是获取包含某个特定列的最小或最大值的行,例如:
mysql> SELECT * FROM Country ORDER BY SurfaceArea LIMIT 1;
mysql> SELECT Name, Population
-> FROM Country
-> ORDER BY Population DESC LIMIT 5;
11
聚集查询结果
有可能出现这种情况,结果集里的一行对应于底层基表里的一组记录行。这个过程叫聚合,并且这样一个结果集被称为聚集。
计算一组值的摘要值的函数(例如AVG())被称为“聚集”函数。
MIN()
MAX()
SUM()
AVG()
STD()
COUNT()
GROUP_CONCAT()
12
聚集查询结果示例
例如,使用COUNT(*)函数来统计world数据库中Country表中的行数。
mysql> SELECT COUNT(*) FROM Country;
现在,指定统计Capital列而产生不同的结果,因为不是每个国家都有Capital,NULL值将不会被统计:
mysql> SELECT COUNT(Capital) FROM Country;
13
用SELECT与GROUP BY分组
所有在GROUP BY子句中指定的表达式里,具有相同结合值的记录行将按一组处理,在结果集里以一行结束。
聚集函数可以与GROUP BY一起使用将记录分组。
当带有GROUP BY子句时,聚集函数将为每个组统计值。
mysql> SELECT Continent, AVG(Population)
-> FROM Country
-> GROUP BY Continent;
14
带GROUP_CONCAT()的分组
GROUP_CONCAT()函数将每组的结果字符串连接起来。例如,将南美洲的国家按特定的政府形式创建国家的列表:
mysql> SELECT GovernmentForm, GROUP_CONCAT(Name) AS Countries
-> FROM Country
-> WHERE Continent = 'South America'
-> GROUP BY GovernmentForm\G
15
带WITH ROLLUP的分组
可在GROUP BY子句里使用WITH ROLLUP修饰符来产生多个级别的统计值。
例如:
mysql> SELECT Continent, SUM(Population) as pop
-> FROM Country
-> GROUP BY Continent
-> WITH ROLLUP;
mysql> SELECT Continent, AVG(Population) AS avg_pop
-> FROM Country
-> GROUP BY Continent WITH ROLLUP;
16
HAVING
HAVING子句被用于消除基于聚集值的记录行。
例如:
mysql> SELECT Continent, SUM(Population) AS pop
-> FROM Country
-> GROUP BY Continent
-> HAVING SUM(Population) > 100000000;
17
使用UNION
UNION关键字能够将两个或多个SELECT语句的结果
mysql教程 来自淘豆网m.daumloan.com转载请标明出处.