SQL语句笔记

group by

  • 根据列的值对结果进行分组,分组后每组仅一条数据
  • 查找每个客户的总金额(总订单):
select  customer,  sum(orderPrice)  from  orders  
group  by  customer
  • 多个列分组:select  *  from  表名  group  by(列1,列2...);比如3个列分组,每个列有2中取值,那么有2*2*2=8

having

  • 对group by 分组的结果进行筛选,解决where关键字无法与合计函数使用的问题
  • 本身,对group by分组,每个组内有多行数据,在此基础上进行筛选,就是在合计函数上进行筛选
  • 查找订单总金额少于 2000 的客户:
select customer, sum(orderPrice) from orders
group by customer
having sum(orderPrice)<2000

Inner join内连接

  • 连接两个表,属性相等的就连接在一起
  • select  *  from  表1  inner  join  表2  on  表1属性 = 表2属性
  • 上面语句等同于:select  *  from  表1 ,表2  where  表1属性 = 表2属性

left join左连接

  • 左表返回所有的行,右边返回匹配的行
  • select  *  from  左表  left  join  右表  on  左表属性 = 右表属性

right join右连接

  • 右表返回所有的行,左边返回匹配的行
  • select  *  from  左表  right  join  右表  on  左表属性 = 右表属性

full join全连接

  • 表中所有数据都会返回,匹配的就一起
  • select  *  from  表1  full join  表2  on  表1属性 = 表2属性

limit和offset

  • limit表示取多少条
  • offset表示跳过多少条,比如offset,那么从第3条开始取

函数

  • 函数的语法:select  function(列名) from 表名
  • 主要有两种函数,分别是aggreate合计函数和scalar函数
  1. aggreate合计函数:操作面向一系列的值,返回一个单一值
  2. scalar函数:操作面向单一列的值,返回一个单一值
  • avg,返回列平均值:avg(列名),select  avg(列名) as 别名  from  表名;返回大于属性平均值的行:selct  *  from  表名  where  属性1 >(select avg (属性1) from  表名)
  • count,统计满足条件的行数,null不计入:count(列名);count(*);返回不同值的列数:count(distinct  列名)
  • max、min,返回一列中的最大、小值,null不包含在内
  • sum,列求和
  • ucase、lcase:字段值变为大写、小写
  • mid,用于从文本字段中提取字符:mid (列名,start, end),从1开始,包含end
  • length,用于返回字段中值的长度
  • round,用于把数值字段舍入为指定的小数位数:select  round(列名, 小数位数) from  表名
  • now,返回当前的日期和时间
  • format,用于对字段的显示进行格式化:select  format(列名, 格式化要求) from  表名;如日期:FORMAT(Now(),'YYYY-MM-DD')

order by

  • 按照指定列进行排序,默认是升序,降序的话加上关键字DESC
  • 可同时使用多个属性排序,在前面的属性相等时使用后一个属性排序

in

  • 允许在where字句中规定多个值
  • select  * from  where 属性名 in (值1,值2...)

distinct

  • 仅返回不同的值,值相同的只返回一个
  • select distinct 列名 from表名

between

  • 选取介于两个值之间的数据范围,数据可以是数值、文本或者日期
  • select  * from  where 属性名 between  值1  and  值2

Alias(别名)

  • 可以为列名称和表名称指定别名(Alias)
  • as关键字:select  属性 as 别名  from 表名  as 别名   
  • 无关键字:select  属性      别名  from 表名       别名   

union操作符

  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集,UNION内部的select语句必须拥有相同数量的列、列的数据类型相同、列的顺序相同。
  • UNION 有一个特点,就是多个表中有重复的数据,那么仅展示一个,也就是不会展示重复数据
  • UNION ALL 会展示重复的数据

SELECT INTO

  • 从一个表中选取数据,然后把数据插入另一个表中,常用于创建表的备份复件或者用于对记录进行存档。
  • select  *  into  新表名  in 数据库名  from  表名

unique约束

  • 新建表,在末尾加上:constraint  约束名  unique  (列名)
  • 修改现有表:alter  table  表名  add  unique(列名)

外键

  • 新建表,在末尾加上:constraint  外键名  foreign  key  (列名)  references  链接的表名(链接的列名)
  • 修改现有表:alter table 表名  add  constraint  外键名  foreign  key  (列名)  references  链接的表名(链接的列名)
  • 撤销外键:alter  table  表名  drop  foreign  key  外键名

索引

  • create  index  索引名  on  表名  (列名1,列名2  DESC)
  • 默认是使用升序,加上DESC后是降序
  • 删除索引:alter  table  drop  index  索引名  on 表名

判空

  •  where字句中: 属性  is null;属性  is  not  null;
  • isfull函数:isfull ( 列名, 为空的话取值 )
  • coalesce函数:coalesce( 列名, 为空的话取值 )

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值