SQL必知必会(二)函数、子查询

【函数】

函数处理字段

#文本处理函数

UPPER()     --大写

LOWER()    --小写

SOUNDEX()   --读音类似

LENGTH()   --字符串长度


#日期和时间处理函数

SELECT order_code

FROM order_table

WHERE DATEPART(yy,order_date)=2012


#to_char()函数提取日期成分,MySQL可用year()函数提取年份

SELECT order_num

FROM order_table

WHERE to_number(to_char(order_date,'YYYY'))=2012;    --to_char提取日期成分to_number转化为数值

SELECT order_num

FROM order_table

WHERE order_date BETWEEN to_date('01-01-2012') AND to_date('12-31--2012');   --字符串转日期


#数值处理函数

ABS()   --绝对值

COS()   --余弦

EXP()   --指数值

PI()   --圆周率

SIN()   --正弦

SQRT()   --平方根

TAN()   --正切


聚集函数汇总数据

#平均数AVG()

SELECT AVG(a) AS avg_a

FROM tableA

WHERE a='DLL01';


#计数

SELECT COUNT(*)  AS num_cust              --对所有行计数,不管是否NULL值

FROM tableA;

SELECT COUNT(a) AS num_a          --指定了列名,会忽略NULL值

FROM tableA;


#最值

MAX()和MIN(),忽略NULL值


#总值SUM(),忽略NULL值

SELECT SUM(price*quantity) AS total_price

FROM tableA

WHERE order_code=20008


#以上聚集函数只包含不同值

SELECT AVG(DISTINCT order_price) AS avg_price

FROM tableA

WHERE id='DLL01';


【分组】

两个子句:GROUP BY 和 HAVING

创建、过滤分组

#GROUP BY创建分组HAVING过滤分组

SELECT vend_id, COUNT(*) AS num_prods

FROM tableA

WHERE price>=4

GROUP BY vend_id

HAVING COUNT(*)>=2;   

ORDER BY price    --GROUP BY在WHERE之后在ORDER   BY之前


SELECT子句顺序

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY


【子查询】

子查询与过滤

#子查询顺序为从内而外

SELECT order_num 

FROM tableA

WHERE id='DLL01';

(输出20007和20008)

SELECT id

FROM tableB

WHERE order_num IN(20007,20008);

#合并为子查询。只能查询单个列

SELECT id

FROM tableB

WHERE order_num IN (SELECT order_num FROM tableA WHERE id='DLL01')


计算字段使用子查询

SELECT  cust_name,

                cust_state

                (SELECT COUNT(*) 

                 FROM Orders

                WHERE Orders.cust_id=Customers.cust_id) AS orders

FROM Customers

ORDER BY cust_name;

#Orders.cust_id=Customers.cust_id完全限定列名,在两张表中名字相同列拿出来比较,防止歧义

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SQL 必知必会 第1章 了解SQL 定义 结构化查询语言(Structured Query Language) ...
    zzzzzzzeng阅读 1,326评论 0 0
  • mac MySQL 下载最新的MySQL社区版[https://dev.mysql.com/downloads/m...
    西电大侠阅读 547评论 0 0
  • 注:这一系列的文章是《SQL必知必会》第四版的读书笔记。 7.创建计算字段 什么是计算字段,怎么创建计算字段,以及...
    zuyuxia阅读 353评论 0 0
  • 一、基本概念 数据库、表、列、行、主键、外键、关键字 二、检索 1.检索列 SELECT prod_name(id...
    兀镜晓Jingle阅读 370评论 0 7
  • 第三课: 排序检索数据 distinct关键字:distinct 列名1,列名2,列名3DISTINCT 关键字会...
    VictorBXv阅读 1,536评论 0 8