数据库部分(MySql)_2
分组查询
分组查询通常和聚合函数结合使用,查询条件中每个XXX就以XXX为分组的条件;
格式:每个A的平均B
select avg(B) from 表名 group by A;
having
在where后面只能写普通字段的条件;在having后面写聚合函数的条件;having写在group by的后面,where写在最前面;
案例: 查询每个部门的平均工资,只查询平均工资大于2000的。
select deptno,avg(sal) a from emp group by deptno having a>2000;
SQL中各个关键字的顺序
select ... from 表名 where ... group by ... having ... order by ... limit ... ;
子查询
嵌套在SQL语句中的查询SQL语句称之为子查询;子查询可以由多层嵌套;子查询可写在where和having后面作为查询条件的值;
写在创建表的时候 create table NEW表名 as (select X,Y from 表名);
写在from后面当成一张新表使用(必须有别名)
select X,Y from (select * from EMP) T;
子查询格式: select 字段名,字段名 from 表名1 字段名=(select avg(字段名) from 表名2);
案例:查询部门平均工资最高的部门信息
)得到平均最高工资
select avg(工资) from EMP group by 部门编号 order by avg(工资) desc limit ,;
)得到部门信息
select 部门编号 from EMP group by 部门编号 having avg(工资)=(select avg(工资) from EMP group by 部门编号 order by avg(工资) desc limit ,);
)得到部门信息
select *from dept where 部门编号 in (select 部门编号 from EMP group by 部门编号 having avg(工资)=(select avg(工资) from EMP group by 部门编号 order by avg(工资) desc limit ,));
关联查询
同时查询多张表的数据称为关联查询。
案例:
)查询每个员工的姓名和相对应的部门名称
select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;
)查询每个商品的标题、商品单价和对应的分类名称
select t1,title,t1.price,t2.name from t_item t1,t_item_category t2 where t1.category_id=t2.id;
)查询在new york工作的所有员工信息
select e.* from emp e,dept d where e.deptno=d.deptno and d.loc='new york';
)查询所有的员工信息和对应的部门地点
select e.*,d.loc from emp e,dept d where e.deptno=d.deptno;
)查询员工信息、员工工资、对应的部门名称,要求工资大于2000
select e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno and e.sal>;
笛卡尔积
关联查询如果不写关联关系,则查询结果为两张表的乘积;笛卡尔积是一种错误的查询结果,在工作中不能出现。
等值连接和内连接
这两种连接方式都是关联查询的查询方式,效率相同;
等值连接: select * from A,B where A.X=B.X and A.Y=XXX;
内连接: select * from A join B on A.X=B.X where A.Y=XXX;
外连接: select * from A left/right join B on A.X=B.X where A.Y=XXX;
左外连接:以join右侧表为主表查询其所有数据和右侧表的交际数据;
右外连接:以jion右侧表为朱彪查询其所有和左侧表的交集数据。
案例:查询所有员工的名字对应的部门名
select e.ename,d.dname from emp e left join dept d on e.deptno=d.deptno;
数据库部分(MySql)_2的更多相关文章
- 数据库 之MySQL 简单教程
So Easy系列之MySQL数据库教程 1. 数据库概述 1.1. 数据库概述 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和 ...
- Mysql数据库知识-Mysql索引总结 mysql mysql数据库 mysql函数
mysql数据库知识-Mysql索引总结: 索引(Index)是帮助MySQL高效获取数据的数据结构. 下边是自己整理的资料与自己的学习总结,,做一个汇总. 一.真的有必要使用索引吗? 不是每一个性能 ...
- 迁移应用数据库到MySQL Database on Azure
by Rong Yu 有用户问怎么把他们应用的数据库迁移到MySQL Database on Azure上,有哪些方式,有没有需要注意的地方.今天我们来概括介绍一下迁移应用数据库到MySQL Data ...
- Cobar是提供关系型数据库(MySQL)分布式服务的中间件
简介 Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明. 产品在阿里巴巴稳定运行3年以上. 接管了3000+ ...
- Mysql数据库的mysql Schema 究竟有哪些东西& 手工注入的基础要领
#查看数据库版本号 mysql> select @@version; +------------+ | @@version | +------------+ | 5.5.16-log | +- ...
- 2、ABPZero系列教程之拼多多卖家工具 更改数据库为Mysql
因为要部署项目到云服务器,不想在服务器上装SqlServer,所以需要把项目改为Mysql. 项目初始化 1.下载项目压缩包,前面文章已经说到,可以加群到群文件里下载.解压缩下载的项目源码,使用VS2 ...
- 关于数据库管理系统DBMS--关系型数据库(MySQL/MariaDB)
数据库的结构(3种):层次,网状,关系型(用的最多): DBMS的三层模型: 视图层:面向最终用户: 逻辑层:面向程序员或DBA: 物理层:面向系统管理员: 关系型数据库管理系统——RDBMS: 主要 ...
- 数据库【mysql篇】学习笔记
Windows服务 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意 ...
- 数据库之数据库管理篇[mysql]
管理数据库 1.mysql开闭使用篇 mariadb在Linux中首次进入mysql(因为此时还没有创建任何用户,mysql的root并不等效于linux中的root用户) sudo mysql 进入 ...
- 数据库之mysql篇(1)—— 数据库管理系统简介/mysql的安装、配置
说mysql之前,还是先说说数据库. 什么是数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后 ...
随机推荐
- eclispe安装tomcate没有srver解决
eclipse没有server选项解决方法 找到Help->InstallNew Software->"Kepler" repository(http:// ...
- HTML标签的绝对路径和相对路径
我在javaweb中写json的Demo的时候遇到了这个问题,图片一一直取不出来,查了好久终于解决了,所以现在记录一下. 绝对路径: 其实很容易理解,如果你是一个普通的项目,那就是它在你电脑里真实存在 ...
- python+pycharm环境搭建
1.下载python安装包 https://www.python.org/downloads/ 2.下载pycharm安装包. https://www.jetbrains.com/pycharm/do ...
- 万里长征第一步:Python进程池的一点点小坑
# -*- coding: utf- -*- """ Created on Thu Mar :: @author: lilide """ # ...
- 我的C#跨平台之旅(六):发布应用
由于此架构从一开始就将.NET Framework 的依赖降低到最低,且不依赖IIS,在ORM层面,完全实现代码优先,即真正做到数据库无关: Windows服务器部署: 在Windows应用服务器上安 ...
- 5-Django接口数据处理
1.get接口数据处理 # get接口数据处理 def dadaHandle_get(request): if request.method == 'GET': results = {} userna ...
- java实现中缀表达式转后缀表达式
package postfix; import java.util.Stack; /** * * @author DELL 将中缀表达式转化为后缀表达式 */ public class Express ...
- weblogic 控制台访问速度很慢的解决方案
实际是JVM在Linux下的bug 他想调用一个随机函数 但取不到 暂时的解决办法是 1)较好的解决办法: 在Weblogic启动参数里添加 “- Djava.security.egd=file:/d ...
- 调用支付宝支付(C#)
//支付宝支付 public string AliPay(string OrderID, string Total) //OrderID订单号,Total订单总金额 { // 支付宝网关 string ...
- react-native 项目初始化
react-native 项目初始化 搭建java,android,node环境 http://www.cnblogs.com/morang/p/react-native-java-build.htm ...