产品经理一小时学完SQL基础语句

目录

前置说明

1.SELECT&FROM

基本说明:

*与as说明:

distinct说明:

2.WHERE

基本说明:

3.ORDER BY

基本说明:

in()说明:

4.LIMIT

基本说明:

5.聚合函数&GROUP BY

基本说明:

6.HAVING

基本说明:

7.部分常见函数

数学

字符串

字符转换

时间类

条件判断

8.SQL语句顺序与运行顺序

前置说明

1.本文所采用的示例是依赖于网站SELECT from WORLD Tutorial - SQLZoo

2.本文是学习了戴戴戴师兄的视频教程的笔记。

3.基于MySQL

4.关键字不区分大小写;","为英文逗号;SELECT选择的列名用","间隔;每个完整语句间用";"间隔;每行关键字可以换行来更清晰的表达语句 含义

1.SELECT&FROM

基本说明:

从哪个表中取出哪几列;select选中字段可以直接计算

SELECT 列名 FROM 表名

例:从world中表中取出name与population列

 select name, population from world

例:计算人均gdp

select  gdp/population 人均GDP from world

*与as说明:

SELECT *代表选择表中全部列;SELECT 列名 as 自定义名称 或直接省略as写成 SELECT 列名 自定义名称 表示用新的自定义名称替换为原列名

:取出名字与人口,并重命名;取出整个表

select name 名字, population 人口 from world;

select * from world

distinct说明:

distinct位于select后面,对取出的字段去重,后面有多个列名则表示每一列内容都一样才会去重

例:取出name和continet并去重

select distinct name, population from world

2.WHERE

基本说明:

位于FROM字段后的可选项,用于SELECT选中内容的条件选择,常见如下

例:选择人口在200万到500万之间的国家

SELECT name, population

FROM world

WHERE population between 2000000 and 3000000

例:查询中国与加拿大人口

SELECT name, population

FROM world

WHERE name in ('China', 'Canada')

like说明:

like为模糊查询,"%"表示任何字符出现任意次数;"_"表示任何字符出现一次。

例:查询国家名中含有两个o且被两个字符隔开的国家名

SELECT name

FROM world

WHERE name like '%o__o%'

3.ORDER BY

基本说明:

代表排序的可选项,asc为升序。desc为降序,不写则默认为升序、

例:查询姓名以Sir开头的获奖者,获奖年份和科目,结果按照年份从近到远,再按照姓名升序

SELECT winner, yr, subject

FROM nobel

WHERE winner='Sir%'

ORDER BY yr desc, winner asc

in()说明:

字段在'()'中代表1,不在代表0

例:查询1954年获奖者名与科目,化学奖与物理学奖排在最后,然后按照科目升序,再按照名字升序

SELECT winner, subject

FROM nobel

WHERE yr=1984

ORDER BY subject in ('chemistry', 'physics'), subject, winner

4.LIMIT

基本说明:

限制查询结果显示行数的可选项; limit x, n代表从x+1开始返回n行;limit仅能在MySQL中使用

例:查询国家面积第4到第7的国家并展示

SELECT name, area

FROM world

ORDER BY area desc

LIMIT 3, 4

5.聚合函数&GROUP BY

基本说明:

聚合函数是一些可直接用函数

例:计算非洲国家总人口

SELECT sum(population) 非洲总人口

FROM world

WHERE continent = 'Africa'

例:返回表总行数,gdp列总行数

SELECT count(*), count(gdp)

FROM world

 group by是对选中字段进行分组的可选项,常常与聚合函数联用,类似Excel中创建数据透视表

例:计算每个大洲的国家数

SELECT continent, count(name)

FROM world

GROUP BY continent

例:查询2013年至2015年每年每个科目的获奖人数,结果按照年份从大到小,人数从大到小排序

SELECT yr, subject, count(winner)

FROM nobel

WHERE yr between 2013 and 2015

GROUP BY yr, subject

ORDER BY yr desc, count(winner) desc

6.HAVING

基本说明:

对分组后的每行进行限定和筛选的可选字段

例:查询人口数大于10亿的大洲

SELECT continent

FROM world

GROUP BY continent

HAVING sum(population)>=1000000000

例:查询人口数至少为3亿的大洲和其平均gdp,其中只有gdp高于200亿且人口数大于6000万或者gdp低于80亿且首都中含有三个a的国家的计入计算,最后按照国家数从大到小排序,只显示第一行

SELECT continent, avg(gdp) 平均gdp

FROM world

WHERE (gdp>20000000000 and population>60000000) or (gdp<8000000000 and capital like '%a%a%a%')

GROUP BY continent

HAVING sum(population)>=300000000

ORDER BY count(name) desc

LIMIT 1

7.部分常见函数

数学

round(x,y):对x四舍五入保留y位;y为负数时保留小数点左侧对应位数为0,例:round(3.15, 1) = 3.2;round(12.15, -1) = 10

字符串

concat(s1, s2, ...):对s1、s2...进行拼接;其中任意一个为null,则结果为null

replace(s, s1, s2):用s2替换s中全部的s1

left(s, n), right(s, n):返回字符串s最左(右)边n个字符串,n为负数则倒数;

substring(s, n, len):从第n个开始len长度的子字符串。

字符转换

cast(x as type):将x转换为type类型值,type可以为char(n), date,time,datetime,decimal

时间类

year(date), month(date), day(date):获取年月日

date_add(date, interval 数字 type), date_sub(date, interval 数字 type):对date加或减指定时长,如date_add('2021-07-08 23:59:59', interval 3 month)

datediff(date1, date2):计算date1与date2之间的差

date_format(date, format):格式化时间

条件判断

if(e, v1, v2):e为真返回v1,否则返回v2。

case e when v1 then r1 when v2 then r2 ... else rn end:当e为v1时返回r1....否则返回rn。

8.SQL语句顺序与运行顺序

语句顺序:SELECT->FROM->WHERE->GROUP BY->HAVING->ORDER BY->LIMIT

运行顺序:FROM->WHERE->GROUP BY->HAVING->ORDER BY->LIMIT->SELECT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值