Oracle.day01多表查询与联表查询

    -- 此时,只要exists中的查询结果有一条或一条以上的数据时,执行前面的语句。
    -- exists中的查询结果没有数据时,则不运行前面的语句。
select * from sysuser
	where userName='cqb'
		and exists(select * from sysuser
        				  where userPassword="12345678")

(2)exists 与 innot exists 与 not in区别

exists与not exists只关注返回集是否为空,而in与not in更关注于返回集的内容。

(1)from 多表:表示多表的各行相拼接

select * 
	from sysuser s, dept d
		where s.deptId = d.deptId
	
-- 一行对多行,并将两表合并输出;共2行,但有6列
userIduserNameuserPassworddeptIddeptId(1)deptName
1cqb1234567811研发部
2ywp8765432122产品部

(2)联表查询

	from sysuser s 
		where s.deptId in (
            				select deptId
            					from dept d
            						where d.deptId=s.deptId
        				   )
        				   
-- where d.deptId=s.deptId 也是一行对多行,但只有单表输出;共3行,并且只有4

(3)distinct关键字去重

	select distinct(userName, userPassword)
	from sysuser
	
--或者

select distinct userName, userPassword
	from sysuser
	
--上述语句只有当userName与userPassword同时重复时才过滤,单个字段重复不过滤。

(4)oracle的并集(union、union all)、交集(intersect)、差集(minus) 用于两个查询语句之间

(1)并集(union与union all):两者的所有记录行
     1)union:相交部分去重并集
    java 2)union all:相交部分不去重并集 //一般不使用

(2)交集(intersect):去重的相交记录行,可用于查询区间(小,大) 相当于区间[1,2]

(3)差集(minus):以第一个查询语句为主,先查出第一个查询语句的结果;再看有没有在第二个查询语句结果中的,有则去掉,无则留下

(5)decode关键字 相当与if条件语句

(6)rownum关键字

即为数据库操作客户端数据表中的行(不包括表头)

(7) onnect by [prior (字段)]关键字 第一次查询的结果可以记录下来

用于存在父子,祖孙,上下级等层级关系的数据表进行层级查询。

connect by进阶

(1)start with:指定起始节点的条件

(2)connect by prior (字段):可以查询使用了connect by后的根节点对应字段

例:表free
id freeId name
1 0 cqb
2 1 ywp
3 1 lyb
4 2 zb

	SELECT ID, freeId, name, CONNECT_BY_ROOT(name) rootName
		FROM free
		START WITH freeId = 0  
		CONNECT BY PRIOR id = freeId; 

查询结果为:
id freeId name rootName
1 0 cqb cqb
2 1 ywp cqb
4 2 zb cqb
3 1 lyb cqb

10、dual伪表

详细笔记

dual表是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。

(1)查看当前用户,可以在 SQL Plus中执行下面语句 select user from dual;

(2)用来调用系统函数;

(3)得到序列的下一个值或当前值,用下面语句

select your_sequence.nextval from dual;		--获得序列your_sequence的下一个值

select your_sequence.currval from dual;		--获得序列your_sequence的当前值

(4)可以用做计算器 ,如:select 7*9 from dual;

11、ground by 分组

select sno,sum(grade) 
	from cs 
	group by sno
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值