mysql查询的基本功能_MySQL基础(一)查询

学习完数据库的基本概念之后,开始语句的学习。

学习内容

1. 导入示例数据库

2. 查询语句 SELECT FROM

3. 筛选语句 WHERE

5. 分组语句 GROUP BY

6. 排序语句 ORDER BY

7. 函数

8. SQL注释

9. SQL代码规范

1. 导入示例数据库

Navicat自带导入功能,如下截图所示:

右键local,点击运行SQL文件,按步骤操作,成功会显示如下界面:

2. 查询语句 SELECT FROM

SELECT是最常用的SQL语句,没有之一,它的用途是从一个或多个表中检索信息,使用SELECT检索信息,至少要给出两条信息:

1、想选择什么信息;

2、从哪里选择信息;

实例

查询一列的数据

SELECT contactLastName FROM customers --contactLastName是列标签,customers是表名

运行结果如下所示,有122条,如下所示:

利用distinct语句去重

SELECT DISTINCT contactLastName FROM customers -- contactLastName是列标签,customers是表名

该查询语句在contactLastName加上distinct,只会保留唯一值,重复的会去掉,可以看到结果从122条变成108条,如下所示:

利用limit取前N个语句

SELECT contactLastName FROM customers LIMIT 10 -- contactLastName是列标签,customers是表名

limit后面的数字可以为任意正整数,只要小于表的行数,结果如下:

利用CASE...END判断语句

详细参考mysql操作查询结果case when then else end用法举例​www.cnblogs.com

4. 筛选语句 WHERE

WHERE 子句配合 SELECT 语句,表示有条件的筛选信息,类似程序语言中的if条件。

where语句常结合运算符、通配符操作,运算符常见有算术运算符、逻辑运算符、比较运算符等。

详细参考:MySQL(六)之MySQL常用操作符 - 苦水润喉 - 博客园​www.cnblogs.com67d215939c3ac917bfa0a55acefaa82c.png

通配符

算术运算符

“+”、“-”、“*”、“/”、“%”分别对应加减乘除求余。

比较运算符

“==”等于、“<=>”安全的等于、“<>(!=)”不等于、“<=”小于等于、“>=”大于等于、“IS NULL”判断一个值是否为NULL、“IS NOT NULL”判断一个值是否不为NULL。

逻辑运算符

NOT或者! 逻辑非

AND或者&& 逻辑与

OR或者|| 逻辑或

XOR 逻辑异或

实例

利用where语句筛选

SELECT contactLastName FROM customers WHERE country = "USA" -- contactLastName是列标签,customers是表名

选取国籍是USA的contactLastName,有36条信息:

where语句加上AND,多个条件同时满足

SELECT contactLastName FROM customers WHERE country = "USA" AND salesRepEmployeeNumber > 1200-- contactLastName是列标签,customers是表名

选取国籍是USA、salesRepEmployeeNumber > 12的contactLastName,有18条信息:

where语句加上OR、IS NULL

SELECT contactLastName FROM customers WHERE country = "France" OR state IS NULL-- contactLastName是列标签,customers是表名

只要满足一个条件就行,73条数据,如下:

5. 分组语句 GROUP BY

GROUP BY 语句根据一个或多个列对结果集进行分组,可以理解成Excel上的透视表。HAVING子句常常配合GROUP BY使用,和where功能相似,where对行进行筛选,而HAVING则是对分组进行筛序。

MySQL中提供的聚合函数可以用来统计、求和、求最值等等。

分类:

COUNT:统计行数量

SUM:获取单个列的合计值

AVG:计算某个列的平均值

MAX:计算列的最大值

MIN:计算列的最小值

实例

按国家分类,并统计出现的次数

SELECT country,count(*) as num FROM customers GROUP BY country

结果如下,有27个国家:

利用having语句,统计出现次数大于3的国家

SELECT country,count(*) as num FROM customers GROUP BY country HAVING count(*) > 3

筛选之后,只有8条信息,结果如下:

6. 排序语句 ORDER BY

ORDER BY子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果,常常配合ASC升序、DSEC降序使用。

实例

SELECT country,count(*) as num

FROM customers

WHERE creditLimit > 0

GROUP BY country HAVING count(*) > 3

ORDER BY country DESC ,count(*) ASC

GROUP BY语句常常在WHERE之后,ORDER BY之前,country是降序,国家计数是升序,结果如下:

7. 函数

时间函数太多,只选部分函数

SELECT NOW();-- 获得当前日期

SELECT TIME('2017-05-15 10:37:14.123456');-- 获取时间

SELECT YEAR('2017-05-15 10:37:14.123456');-- 获取年份

SELECT MONTH('2017-05-15 10:37:14.123456');-- 获取月份

SELECT DAY('2017-05-15 10:37:14.123456');-- 获取日

SELECT HOUR('2017-05-15 10:37:14.123456');-- 获取时

SELECT FROM_UNIXTIME(1494815834);-- 将时间戳转为具体时间

数值函数

字符串函数

这一节实例相对简单,不做具体说明。

8. SQL注释

“--”之后的文本属于注释。

SELECT NOW();-- 获得当前日期

“/**/”从/*开始,到*/结束,/*和*/之间的任何内容都是注释

9. SQL代码规范

题目一:

数据表如下如图所示,查找重复的电子邮箱

利用HAVING的筛选分组功能

SELECT Email as NUM FROM email GROUP BY Email HAVING count(Email) > 1

输出:

题目二:

如果一个国家的面积超过300万平方公里,或者(人口超过2500万并且gdp超过2000万),那么这个国家就是大国家。

编写一个SQL查询,输出表中所有大国家的名称、人口和面积。

利用where和运算符做筛选

SELECT name,population, area FROM world WHERE area > 3000000 OR (population > 25000000 AND gdp > 20000000)

结果如下,和预期一致:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值