MySQL单表数据记录查询

简单数据记录查询

简单数据查询——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;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值