数据库知识回顾:
sql语句的语法规范:
- sql语句不区分大小写,习惯上系统的保留字、关键字、函数名称大写,表名和列名小写
- 使用空格和换行分隔单词效果一样,一般情况下独立的整句不换行,不同的子句需要换行,where子句中每个条件占一行
- sql语句以分号作为分隔符,系统读取到分号才会执行语句
- 复杂的sql可以加上注释予以说明
--单行注释
/*
多行注释
多行注释
*/
/*
select 列名1,列名2,……列名n 定义查询数据所在的列
from 表1,表2,……表n 定义查询数据所在的表
where 限定条件1 and/or 限定条件2…… 定义查询数据的范围(行)
group by 列名1,列名2,……列名n 定义分组函数的分组方式
having 分组条件1 and/or 分组条件2…… 定义查询数据的分组条件
order by 列名1 asc/desc,列名2 asc/desc,……列名n asc/desc 定义查询数据的排序方式
*/
1. 单行函数
1) 字符函数:大小写转换,字符截取,空值判断……
2) 数字函数:向下取整,取余,四舍五入、截取
3) 日期函数:日期运算、加月份、当月最后一天、下一个星期几、系统时间
4) 转换函数:日期和字符之间的转换,数字转换字符
5) Decode函数:对不同的值给予不同的结果
6) 函数嵌套:一个函数的结果作为另一个函数的参数
2. 多表查询
1) 需要将多个表的数据显示在同一个查询结果时使用多表查询
2) 从多张表查询时需要使用连接来避免笛卡尔积
3) 查询n张表需要用到n-1个连接
4) 等值连接:表1的外键等于表2的主键
5) 不等值连接:表1的某列数据于表2的某列数据有其他比较关系
6) 自连接:本表的外键等于本表的主键
7) 外连接:不满足连接条件的数据也同样显示
3. 分组函数
1) Avg求平均值,sum求和,count计数,max求最大值,min求最小值
2) 使用group by语句对数据分组,每组数据产生一个结果
3) 出现在select语句中的普通列必须出现在group by子句中
4) Where子句可以限定分组函数计算的范围,但不能出现分组函数的条件
5) Having子句限定分组函数的条件
4. 子查询
1) 将一个查询结果作为另一个查询的条件
2) 子查询可以出现在where子句中作为限定条件,也可以出现在from后面,将查询结果作为一张表来进行查询
3) 子查询必须用括号括起来,并且在where子句中只能出现在比较运算符右侧
4) 单行子查询使用单行运算符,比较条件和查询出的数据类型及格式要一致
5) 多行子查询使用多行运算符:in,all,any
6) 多列子查询使用多列运算符:in
7) 使用rownum 进行分页查询