java030
转换函数
1)to_number
将字符串转换为数字。
例如:select to_number('¥123,123,123.00', 'L999,999,999.00')+1 from dual;
2)to_date
将字符串转换为日期
例如:select to_date('2022-12-12 23:20:20', 'YYYY-MM-DD HH24:MI:SS') from dual;
3)to_char
将数字或日期转换为字符串
select to_char(1231231231, 'L999,999,999,999.99') from dual;
多表查询:
当查询的数据并不是来源一个表时, 需要使用多表链接操作完成查询。根据不同表中的数据之间的关系查询相关联的数据。
通用函数
1)nvl
用来处理空值, 如果某个字段为空, 则使用对应的数据进行替换
注意: 两者的数据类型必须一致。
例:select ename, sal, comm, sal+nvl(comm, 0) total from emp;
2)nvl2
有三个参数, 如果第一个参数不为空, 则使用第二个参数, 如果为空, 则使用第三个参数。
例:select ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp;
3)decode
类似于switch...case...,
组函数
组函数也称为聚合函数,用来对行的集合进行操作,对每组给出一个结果,这些集合可能是整个表或者是表分成的组。
1.组函数与单行函数的区别:
1)单行函数对查询到的每个结果集做处理,而组函数只对分组数据做处理。
2)单行函数对每个结果集返回一个结果,而组函数对每个分组返回一个结果。
2.组函数的分类
1) AVG平均值
2) COUNT 计数
select avg(sal) from emp;
3) MAX最大值
select max(sal) from emp;
4) MIN最小值
select min(sal) from emp;
5) SUM求和
select sum(sal) from emp;
3.使用组函数的原则
1)函数函数的数据类型可以是CHAR, VARCHAR2, NUMBER或DATE
2)所有组函数忽略空值,可以使用NVL, NVL2或COALESCE函数
4.AVG对分组数据做平均值运算(参数只能是数字类型)
SUM对分组数据求和(参数只能是数字类型)
示例: select avg(salary),sum(salary) from employees;
5.MIN求分组中最小数据(参数可以是字符、数字或日期)
MAX求分组中最大数据(参数可以是字符、数字或日期)
示例: select min(salary),max(salary) from employees;
group by
进行分组排序查询, group by子句可以将数据分为若干个组。
带where的分组排序查询:group by子句要写到where子句的后面。
带having的分组查询:
>where子句中不允许使用分组函数, 用于分组前过滤。
> having用于过滤分组后的条件。
select语句的执行顺序:from-->where-->group by-->select-->having-->order by
cross join(交叉连接)
交叉连接会产生一个笛卡尔积
natural join(自然连接)
natural join用于针对多张表的同名字段进行等值连接
特点:
a) 在自然连接时, 自动进行所有同名列的等值连接, 不需要写连接的条件
b) 同名列只显示一列, 而且在使用时, 不能加表前缀查询所有员工的姓名, 部门编号和部门名称。
多表连接查询
当目标数据分布在不同表中,可以通过多表连接操作来完成查询。根据不同表中的数据之间的关系查询相关联的数据。
多表查询的语法:
select 表名1.列名1,表名2.列名2... from表名1,表名2.. where 子语句。
多表连接时需要注意的原则:
1)在where子句中至少包含一个有效的连接条件。
2)为了连接n个表在一起,至少需要n-1个连接条件。
1)等值连接
通过等号来判断条件中的数据是否匹配。
--1.查询员工的编号,姓名,薪水和所在部门名称
SQL99连接查询_外连接
外连接:
不仅能显示满足连接条件的数据以外, 还能显示不满足连接条件的数据。
外连接有的分类:
1)左外连接;
左外连接(left [out] join) :两种表分别是A表和B表相关联,使用左外连接查询以”左表为主”(左边的表记录将全部展现,右边只展示与左边向关联的数据)
a)方法1: left join实现左外连接(推荐)
select e. employee_ id, e. first_ name, d. depar tment_ id, d. depar tment_ name
departments d on(e. department_ id=d. department_ id)
b)方法2: (+)结合等值连接,实现左外连接。
select
2)右外连接;
可以显示右表中不满足连接条件的数据和左表中满足条件的数据。
a)方法1: right join实现右外连接(推荐)
select
b)方法2: (+)结合等值连接实现右外连接
select
3)全外连接。
full [outer] join, 表示全外连接, 可以显示左右两表中不满足连接条件的数据。
SQL99_自连接
发生在同一个表格的连接。
注意:
自连接中要注意始终包含一个有效的连接条件。
SQL99_cross join_natural join
1)交叉连接:导致两个表的交叉乘积,该连接和两个表之间的笛卡尔乘积是一样的。
2)自然连接:natural join用于针对多张表的同名字段进行等值连接。
笛卡尔积:
一个集合中的每一个成员都与另一个集合中的任意一个成员有关联。
笛卡尔乘积(总记录数=A表的总记录*B表的总记录数),出现大量的冗余数据(无用的数据)。
SQL99_using_on
1)using在查询语句中的作用:
当有多个列匹配时,用using子句匹配唯一的列。
2)on子句与内连接结合使用。