【MySQL】-2 函数、分组、子查询、联合查询
函数
Mysql的函数特性没有SQL可移植性强。
大多数情况下支持的函数:
处理文本串的函数:
RTrim():处理列值右边的空格
LTrim():处理列值左边的空格
Trim():处理列值的左右两边的空格(中间的不处理)
Upper():文本转大写
Length():返回串的长度
Locate():找出串的一个子串
Lower():文本转小写
...
算术操作函数:
包含一些常见的数值处理函数如:
Abs()取绝对值;
Mod()返回除操作的余数;
Pi()返回圆周率;
Rand();返回一个随机数;
Exp()返回一个数的指数值;
处理日期和时间的函数:
列举常用的几个:
CurDate() 返回当前日期;
CurTime()返回当前时间;
Date()返回日期时间的日期部分
Date_Format()返回一个格式化的日期或时间
Time()返回一个日期时间的时间部分
...
- 查询订单表中,发生于2005-09-01日的订单的有关信息:
select cust_id, order_num from orders
where date(order_date) = '2005-09-01';
获取系统信息的系统函数:
暂略
聚集函数:
部分对表中数据进行汇总(不对实际数据本身感兴趣)的函数。
AVG()返回某列的平均值;
COUNT()返回某列的行数(查询的结果数);
MAX()返回某列的最大值;
MIN()返回某列的最小值;
SUM()返回某列的值的和:
- 查看产品表所有产品的平均价格:
select avg(prod_price) as avg_price
from products;
AVG()值为NULL的行会被忽略;
- 查询在本店由邮箱地址的客户总数。
select count(cust_email) from customers;
count()同样会忽略NULL值,所以没有统计到没留email的客户;如果要统计所有客户可以使用count(*)
聚集函数都会忽略NULL值。
分组
group by :让查询结果按指定列的值排序并给每个列值分组,聚集函数将会作用于组而不是原来的结果集
- 查询产品表中,每个供应商提供的产品数:
select vend_id, count(*) as num_prod
from products
group by vend_id WITH ROLLUP;
with rollup 将返回每个分组汇总的值,这里得到的所有供应商提供的产品总数。
- 查询每个顾客下的订单数量,只展示3单以上的顾客
select cust_id, count(*)
from customers
group by cust_id
having count(*) > 2;having 关键字能对分组的结果再进行筛选(可以理解成where再数据分组前筛选,having在数据分组后再次筛选)
- 查询订单表中表号在20000以后,所有总价大于50的订单,按总价的增序排列:
select order_num, sum(quantity*item_price) as sum_price from orderitems
where order_num > 20000
group by order_num
having sum_price > 50
order by sum_price;
子查询
嵌套在其他查询中的查询,子查询在性能上并不占优势。
- 查找购买过TNT2商品的客户:
1.查询TNT2商品售出记录的订单号
2.由订单号查询客户id
3.由客户id查询客户信息
select cust_name, cust_contact
from customers
where cust_id in (select cust_id
from orders
where order_num in (select order_num
from orderitems
where prod_id = 'TNT2'));
联合查询
内部联合:基于两个表之间的相等测试联结,也叫等值联结。
- 查看每个供应商提供的产品的价格
select vend_name, prod_name, prod_price
from vendors inner join products
on vendors.vend_id = products.vend_id;
外部联合,联合时允许保留没有对应关联行的那些行。其中:LEFT|RIGHT OUTER JOIN 保留关键字左|右边的表所有行,另一边的表如果没有匹配到改行对应的行则补上NULL.
- 检索所有用户,已有订单的检索其订单:
select customers.cust_id, order_num
from customers left outer join orders
on customers.cust_id = orders.cust_id;
组合查询
UNION关键字,UNION ALL 表示不删除两次查询结果中相同的行
【MySQL】-2 函数、分组、子查询、联合查询的更多相关文章
- MySQL的查询,子查询,联结查询,联合查询
MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...
- SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询
SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...
- SQL——连接查询、聚合函数、开窗函数、分组功能、联合查询、子查询
连接查询 inner join,用的最多,表示多张表一一对应 聚合函数 操作行数据,进行合并 sum.avg.count.max.min 开窗函数 将合并的数据分布到原表的每一行,相当于多出来了一列, ...
- sql 基础语法3:分组,聚合函数,having,联合查询,快速备份,内联函数
select * from Classinfo select * from StuInfo select * from CourseInfo select * from ScoreInfo --分组 ...
- MySQL数据库8 -子查询,联合查询
一 使用IN关键字的子查询 问题: 查询游戏类型是'棋牌类' 的游戏的分数信息 - 游戏分数表中并未包含游戏类型信息 思路一:采用链接查询 思路二: 分两步进行,首先找到所以'棋牌类'游戏的编号,再以 ...
- MySQL数据库 —子查询,联合查询
一 使用IN关键字的子查询 1.查询游戏类型是'棋牌类' 的游戏的分数信息 游戏分数表中并未包含游戏类型信息 思路一:采用链接查询 思路二: 分两步进行,首先找到所以'棋牌类'游戏的编号,再以这一组编 ...
- 子查询 & 联合查询
子查询 嵌套在其他语句内部的select语句称为子查询或内查询,外层的语句可以是insert.update.delete.select等,一般select作为外层语句较多.外面如果为select语句, ...
- mysql日期函数及重复数据的查询
-- 日期函数select CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,year(CURRENT_DATE),month(CURRENT_DATE);sel ...
- 180. 连续出现的数字 + MySql + 连续出现数字 + 多表联合查询
180. 连续出现的数字 LeetCode_MySql_180 题目描述 代码实现 # Write your MySQL query statement below select distinct t ...
- 转:EntityFramework查询--联合查询(Join,GroupJoin)
首先我们先看一下Join public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this ...
随机推荐
- PAT 甲级 1054 The Dominant Color (20 分)
1054 The Dominant Color (20 分) Behind the scenes in the computer's memory, color is always talked ab ...
- 谷歌浏览器内核Cef js代码整理(三) 字符串处理
*字符串截取方法*/ var s="abc_def[ghi]jk[i]"; var temp;function CopyFromStr(str_source,str_key, bl ...
- HashMap的实现原理,以及在JDK1.7和1.8的区别
1.JDK1.7 HashMap是Java中大家最常用的一个map实现类,其为键值对也就是key-value的形式.他的数据结构则是采用的位桶和链表相结合的形式完成了,即拉链法.具体如下图所示: Ha ...
- Android 开发 创建WiFi、WiFi热点 ---开发集合
WIFI 权限 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> < ...
- qrcode生成二维码
代码: <!DOCTYPE html> <html lang="en" style="height: 99%"> <head> ...
- Django之路由系统 Dj
Django之路由系统 Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调 ...
- RGB颜色值转化为long 型数字
通常我们表达颜色都是使用RGB值表示的,今天在VB中设置RGB值居然是一个整形数字,网上各种搜资料发现这个数字是怎么来的: 数值= 65536*Blue + 256* Green + Red
- .do的消除
其实就是在web.xml中去掉.do即可 那里有拦截器作用,什么样的文件可以进入前端控制器1
- Spring再接触 IOC DI
直接上例子 引入spring以及Junite所需要的jar包 User.java package com.bjsxt.model; public class User { private String ...
- 2018-2019-2 20175213实验三《敏捷开发与XP实践》实验报告
一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:吕正宏 学号:20175213 指导教师:娄嘉鹏 实验日期:2019年4月29日 实验时间:13:45 - 21:00 实验序号:实验 ...