group by
- 根据列的值对结果进行分组,分组后每组仅一条数据
- 查找每个客户的总金额(总订单):
select customer, sum(orderPrice) from orders
group by customer
- 多个列分组:select * from 表名 group by(列1,列2...);比如3个列分组,每个列有2中取值,那么有组
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函数
- aggreate合计函数:操作面向一系列的值,返回一个单一值
- 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( 列名, 为空的话取值 )