1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| 单行函数: 针对sql语句影响的每一行 都做处理 并且针对每一行都返回一个结果。 sql语句影响多少行就返回多少个结果 upper(par1) 变大写 lower(par1) 变小写 initcap(par1) 每个单词首字母变大写 length(par1) 求长度 concat(par1,par2) 连接两个字符串 nvl(par1,par2) nvl 可以处理任何类型 要求par1 和 par2 类型保持一致 substr(par1,par2,par3) par1 要处理的字符串或者字段 par2 截取的位置 编号从 1 开始 可以是负数 -1 代表最后一个字符 par3 截取的长度 replace(par1,par2,par3) par1 要处理的字符串 par2 被替换的内容 par3 替换成什么
组函数: 针对sql语句影响的所有行 只返回一个结果。 无论sql影响多少行 只返回一个结果。 round(par1,par2) 四舍五入函数 par1 要处理的数字 par2 处理的精度 默认是 0 可以省略 trunc(par1,par2) 截取函数 par1 要处理的数字 par2 处理的精度 默认是 0 可以省略 ```
## 5、 多表查询 ```java select 表1别名.字段1,表2别名.字段2 from 表1 表1别名,表2 表2别名 where 表1别名.id=表2别名.id; 等值连接: 使用等号作为表的连接条件 叫等值连接 非等值连接: 不使用等号作为表的连接条件 叫非等值连接 grade 工资级别 losal 级别对应的低工资 hisal 级别对应的高工资 显示每个员工的 id salary 和 对应的工资级别 select id,salary,grade from s_emp , salgrade where salary between losal and hisal; 自连接 找出所有的领导 select distinct m.id,m.first_name from s_emp e,s_emp m where e.manager_id = m.id; 内连接的特点 符合连接条件的数据 被选中 不符合连接条件的数据被过滤掉 select distinct m.id,m.first_name from s_emp e,s_emp m where e.manager_id(+) = m.id and e.manager_id is null;
SQL99标准 sql99 的内连接标准 from a表 join b 表 on 表的连接条件 where 过滤条件; from a表 inner join b 表 on 表的连接条件 where 过滤条件; select d.name,r.name from s_dept d,s_region r where d.region_id = r.id; select d.name,r.name from s_dept d join s_region r on d.region_id = r.id; select d.name,r.name from s_dept d inner join s_region r on d.region_id = r.id; sql99 外连接标准 a 表 left outer join b 表 on 连接条件 where 过滤条件; a 表 right outer join b表 on 连接条件 where 过滤条件; a 表 full outer join b表 on 连接条件 where 过滤条件; 把一个函数的返回值 作为另一个函数参数 左外连接 a 表 left outer join b 表 的意思就是 a 表发起连接, a表发起连接就代表a表全部被匹配出来。 显示每个部门的名字 和 对应的地区的名字 没有地区编号的部门也要显示 select d.name,r.name from s_dept d,s_region r where d.region_id = r.id(+); select d.name,r.name from s_dept d left outer join s_region r on d.region_id = r.id; 组函数 count(par1) 统计数据的个数 max(par1) 统计最大值 min(par1) 统计最小值 avg(par1) 统计平均值 sum(par1) 统计和
分组 按照一定的标准 把数据分成若干部分 select 字段 from 表名 where 条件 group by 分组标准 having 组函数的过滤条件 order by 排序标准 排序方式; 按照部门编号分组 统计每个部门的工资和部门的名字 显示工资和大于3000的部门 select dept_id,sum(salary),max(name) from s_emp,s_dept where dept_id = s_dept.id group by dept_id having sum(salary) > 3000;
|