4 - 基础查询进阶|连接查询

数据库系列文章

1 - 数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型
2 - 表结构 | MySQL键值
3 - 字段约束|MySQL索引|MySQL用户管理
4 - 基础查询进阶|连接查询
5 - 视图|存储过程
6 - 数据备份与恢复|innobackupex
7 - MySQL主从同步|主从同步模式
8 - MySQL数据读写分离|MySQL多实例
9 - 数据分片概述|部署MyCat服务
10 - MHA集群概述|部署MHA集群
11 - PXC集群|MySQL存储引擎

基础查询

  • 字符函数
  • 数学函数
  • 聚集函数
    sum() avg() min() max() count()
  • 时间函数

在这里插入图片描述

mysql> select curdate()

流程控制函数

  • if 语句
if (条件,v1,v2) 如果条件是TRUE则返回v1 否则返回v2
---
ifnull(v1,v2) 如果v1不为null 则返回v1 否则返回v2
  • case语法 (可以有多个判断添加)
CASE 字段名
WHEN 值1 THEN 结果
WHEN 值1 THEN 结果
WHEN 值1 THEN 结果
ELSE 结果
END

查询结果处理

语法格式:

select 字段名列表 from 库.表 [where 条件] 分组|排序|过滤|分页
  1. 分组 group by 字段名
    统计使用每种shell的用户个数
mysql> select shell from tarena.user group by shell
  1. 排序 把查找的数据排队,用来排队的字段数据类型应该是数字类型
order by 字段名 asc; # 从小到大排序
order by 字段名 desc ; # 从大到小排

查看满足条件记录的name和uid字段的值

mysql> select name,uid from user where uid is not null order by uid

SQL语句书写思路
第一步 确认使用的命令 (对数据处理使用 select update insert delete)
第二步 确认数据在哪个表 (可以确定from后的表名)
第三步 确定处理的是什么数据
第四步 确定处理条件


把2018年每个员工的收入由高到底排序
查看每个员工的总收入

select employee_id ,sum(basic+bonus) as total from tarena.salary
where year(data)=2018 group by employee_id;
按总收入降序排列
select employee_id,sum(basic+bonus) as total from tarena.salary
where year(date)=2018 group by employee_id order by total desc;
  1. 过滤数据,select 查询结果 having 筛选条件
    对select查询到的数据 再次作筛选
select 字段名列表 from 库.表 [where 条件] having 筛选条件

查询部门人数少于5人

mysql> select dept_id ,count(name) from tarena.employees group by dept_id having count(name)<5;
  1. 分页
    limit限制每次查询显示的行数
select 字段名列表 from 库.表 where 条件 limiter 数字
select 字段名列表 from 库.表 where 条件 limiter 数字1,数字2

比如 从表里查询100条记录 想分5页显示 100/5=20

select * from tarena.user limit 0,20; 显示第一页20条数据

连接查询

把多张表通过连接条件 组成一张新表,然后在组成的新表里查找数据
如果直接查询两张表,将会得到笛卡尔积(2张表里行数相乘的积)

连接查询分类

格式

select 字段列表 from 表1 [as] 别名 [连接类型] join 表2 [as] 别名
on 连接条件
where 分组前筛选条件
group by 分组
having 分组后筛选条件
order by 排序字段

在这里插入图片描述

内连接

select 字段列表 from 表1 [as] 别名 
inner join 表2 [as] 别名 on 连接条件
inner join 表3 [as] 别名 on 连接条件
where 分组前筛选条件
group by 分组
having 分组后筛选条件
order by 排序字段
  • 等值连接 使用相同判断条件
    查询2018年每个员工的总工资
mysql> select name ,date,basic,bonus from employees 
inner join salary on employees.employee_id=salary.employee_id
where year(date)=2018 

mysql> select mame,sum(basic+bonus) from employees 
inner join salary on employees.employee_id=salary.employee_id
where year(date)=2018 group by name

不加sum横着加 加了sum竖着加

  • 非等值连接 使用不同判断条件
# 查询2018年12月份员工各基本工资级别的人数
mysql> select grade,count(employess_id) as numbers
from salary as s 
inner join wage_grade as g on s.basic between g.low and g.high
where year(date)=2018 and month(data)=12
group by grade;
  • 自连接 自己连接自己

外连接

用来比较2个表里记录的不同 或者 哪些数据当前表有而另一张表没有

  • 左外连接 left join
    当左边表的记录全部显示出来 右边的表只显示与条件匹配记录 比左边表少的记录使用null匹配 显示对应个数的行

  • 右外连接 right join
    当右边表的记录全部显示出来 左边的表只显示与条件匹配记录 比右边表少的记录使用null匹配 显示对应个数的行

  • 全外连接(mysql不支持,可以使用union实现相同的效果)
    用来合并查询结果
    可以合并同一张的表的查询记录 (不同表的查询记录也可合并)
    要求查询时,多个select语句的检索到的字段数量必须一致
    每一条记录的各字段类型和顺序最好时一致的

# union关键字默认去重,可以使用union all包含重复项
# 语法格式
(select语句) union (select语句);
(select语句) union all (select语句);

子查询

select查询语句里 包含其他select

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arduino教程从基础进阶的33堂课,旨在帮助初学者快速掌握Arduino的基本原理和编程技巧,并逐步引导他们进阶探索更复杂的项目和应用。课程内容涵盖了Arduino硬件的组成、连接及编程的基础知识,以及各种常用的传感器、执行器和通信协议的应用。 在基础课程中,学生将了解Arduino的发展历史和基本概念。他们将学习如何将Arduino连接到计算机,并使用Arduino IDE编写简单的程序。通过一系列的实践项目,学生将学会控制LED灯、蜂鸣器等基本组件,以及使用按钮和电位器等输入设备与Arduino交互。 随着课程的进行,学生将逐渐掌握更高级的主题和概念。他们将学习如何使用不同类型的传感器,如温度传感器、光线传感器和距离传感器等,来获取外部环境的信息,并通过编程控制输出设备的行为。此外,课程还会介绍如何使用LCD显示屏、无线模块、以及与其他设备的串行通信等技术。 进阶课程将引导学生深入研究更复杂的项目和应用。他们将学习如何建立基础的机器人、智能家居系统和安全系统等。课程还将介绍如何使用Arduino与云平台进行通信,实现远程监控、数据上传和智能控制等功能。 通过这33堂课的学习,学生将具备基本的Arduino编程能力和创造力。他们将能够独立设计和实现简单的电子系统,并为应用提供创新的解决方案。无论是作为学习编程的工具,还是为了将来的职业发展,掌握Arduino的基础知识都将为学生带来巨大的好处。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值