文档章节

oracle数笔一

m243043962
 m243043962
发布于 2017/08/12 15:51
字数 993
阅读 3
收藏 0

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 主表(主键) ;

© 著作权归作者所有

共有 人打赏支持
m243043962
粉丝 0
博文 70
码字总数 34357
作品 0
黄冈
程序员
私信 提问
AltF4币报:美国监管机构互撕 蔡维德称区块链是五百年来最重要金融创新 181027晚

这是摘要 国家与监管 1、 美国国家银行监管协会起诉货币监理署向区块链公司发放银行执照 2、 乌克兰政府拟批准将数字货币合法化的政策 币种动态 3、 BTC平均每个区块的交易笔数超过BCH15倍 ...

青岛的AltF4
2018/10/27
0
0
大数据数据名词:PV、IPV、UV等

大数据数据名词: 数据名词 定义 计算公式 相关名词 浏览量(PV) 店铺页面被访问的总次数 店铺内页面被点击一次,即被记为一次浏览(PV),一个用户多次点击或刷新同一个页面,会被记为多次浏...

哲别0
2017/10/20
0
0
【腾讯优测干货分享】从压测工具谈并发、压力、吞吐量

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/580d914e07b7fc1c26a0cf7c 前言 随着部门业务的拓展,我们有了很多性能测试的机会,但在实战中...

腾讯Bugly
2016/10/24
811
1
迎双11十周年,OceanBase 2.0挑战新巅峰

2018年是“双11”十周年。2009年11月11日,当时的淘宝商城(天猫的前身)举办了首届网络促销活动,当天销售额为0.5亿元;2017年的双11,天猫、淘宝总成交额1682亿元,创造了25.6万笔/秒的新支...

阿川925
2018/09/26
0
0
甲骨文11.9亿美元收云解决方案供应商Aconex

  【IT168 资讯】根据外媒报道,澳大利亚云解决方案供应商Aconex周一宣布,已经收到美国软件巨头Oracle发出的15.6亿澳元(约合11.9亿美元,79.3亿元人民币)的现金收购要约,相当于每股7.80澳...

it168网站
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

虚拟化 - KVM 和 Xen 比较

Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM。 作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业...

临江仙卜算子
27分钟前
1
0
给windows server中的“未识别的网络”或“无法识别的网络”设置网络位置类型

在windows server中,如果网络没有被正确的识别,那么就需要手工设置一下网络位置类型。 将“公用网络”指定设置为“专用网络“ 【控制面板】--【系统和安全】--【管理工具】--【本地安全策略...

gugudu
今天
2
0
阿里强制要求的21条Java开发规范,可以避免很多坑

1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】所有的覆写方法,必须加@Override注解。 说明:getObject...

天王盖地虎626
今天
10
0
oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110

查看trace 文件: MRP0: Background Managed Standby Recovery process started (amls) started logmerger process Sun Jan 20 07:55:53 2019 Managed Standby Recovery starting Real Time ......

hnairdb
今天
2
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linux-tao
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部