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

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

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

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

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

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

(2)联表查询

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

(3)distinct关键字去重

	select distinct(userName, userPassword)from sysuser--或者select distinct userName, userPasswordfrom 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) rootNameFROM freeSTART 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

http://www.ppmy.cn/news/824125.html

相关文章

SQL基础--多表查询

-- --SQL基础-->多表查询 -- /* 一、多表查询 简言之,根据特定的连接条件从不同的表中获取所需的数据 笛卡尔集的产生条件: 省略连接条件 连接条件无效 第一个表中的所有行与第二个表中的所有行相连接 二、多表查询语法:*/ SELECT tab…

数据库--- DQL 多表联合查询(一)

一、连接查询(多张表关联查询) 根据表的连接方式来划分: 内连接:等值连接、非等值连接、自连接 外连接:左外连接(左连接)、右外连接(右连接) 全连接 在表达连接查询…

hql连表查询(多表查询)

hql连表查询的问题,总结了一下,与大家分享 package android.com.bzjm.test;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import com.bz…

数据库---DQL 多表联合查询(二)

一、外连接 内连接:假设A和B表进行连接,使用内连接的话。凡是A表和B表能够匹配上的记录查询出来,这 就是内连接。(内连接只能查询到两张表可以匹配到的数据,匹配不到的数据查不到) 外连接:假设…

GL823K

下面是另一家SD/TF解码芯片的方案 ![](https://img-blog.csdnimg.cn/20210319145313645.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80OTU3MDgwNA,size_16,color_FFFFFF,t_70 13030533945 VX

DBeaver 快捷键大全

有些快捷键未经验证,如有问题望不吝指正! ctrl enter 执行sql ctrl \ 执行sql,保留之前窗口结果 ctrl alt ↑ 向上复制一行 ctrl alt ↓ 向下复制一行 ctrl shift F 对sql语句进行格式化,对于很长的sql语句很有用 ctrl d 删除当前…

海康威视DS-K1F100-D8E发卡器Java版

防止以后要用,记录下 后端代码 Controller RequestMapping(value "cardMake") public class CardMakeController extends BaseController {private String menuId ; // 菜单地址(权限用)Resource(name "memberService")private MemberMana…

06_SQL之多表查询

多表查询 文章目录 多表查询前言一、多表查询分类讲解1.1 等值连接 VS 非等值连接1.1.1 等值连接 1.1.2 非等值连接1.2 自连接VS非自连接1.3 内连接VS外连接SQL92: 使用()创建连接 二、SQL 99 语法实现多表查询2.0 基本语法2.1 内连接&#x…