logo头像

生活就是游乐场!

学习笔记之MySQL的sql基础

每一次新的工作都如同转行一般,只怪自己没有在专业领域深挖,以致于到目前为止也没有拿的出手的本事。接触面广是我一贯作风,热衷于接触才使我不断有新鲜感,这与我性格其实并不太像,有时我不得不承认我也属于那种只有三分钟热度的人,或许在这心浮气躁的时代,本该踏踏实实却又不甘落后的心态所影响,加油!脚步放慢,片刻逗留,处处便是风景。

  在这份工作中,作为乙方,需要给甲方提供技术服务,甲方也就是政府单位,日常会对已集成的系统进行一些事务处理,最直接接触核心数据库的数据信息,同时会需要进行一些数据的查询和EXCEL表格的处理。

avatar

  • 简单查询

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT 列名称 FROM 表名称

    SELECT a.列名称 as 某名称 FROM 表名称 a

    SELECT a.列名称,b.列名称 FROM 表名称 a,表名称 b

    #剔除重复,返回唯一不同的值(DISTINCT)
    SELECT distinct 列名称 FROM 表名称

    #查询以k结尾的姓名
    SELECT * FROM Websites
    WHERE name LIKE '%k';
  • 复杂查询

    1
    2
    3
    4
    5
    6
    SELECT 列名称 FROM 表名称
    WHERE 查询条件
    GROUP BY 分组
    HAVING 对分组结果指定条件
    ORDER BY 列名称 ASC 排序升序
    LIMIT 10 从查询结果中取出10行

例子:

序号 字段名 显示名 类型 备注
1 onlyid 内码 varchar primary key
2 enterid 企业编码 varchar
3 orderid 订单编号 varchar
4 status 状态 varchar 生效是10
5 country 国家 char
6 orderdate 订单日期 date
7 orderprice 订单金额 float

表1:orderform(订单表)


序号 字段名 显示名 类型 备注
1 enterid 企业编码 varchar primary key
2 enterprise 企业名称 varchar

表2:enterform(企业表)


序号 字段名 显示名 类型 备注
1 orderonlyid 内码 varchar primary key
2 orderid 订单编号 varchar
3 goodid 商品编码 varchar
4 goodname 商品名称 varchar
5 goodprice 商品价格 float

表3:goodform(商品表)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  #按订单日期年月汇总 2019年10月-2020年2月 订单金额
SELECT YEAR(orderdate),MONTH(orderdate),SUM(orderprice) AS sum_money
FROM orderform
WHERE `status` = '10'
AND orderdate < '2020-03-01' AND orderdate >= '2019-10-01'
GROUP BY YEAR(orderdate),MONTH(orderdate)
ORDER BY YEAR(orderdate),MONTH(orderdate) asc

#订单数排名前十的国家 2019年10月-2020年2月
SELECT country,COUNT(1),SUM(orderprice) from orderform
WHERE `status`='10'
AND orderprice <> 0
AND orderdate < '2020-03-01'
AND orderdate >='2019-10-01'
GROUP BY country
ORDER BY COUNT(1) DESC
LIMIT 10

#前五名商品累计订单数和订单额
SELECT m.goodid,b.goodname,sum(m.good_sum),count(1) FROM
(
SELECT b.orderid,b.goodid,sum(b.goodprice) as good_sum FROM goodform b
GROUP BY b.goodid,b.orderid
) m,orderform a,goodform b
WHERE a.`status`='10'
AND m.orderid = a.orderid
AND m.goodid = b.goodid
GROUP BY b.goodid
ORDER BY sum(m.good_sum) DESC
LIMIT 5

#TOP10企业累计订单数 2020年1月-3月
SELECT a.enterid,b.enterprise,count(1),sum(a.orderprice) FROM orderform a,enterform b
WHERE a.status = '10'
AND a.orderprice <> 0
AND a.orderdate < '2020-4-1'
AND a.orderdate >='2020-1-1'
AND a.enterid = b.enterid
GROUP BY a.enterid
ORDER BY count(1) DESC
LIMIT 10

学习链接:https://www.runoob.com/sql/sql-tutorial.html

微信打赏

如果对你帮助有帮助,那留个言吧