数据库的一些知识点,select 查询语句复习总结

来源:互联网 发布:路由器mac地址 编辑:程序博客网 时间:2024/06/05 20:24

 
 关于日期:
 日期是可以直接参与数学运算的,单位为天,需要把时间换算成天,才

能进行正确的运算。
     month_between(date,date)  两个时间单位之间相差的月份
 add_months(date ,number) 一个日期加减一个月
 next_day (date,'字符串') 根据时间参数,下一个日期
 last_day(date) 这个月的最后一天
    sql语句中的分支
     case when 语句(表达式)以及  decode(函数) 语句
  case when 的功能比decode强大,decode 只能等值处理数据
    语法 case when  ... then ....when ... then ... else ... end

 decode (value ,if ,then ,if1,then1,if2,then2,else)
  

distinct 去重

单行函数
 lower () 字母小写
 upper()所有字母大写
 initcap()首字符大写
 concat 拼接函数
 sunstr求子串函数
 length字符串的长度
 lpad右对齐函数,位数不对的左边补齐指定字符
 rpad左对齐函数,位数不对的右边补齐指定字符
组函数
 avg()平均数
 sum()求和
 count()处理行数不为空的行数
 max()这一行最大的
 min()这一行最小的 
group by  以及having 子句  select from where group by having order by

 group by 后面可以表示多列

having 后面只能跟组函数,以及group by 后面的表达式
 having过滤的是组,where过滤的是行后面可以跟任意列名,单行函数,不能跟

组函数
where执行在前,having子句执行在后。
where子句和having子句都不允许用列别名

关于子查询
 所谓子查询就是在一条sql语句中嵌入select 语句
select col from table where expr operator (select....)
先执行子查询再执行主查询,子查询只执行一遍,若子查询的返回结果为多个值

。oracle会去掉重复之后再将结果返回给
主查询。
where子句后面可以跟多列条件表达式。
关联子查询
  语法形式:
  select col from table i
 where col operator
 (select col1 from table o
   where o.expr1 = i.expr2)
关联子查询采用的是循环的方式:
外部查询得到一条记录并将其传入内部查询;
内部查询基于传入的值执行; 
内部查询从其结果中把值传回到外部查询,外部查询使用这些值来完成其处理,

若符合条件。外表中得到的那条记录就放入到结果集中,否则放弃,改记录不符

合条件;
重复执行上述三个步骤,知道把外表中的的所有记录判断一遍

 

exists  采用的是循环方式,判断outer表中是否存在记录,只要在inner 表中找

到一条匹配的即可。
    not exists 与之相反  也是用循环的方式取值。
in 后面也可以跟多值,先执行子查询,返回结果去重再执行主查询。


表连接
    三种;
   交叉连接  求笛卡尔积
   内连接  inner join
   外连接  outer join

内连接 语法  
 select tab1.col1 , tan2.col2  
 from tab 1 join tab 2
 on table.col1=table2.col2  and ....
用其中一张表做驱动表,另一张做匹配表,用驱动表中的列里面的元素一个一个

区遍历匹配表中的相应的列的元素,如果匹配就返回结果,不匹配就执行下一个
  哪一张表都可以做驱动表

from 后面也可以跟子查询 把子查询返回的结果当成一张表  和另外一张表做连



inner  outer 都可以省略
外连接  语法和内连接一样
    table left join table 1
 左边的表作为驱动表,不管有没有返回值,都保留驱动表的那一列,如果不匹配

则返回空值。

外连接语句的执行顺序
  先将两张表进行外连接操作,在对外连接的结果集用where子句进行过


on  where后面都可以跟多个表达式,表达式之间用and连接
 
 先做on  在where
 

on后面可以跟布尔表达式

集合:
 两张表之间的匹配问题
 两张表记录之间的不匹配的问题
 匹配问题+不匹配问题
集合 运算符
  union  union all 并集
 intersect  交集
 minus  两个表相减