简单数据记录查询
简单数据查询——SELECT
MySQL中数据查询通过SELECT语句来实现,形式如下:
SELECT field1 field2 ...fieldn
FROM table_name
- 调整SELECT关键字后面的字段顺序,可以改变相应的显示顺序。
- 可以使用符号“ * ”来表示表中所有字段。
- 如果SELECT关键字后面的字段,不包含在所查询的表中,MySQL则会报错。
避免重复数据查询——DISTINCT
为了实现查询不重复的数据,MySQL提供了关键字DISTINCT。该关键字的语法如下:
SELECT DISTINCT field1 field2 ...fieldn
FROM table_name
实现数学四则运算数据查询
当在MySQL中执行简单数据查询时,有时会用到数学四则运算。
运算符 | 描述 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/(DIV) | 除法 |
%(MOD) | 求余 |
下面通过一个实例来说明如何实现四则运算数据查询
SELECT ename , sal*12 AS yearsalary
FROM t_employee
* 可以通过field [AS] otherfield来实现修改字段名,可以让显示结果更加直观,更加人性化。
设置显示格式数据查询—— CONCAT()
CONCAT()函数用来设置显示格式,以方便用户浏览所查询到的数据。相应格式如下:
SELECT CONCAT(str1/field1 , str2/field2 ,....,strn/fieldn) field_name
FROM table_name
- 如有任何一个参数为NULL ,则返回值为 NULL。
条件数据纪录查询
MySQL通过关键字WHERE关键字对所查询到的数据记录进行过滤,语法形式如下:
SELECT field1 field2 ...fieldn
FROM table_name
WHERE CONDITION
带关系运算符和逻辑运算符的条件数据查询
MySQL中可以通过关系运算符和逻辑运算符来编写“条件表达式”,支持的比较运算符如下:
运算符 | 描述 |
> | 大于 |
< | 小于 |
= | 等于 |
!=(<>) | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
MySQL支持的逻辑运算符如下
运算符 | 描述 |
AND (&&) | 逻辑与 |
OR(11) | 逻辑或 |
XOR | 逻辑异或 |
NOT(!) | 逻辑非 |
示例如下:
SELECT ename
FROM t_employee
WHERE job='CLERK' AND sal>800
带BETWEEN AND关键字的条件数据查询
关键字BETWEEN AND用于实现判断字段的数值是否在指定范围内的条件查询,具体语法形式如下:
SELECT field1 field2 …fieldn
FROM table_name
WHERE field BETWEEN VALUE1 AND VALUE2
上述语句中,通过关键字BETWEEN和AND来设置字段field的取值范围,如果字段field的值在所指定的范围内,则满足查询条件,该记录就会被查询出来;否则不会被查询出来。
- BETWEEN AND关键字操作符只针对数字类型。
带IS NULL关键字的条件数据查询
关键字IS NULL用来实现判断字段的数值是否为空的条件查询,具体语法形式如下:
SELECT field1 field2 ...fieldn
FROM table_name
WHERE field IS NULL
* 具体实现时需要注意空值与空字符串和0的区别。
* 通过关键字IS NOT NULL设置非控制查询条件。
带IN关键字的条件数据查询
关键字IN用来实现判断字段的数值是否在指定集合中的条件查询,具体语法形式如下:
SELECT field1 field2 ...fieldn
FROM table_name
WHERE field IN (value1 ,value2,value3...,valuen);
上述语句中,参数valuen表示集合中的值,通过关键字IN来判断字段field的值是否在集合(value1 ,value2,value3…,valuen)中,如果字段field的值在集合中,则满足查询条件,该记录就会被查询出来;否则不会被查询出来。
- 在具体使用关键字IN时,查询的集合中如果存在NULL,则不会影响查询;如果使用关键字NOT IN,查询的集合中如果存在NULL,则不会有任何的查询结果。
带LIKE关键字的田间数据查询
关键字LIKE用来实现判断字段的值是否与指定的值相匹配,具体的语法形式如下:
SELECT field1 field2 ...fieldn
FROM table_name
WHERE field LIKE value;
LIKE关键字可以实现模糊查询,所以该关键字后面的字符串参数除了可以是一个完整的字符串外,还可以包含通配符。LIKE支持的通配符如下:
1.“_”通配符,该通配符值能匹配单个字符。
2.“%”通配符,该通配符值可以匹配任意长度的字符串。
为了实现查找不匹配字符串的数据记录,提供了NOT LIKE关键字,因此与发行时修改如下:
SELECT field1 field2 ...fieldn
FROM table_name
WHERE field NOT LIKE value;
- LIKE关键字除了可以操作字符串类型数据外,还可以操作其他任意的数据类型。
排序数据纪录查询
MySQL通过关键字ORDER BY关键字来排序数据查询结果,语法形式如下:
SELECT field1 field2 ...fieldn
FROM table_name
WHERE CONDITION
ORDER BY fileldm1 [ASC|DESC] [,fileldm2 [ASC|DESC],]
参数ASC表示安升序的顺序进行排序,参数DESC表示按照降序的顺序进行排序,默认情况下按照ASC(升序)进行排序。
具体运行过程中,首先按照第一个字段进行排序,如果遇到值相同的字段则会按照第二个字段进行排序,以此类推。
限制数据记录查询数量
LIMIT关键字用来限制查询结果的数量,语法形式如下:
SELECT field1 field2 ...fieldn
FROM table_name
WHERE CONDITION
LIMIT OFFSET_START,ROW_COUNT
参数OFFSET_START表示数据记录的起始偏移量,参数ROW_COUNT表示显示的行数。
关键字LIMIT如果不指定初始位置,默认值为0,表示从第一条记录开始显示。
LIMIT关键字还经常与ORDER BY关键字一起使用,先对查询结果进行排序,然后显示其中部分数据记录。
统计函数和分组数据记录查询
MySQL很多情况下都需要进行一些统计汇总操作,这时候就会用到所支持的统计函数,它们分别为:
- COUNT()函数:该统计函数实现统计表中记录的条数。
- AVG()函数:该统计函数实现计算字段值的平均值。
- SUM()函数:该统计函数实现计算字段值的总和。
- MAX()函数:该统计函数实现计算字段值的最大值。
- MIN()函数:该统计函数实现计算字段值的最小值。
在实际应用中,统计函数经常与分组一起使用。对于MySQL所支持的统计函数,如果所操作的表中没有任何数据记录,则COUNT()函数返回数据0,而其他函数则返回NULL。
分组数据查询
MySQL中分组通过SQL语句GROUP BY来实现,分组数据查询语法形式如下:
SELECT function()
FROM table_name
WHERE CONDITION
GROUP BY field;
实现统计功能分组查询
如果想显示每个分组中的字段,可以通过函数GROUP_CONCAT()来实现,该函数可以实现显示每个分组中的指定字段值,函数的具体语法形式如下:
SELECT GROUP_CONCAT(field) field_name
FROM table_name
WHERE CONDITION
GROUP BY field;
实现多个字段分组查询
在使用关键字GROUP BY时,其子句除了可以是一个字段外,还可以是多个字段,即可以按多个字段进行分组。多字段分组数据查询语法形式如下:
SELECT GROUP_CONCAT(field),function(field)
FROM table_name
WHERE CONDITION
GROUP BY field1,field2,...fieldn;
在上述语句中,首先会按照字段field1进行分组,然后针对每组按照字段field2进行分组,以此类推。
实现HAVING子句限定分组查询
在MySQL中如果想实现对分组进行条件限制,决不能通过关键字WHERE来实现,因为该关键字主要用来实现条件限制数据记录。关于HAVING关键字查询语法形式如下:
SELECT function(field)
FROM table_name
WHERE CONDITION
GROUP BY field1,field2,...fieldn
HAVING CONDITION;