oracle 单行函数
lower :
update:
concat :连接两个字符串
ltrim
rtrim
trim
abs
ceil
floor
sysdate
to_char
to_date
聚合函数
count :统计有效数据的数量
max
min
avg :只能用在数字列上
sum
分组 group by :就是将相同内容的分为一组
当查询中出现了group by 分组的时候,那么select显示的列,要么是group by 分组列 ,要么是聚合函数列。
having 对分组之后的数据进行二次过滤 。
decode函数的用法 。
1.可以用来分组统计
select decode(1+1 , 2 ,'ok' ,'error') from dual;
select t1.* , decode(job,'OPERATION','operation','vp_ceo') from t1
select decode(job,'OPERATION','operation','vp_ceo'),count(*) from t1
group by decode(job,'OPERATION','operation','vp_ceo')
2.可以用来动态排序
order by 列名 asc | desc
select dept.*
from dept order by decode(d_name,'销售部',1,'开发部',2,'业务部',3,4)
3.可以用来行转列 。
select s_years ,
sum(decode(s_months,'1季度',s_money)) 一季度,
sum(decode(s_months,'2季度',s_money)) 二季度,
sum(decode(s_months,'3季度',s_money)) 三季度,
sum(decode(s_months,'4季度',s_money)) 四季度
from sales
group by s_years order by s_years;
多表查询 。因为在某些情况下,一张表的数据不能完全满足我们的需求 。
查询员工信息,并且显示员工所在的部门 。
多表连接查询,需要条件。
1.从多表中查询数据,from关键字后面跟多个表名,用逗号隔开。
2.需要多个表中有相同意义的字段。需要指明
select * from emp ,dept where emp.deptno = dept.d_id ;
emp.deptno = dept.d_id ;
表示的emp表中deptno这个列的值,同时存在于 dept表的d_id列中
才查询出来,这种两个表中都存在的才查询出来的连接,称之为 内连接。
外连接 :首先需要以一张表为基表 ,基表的数据会全部显示。同时显示和另外一张表中匹配的数据。 如果没有匹配的数据,用空来填充。
左外连接 left outer join .... on 关联关系
:左外连接就是以左边的表为基表 ,
select * from emp left join dept on emp.deptno = dept.d_id ;
右外连接 right outer join
oracle里面本身的外连接写法 ,使用(+) 来表示的。
(+)在哪个表后面,哪个表就是匹配表,另外一个表叫 基表。
select * from emp ,dept where emp.deptno = dept.d_id;
内连接 15 条匹配的。
以emp 表为基表 15 条匹配的,2 条不匹配的。
以deptno 表为基表 15 条匹配的,3条匹配的。
全外连接 full join ,全外连接,不能使用(+)来表示 。
同时也没有基表 。
显示两表匹配的数据,同时显示两表不匹配的数据 。
select * from emp full join dept where emp.deptno = dept.d_id ;
显示20 条数据 15 + 2 +3 ;
约束:其实就是一种限制性的行为。
表约束 :其实就是对表的一种限制性的行为,如果不满足表的约束,那么对表执行增 删 ,改 就不能成功。
1.默认约束 default
2.非空约束 not null
3.唯一约束 unique :不能重复,可以为空
4.主键约束 primary key:不能重复,不能为空
5.检查约束 check : 限制在某个区间范围内
6.外键约束 foreign key
首先需要在两个表中,并且一个表中可以存在多个外键。
作用:当给某一列设置了外键之后,相当于限制了这一列值的取值范围,只能从主表的主键中取值 。 最终可以到达保障数据的完整性。
d :主表
e :外表(子表)
当表创建之后,是否可以继续添加约束 ?
--只适用于 唯一约束 主键约束 check约束 外键约束
alter table 表名 add constraint 约束名 约束类型 (列名) ;
--非空约束 默认约束
alter table 表名 modify(列名 not null |default '')
emp eid 添加主键 。
alter table emp add constraint pk_eid primary key (eid) ;
alter table emp add constraint uq_eid unique (eid) ;
alter table emp add constraint ck_age check (age between 10 and 20) ;
alter table emp add constraint fk_dno foreign key (dno)
references 主表(主键) ;