常用的聚合函数有哪五种?
count()、sum()、avg()、min()、max()
count():求表的行数或者指定表中某个列的列值行数,null值被忽略
select count(字段) from 表名 --得到该列值的非null值的行数
select count(*) from 表名 --用于统计整个表的行数。任何行,只要有一行非null,则整个表的行数就会被统计上。全为null(不会出现该情况)则不被统计
sum():返回指定数据的和,只能用于数字列,null值被忽略
select sum(salary) from emp --求所有salary的总和
max():返回一列中的最大值,null值被忽略
select max(column_name) from table_name
min():返回一列中的最小值,null值被忽略
select max(column_name) from table_name
avg():返回数值列的平均值,null值被忽略
select avg(salary) as avg_sal from emp
使用聚合函数时要注意什么?
- 聚合函数可用于任何有效的表达式
- 聚合函数会忽略空值
- distinct关键字可以与聚合函数一起使用,这样可以在聚合函数的计算中排除重复项
修改某表某字段,不允许空值
ALTER TABLE 表名
ALTER COLUMN 修改字段名 字段数据类型 NOT NULL
ORDER BY,GROUP BY
Oracle SQL语句组成:
数据定义语言(DDL) | 数据操作语言(DML) | 数据查询语言(DQL) | 事物控制语言(TCL) | 数据控制语言(DCL) |
---|---|---|---|---|
CREATE(创建命令)、ALTER(修改)命令、DROP(删除)命令等 | INSERT(插入)命令、UPDATE(更新)命令、DELETE(删除)命令、SELECT…FOR UPDATE(查询)等 | 基本查询语句、Order By子句、Group By子句等 | COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令 | GRANT(授权)命令、REVOKE(撤销)命令 |
WHERE不能接聚合函数(MAX、MIN、COUNT、SUM、AVG等);HAVING后可以接聚合函数;
WHERE用在GROUP BY前,先过滤后分组;
HAVING用在GROUP BY之后,先分组后过滤,且使用HAVING一定要用到GRUOP BY,但用到GROUP BY 不一定有HAVING。
查询表的总行数,并命名为cnt
select count(*) (as) cnt from 表名(as可加可不加)
select count(主键或其他不为空的字段) (as) cnt from 表名(as可加可不加)
distinct 搜索去重:select distinct [列名1,列名2,…] from [表名]
检索所有列
select * from 表名
插入记录的方式汇总:
- 普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, …)
- 普通插入(限定字段):INSERT INTO table_name (column1, column2, …) VALUES (value1, value2, …)
- 多条一次性插入:INSERT INTO table_name (column1, column2, …) VALUES (value1_1, value1_2, …), (value2_1, value2_2, …), …
- 从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
- 带更新的插入:REPLACE INTO table_name VALUES (value1, value2, …) (注意这种原理是检测到主键或唯一性索引键重复就删除原记录后重新插入)
修改记录的方式汇总:
- 设置为新值:UPDATE table_name SET column_name=new_value [column_name2=new_value2][WHERE column_name3=value3]
- 根据已有值替换:UPDATE table_name SET key1=replace(key1, ‘查找内容’, ‘替换成内容’) [WHERE column_name3=value3]
删除记录的方式汇总:
- 根据条件删除:DELETE FROM tb_name [WHERE options][ [ ORDER BY fields ] LIMIT n ]
- 全部删除(表清空,包含自增计数器重置):TRUNCATE tb_name
时间差:
- TIMESTAMPDIFF(interval, time_start, time_end)可计算time_start-time_end的时间差,单位以指定的interval为准,常用可选:
- SECOND 秒
- MINUTE 分钟(返回秒数差除以60的整数部分)
- HOUR 小时(返回秒数差除以3600的整数部分)
- DAY 天数(返回秒数差除以3600*24的整数部分)
- MONTH 月数
- YEAR 年数
关键词:substing,concat,upper
用法:
字符串的截取:substring(字符串,起始位置,截取字符数)
字符串的拼接:concat(字符串1,字符串2,字符串3,…)
字母大写:upper(字符串)
SQL语句书写顺序
select->distinct->from->join->on->where->group by->having->order by->limit
SQL语句执行顺序
from->on->join->where->group by(开始使用select中的别名,后面的语句中都可以使用别名)->sum、count、max、avg->having->select->distinct->order by->limit