oracle数据库多表查询SQL编写

oracle数据库多表查询SQL编写

-多表查询SQL语法
            ——select distinct+[字段+别名,字段+别名] from [table1,table2] where [条件表达式] orde by[排序字段+asc|desc]

-多表查询中的-笛卡尔积-是不能真正消除的,只能显示上的消除。因为数据库的操作机制就属于逐行的进行数据的判断。多表查询的性能是

很差的,当然,性能差是有一个前提的:数据量大。
-select decode(字段,值,替换值+字段,值,替换值)gradeinfo from table
-左右连接——查询判断条件的参考方向——(只能在oracle数据库中可以用)  
                     (+)=:放在了等号的左边,表示的是右连接,右边的信息全显示;
                      =(+):放在了等号的右边,表示的是左连接,左边的信息全显示;
-
-SQL:1999语法

-交叉连接 cross join用于产生笛卡尔积 select * from table1 cross join table2
-自然连接,自动找到相关匹配的关联字段,消除笛卡尔积 natural join——select * from table1 natural join table2
-join using 手动指定一个关联字段消除笛卡尔积  select * from table1 join table2 using(关联字段)
-join on  手动添加一个可以消除笛卡尔积的关联条件 select * from table1 join table2 on(关联条件)
-左右连接(所有数据库都可以用)
                     左外\右外\全部 连接——left\right\full outer join on
                     select * from table1 left\right\full outer join table2 on(关联条件)
-
统计函数
avg\sum\max\min\count

-分组查询语法(单个字段和多个字段分组都有一个前提:存在重复数据)

——select distinct [分组字段] [统计函数] from table where [条件表达式] group by [分组字段] having [分组后过滤条件,可以用

统计函数] order by[排序字段]
     1)分组函数可以在没有分组的时候单独用使用,可是却不能出现其他的查询字段;
     2)如果现在要进行分组的话,则SELECT子句之后,只能出现分组的字段和统计函数,其他的字段不能出现;
     3)分组函数允许嵌套,但是嵌套之后的分组函数的查询之中不能再出现任何的其他字段;——MAX(AVG(sal))

-where和having的区别
     1)WHERE:是在执行GROUP BY操作之前进行的过滤,表示从全部数据之中筛选出部分的数据,在WHERE之中不能使用统计函数;
     2)HAVING:是在GROUP BY分组之后的再次过滤,可以在HAVING子句中使用统计函数;

-子查询 (在SQL语句中出现嵌套SQL语句的查询方法)理论上子查询可以出现在查询语句的任意位置上,子查询出现在WHERE和FROM子句之中

比较常见
     1)WHERE:子查询一般只返回单行列、多行单列、单行多列的数据;
     2)FROM:子查询返回的一般是多行的数据,当作一张临时表出现。
-在where中出现多行单列的情况下,需要用到 in\any\all 来指定判断范围,
      -not in 的应用中,如果子查询中出现null值,则不会返回任何结果
      -any的应用中有三种情况: =any (子查询结果)   \>any (子查询中的最小值)   \<any (子查询中的最大值)  
      -all的应用中有两种情况: >all (子查询结果的最大值) \<all (子查询结果的最小值)


-模糊查询 like \not like
-配合通配符作模糊查询——%%,%,[],[^]不包含,_, 通配符的相互结合可以形成模糊查询的条件 :'[a-c]%'\'_ac'
-      1)%:表示任意0个或多个字符
       2)_: 表示任意单个字符
       3)[ ]:表示括号内所列字符中的一个
       4)[^ ] :表示不在括号所列之内的单个字符
************在oracle数据库中用 + [] + 进行模糊查询的写法  regexp_like (查询字段,'[字符]')  ; ^a-以字符a开头的数据;a$-以a结尾的数据;

转载于:https://my.oschina.net/u/1866053/blog/330561

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值