MySQL中纯数值的记录在程序中可以不加单引号;如果字符型的记录中只有数字则也可以不加单引号;as 语句后面的记录加不加单引号都一样。
1.语法格式:
select
[all | distinct | distinctrow ]
[high_priority] www.2cto.com
[straight_join]
[sql_small_result] [sql_big_result] [sql_buffer_result]
[SQL_cache | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[into outfile 'name' export_options | INTO dumpfile 'name']
[from table_reference [ ,table_reference] …] /*FROM子句*/
[wherewhere_definition] /*WHERE子句*/
[group by{col_name| expr | position} [asc|desc], ... [with rollup]] /*GROUP BY子句*/
[having where_definition] /* HAVING 子句*/
[order by{col_name | expr | position} [ASC| DESC] , ...] /*ORDER BY子句*/
[limt {[offset,] row_count | row_count OFFSET offset}] /*LIMIT子句*/
说明: www.2cto.com
从这个基本语法可以看出,最简单的SELECT语句是SELECTselect_expr,利用这个最简单的SELECT语句,可以进行MySQL所支持的任何运算,例如,SELECT 1+1,它将返回2。
SELECT关键词的后面可以使用很多的选项:
● ALL | distinct | DISTINCTROW:这几个选项指定是否重复行应被返回。如果这些选项没有被给定,则默认值为ALL(所有的匹配行被返回)。DISTINCT和 DISTINCTROW是同义词,用于消除结果集合中的重复行。
● HIGH_PRIORITY,STRAIGHT_JOIN和以SQL_为开头的选项都是MySQL相对于标准SQL的扩展,这些选项在多数情况下可以选择不使用。
● high_priority:给予SELECT更高的优先权,使查询立刻执行,加快查询速度。
● straight_join:用于促使MySQL优化器把表联合在一起,加快查询速度。
● sql_small_result:可以与GROUP BY或DISTINCT同时使用,来告知MySQL优化器结果集合是较小的。在此情况下,MySQL使用快速临时表来储存生成的表,不使用分类。
● SQL_buffer_RESULT:促使结果被放入一个临时表中。这可以帮助MySQL提前解开表锁定,在需要花费较长时间的情况下,也可以帮助把结果集合发送到客户端中。
● SQL_BIG_RESULT:可以与GROUPBY或DISTINCT同时使用,来告知MySQL优化器结果集合有很多行。在这种情况下,MySQL会优先进行分类,不优先使用临时表。 www.2cto.com
● SQL_cache:告知MySQL把查询结果存储在查询缓存中。对于使用UNION的查询或子查询,本选项会影响查询中的所有SELECT。
● SQL_NO_CACHE:告知MySQL不要把查询结果存储在查询缓存中。
● SQL_CALC_FOUND_ROWS:告知MySQL计算有多少行应位于结果集合中,不考虑任何LIMIT子句。
● SELECT…INTO OUTFILE 'name':这个语句可以将表中的行导出到一个文件中,这个文件被创建在服务器主机中,name为文件名。
所有被使用的子句必须按语法说明中显示的顺序严格地排序。例如,一个HAVING子句必须位于GROUP BY子句之后,并位于ORDER BY子句之前。
2. 消除结果集中的重复行
对表只选择其某些列时,可能会出现重复行。例如,若对XSCJ
数据库的XS表只选择专业名和总学分,则出现多行重复的情况。可以使用distinct或distinctrow关键字消除结果集中的重复行,其格式是:select distinct|distinctrow 字段名1 [ , 字段名2…]
其含义是对结果集中的重复行只选择一个,保证行的唯一性。
例:对XSCJ数据库的XS表只选择专业名和总学分,消除结果集中的重复行。 select distinct 专业名,总学分 from xs;
2. 聚合函数(aggregationfunction)(分组:分类汇总)
SELECT子句的表达式中还可以包含所谓的聚合函数。聚合函数常常用于对一组值进行计算,然后返回单个值。除COUNT函数外,聚合函数都会忽略空值。聚合函数通常与GROUP BY子句一起使用,但是不能与where语句一起使用。如果SELECT语句中有一个GROUP BY子句,则这个聚合函数对所有列起作用,如果没有,则SELECT语句只产生一行作为结果。 www.2cto.com
函 数 名
说 明
COUNT
求组中项数,返回int类型整数
MAX
求最大值
MIN
求最小值
SUM
返回表达式中所有值的和
AVG
求组中值的平均值
STD或STDDEV
返回给定表达式中所有值的标准差
VARIANCE
返回给定表达式中所有值的方差
GROUP_CONCAT www.2cto.com
返回由属于一组的列值连接组合而成的结果
BIT_AND
逻辑或
BIT_OR
逻辑与
BIT_XOR
逻辑异或
(1)COUNT函数
聚合函数中最经常使用的是COUNT()函数,用于统计组中满足条件的行数或总行数,返回SELECT语句检索到的行中非NULL值的数目,若找不到匹配的行,则返回0。
语法格式为:COUNT ( { [ ALL | DISTINCT ] expression } | * )
其中,expression是一个表达式,其数据类型是除BLOB或TEXT之外的任何类型。ALL表示对所有值进行运算,DISTIN