SQL基础语法

SQL查询语句语法结构和运行顺序

语法结构:

select–from-- where --group by–having–order by–limit

运行顺序:

from–where–group by–having–order by–limit–select
SQL运行顺序

基础语句

SELECT&FROM

select 字段名 决定这一段查询最后展示的字段
from 表名 指定这段查询语句涉及的数据来源

SELECT 字段名 AS 别名 FROM 表名

AS可以省略

  • 查询所有列:SELECT * FROM 表名
  • 数据去重:SELECT DISTINCT 字段名 FROM 表名
  • select中的计算字段:SELECT 字段名,计算字段 FROM 表名称
    注意:计算字段中的算式所涉及的字段必须是表格中包含的,或者算式本身可以独立运算
WHERE

where 表达式 限定查询行必须满足的条件
where核心子句是可选项,使用该子句是为了通过表达式筛选出符合查询条件的行数据

SELECT 字段名 FROM 表名 
	[WHERE 表达式]
  • 运算符查询语法:SELECT 字段名 FROM 表名 WHERE字段名 运算符 值
  • 模糊查询语法;SELECT 字段名 FROM 表名 WHERE 字段名 LIKE ‘通配符+字符’
    在这里插入图片描述
order by
  • order by 字段名 asc|desc 规定查询出的结果集显示的顺序
  • order by核心子句是可选项,使用该子句是为了对被查询出的结果集,指定依据字段排序
  • asc指定该字段升序排序,desc为降序排序,不写则默认为升序排序
SELECT 字段名 FROM 表名 
	[WHERE 表达式] 
	[ORDER BY 字段名 ASC| DESC]
limit by

limit [位置偏移量,]行数 限制查询结果集显示的行数
limit子句是可选项,行数是子句中的必选参数,参数位置偏移量是可选参数

SELECT 字段名 FROM 表名 
	[WHERE 表达式] 
	[ORDER BY 字段名 ASC| DESC]
	[LIMIT [位置偏移量,]行数]
聚合函数&group by
聚合函数

在这里插入图片描述
聚合函数适用于需要获取数据的汇总信息,例如某字段行数、某字段平均值、某字段中最大最小数等

group by 字段名 规定依据哪个字段分组聚合
group by核心子句是可选项,使用该子句是为了依据相同字段值分组后进行聚合运算,常和聚合函数联用

SELECT 字段名1 FROM 表名
	[WHERE 表达式]
	[GROUP BY 字段名1]
	[ORDER BY 字段名 ASC|DESC]
	[LIMIT [位置偏移量,]行数]
having&简单运行原理

having 表达式 限定分组聚合后的查询行必须满足的条件
having核心子句是可选项,使用该子句是为了对group by分组后的数据进行筛选

SELECT 字段名 FROM 表名
	[WHERE 表达式]
	[GROUP BY 字段名]
	[HAVING 表达式]
	[ORDER BY 字段名 ASC|DESC]
	[LIMIT [位置偏移量,]行数]
  • 运行原理:from–where–group by–having–order by–limit–select
部分常见函数
数学函数
  • round(x,y) - - 四舍五入函数
    round函数对x值进行四舍五入,精确到小数点后y位
    y为负值时,保留小数点左边相应的位数为0,不进行四舍五入
例如:
round(3.15,1)返回3.2round(14.15,-1)返回10
字符串函数
  • concat(s1,s2,…) - - 连接字符串函数
    concat函数返回连接参数s1、s2等产生的字符串
    任一参数为null时,则返回null
例如:
concat('My',' ','SQL')
返回My SQL
concat('My',null,'SQL')
返回null
  • replace(s,s1,s2) - - 替换函数
    replace函数使用字符串s2代替s中所有的s1
例如:
replace('MySQLMySQL','SQL','sql')返回MysqlMysql
  • left(s,n)、right(s,n)&substring(s,n,len)——截取字符串一部分的函数
    left函数返回字符串s最左边n个字符
    right函数返回字符串s最右边n个字符
    substring函数返回字符串s从第n个字符起取长度为len的子字符串,n也可以为负值,则从倒数第n个字符起取长度为len的子字符串,没有len值则取从第n个字符起到最后一位
 例如:
 left('abcdefg',3)返回abc
 right('abcdefg',3)返回efg
 substring('abcdefg',2,3)返回bcd
 substring('abcdefg',-2,3)返回fg
 substring('abcdefg',2)返回bcdefg
数据类型转换函数
  • cast(x as type)——转换数据类型的函数
    cast函数将一个类型的x值转换为另一个类型的值
    type参数可以填写char(n)、date、time、datetime、decimal等转换为对应的数据类型
日期时间函数
  • year(date)、month(date)&day(date)——获取年月日的函数
    date可以是年月日组成的日期,也可以是年月日时分秒组成的日期时间
    year(date)返回日期格式中的年份
    month(date)返回日期格式中的月份
    day(date)返回年日期格式中的日份
例如:
year('2021-08-03')返回2021
month('2021-08-03')返回8
day('2021-08-03')返回3
  • date_add(date,interval expr type)&date_sub(date,interval expr type)——对指定起始时间进行加减操作
    date用来指定起始时间
    date可以是年月日组成的日期,也可以是年月日时分秒组成的日期时间
    expr用来指定从起始时间添加或减去的时间间隔
    type指示expr被解释的方式,type可以可以是以下值
    date_add函数对起始时间进行加操作,date_sub函数对起始时间进行减操作
例如:
date_add('2021-08-03 23:59:59',interval 1 second)
返回2021-08-04 24:00:00
date_sub('2021-08-03 23:59:59',interval 2 month)
返回2021-06-03 23:59:59
  • datediff(date1,date2)——计算两个日期之间间隔的天数
    datediff函数由date1-date2计算出间隔的时间,只有date的日期部分参与计算,时间不参与
例如:
datediff('2021-06-08','2021-06-01')
返回7
datediff('2021-06-08 23:59:59','2021-06-01 21:00:00')
返回7
datediff('2021-06-01','2021-06-08')
返回-7
  • date_format(date,format)——将日期和时间格式化
    date_format函数根据format指定的格式显示date值
    可以换使用的格式有
    在这里插入图片描述
例如:
date_format('2018-06-01 16:23:12','%b %d %Y %h:%i %p')
返回Jun 01 2018 04:23 PM
date_format('2018-06-01 16:23:12','%Y/%d/%m')
返回2018/01/06
条件判断函数
  • if(expr,v1,v2)
    如果表达式expr是true返回值v1,否则返回v2
例如:
if(1<2,'Y','N')返回Y,if(1>2,'Y','N')
返回N
  • case when
    case expr when v1 then r1
    [when v2 then r2]

    [else rn]
    end
例如:
case 2 when 1 then 'one' 
	when 2 then 'two' 
	else 'more' 
	end 
返回two
case后面的值为2
与第二条分支语句when后面的值相等相等
因此返回two

case when v1 then r1
[when v2 then r2]

[else rn]
end

例如:
case when 1<0 then 'T' 
	else 'F' 
	end
返回F
1<0的结果为false
因此函数返回值为else后面的F
  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值