《Oracle 11g SQL 和PL SQL从入门到精通》 学习笔记

    xiaoxiao2021-03-25  109

    查询日期列:       例:以特定格式显示日期结果(修改nls_date_format属性)           ALTER SESSION SET nls_date_format='YYYY''年''MM''月''DD''日''';--------->2017年03月08日

    NVL 函数处理NUll :NVL(a_s,0)   --如果a_s 存在数值,则返回其原有数值,如果a_s列为null ,则函数返回0;

                      NVL2(a_s,b_s+a_s,sa)               --如果a_s 不为空则返回b_s与a_s计算的值 否则返回sa 连接字符串     方法一:   使用|| 操作符     方法二:   使用concat 函数     concat('a','bd')---------->'abd' 常规比较符: =(等于)、<>(不等于)、!=(不等于)、>=(大于等于)、<=(小于等于)、>(大于)、<(小于) 其他比较符: between...and...(介于..与..之间)、in(在..之中)、is null(为空) 模糊查询 like    使用通配符%    列名  like 'S%'----------->列名以S开始的列                  使用通配符_和%    列名 like '_S%'------------> 第三个字符为S的列                  处理字符值包含_或者%的模糊查询    列名 like '%a_%' escape 'a' ---------->a为制定转义字符的名称 逻辑操作符:and、or、not (not优先级最高,and 其次,or优先级最低) 排序: order by  列名\列别名\列位置  ASC ---->指定列升序排列    (ASC指定升序<默认> DESC 指定降序 )        注:当select 语句中包含多个字句(where/group by/having/order by等)时,order by必须是最后一个子句        多列排序:order by a ASC,b DESC   ----------->首先按照第一列进行排序,当第一列存在相同数据时,以第二列进行排序,

                                                         以此类推。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    左连接 left join :返回满足连接条件的数据,以及不满足连接条件的左边表的其他数据 右连接 right join :返回满足连接条件的数据,以及不满足连接条件的右边表的其他数据 完全连接 full join:返回满足连接条件的数据,以及不满足连接条件的左边表和右边表的其他数据 数据分组是通过分组函数、GROUP BY 以及HAVING等子句共同实现的   常用分组函数:      1.max(取得列最大值)和min(取得列最小值)      2.avg(平均值)和sum(和)------->只适用于数字      3.count(统计总行数)      4.variance(方差<如果只有一行数据 返回0 当存在多行数据时 按照                      (sum(expr^2)-sum(expr^2))/count(expr)/(count(expr)-1) 计算>)         stddev (标准偏差<方差的平方>) 集合操作符 :union、union all、intersect、minus              union :取两个结果集的并集,会自动去掉结果集中的重复行,并且以第一列的结果进行升序排序              union all:取并集不取消重复值也不进行排序              intersect:取交集只显示同时存在于两个结果集中的数据,以第一列的结果进行升序排序              minus:取差集 以第一列结果升序排序 条件表达式 decode('a','对比值1','返回值1','对比值2','返回值2','返回值3');-->如果a=对比值1 返回返回值1 如果a=对比值2 返回返回值2 否则返回返回值3 case when a<100 then '1' when a>100 then '0' else '-1' end;-->如果a<100返回 1 如果a>100返回0 否则返回-1

    ----------------------------------------------------------------------------------------------------------

    统计一张表中有多少个字段

    select count(*) from user_tab_columns where table_name=upper('表名')

    转载请注明原文地址: https://ju.6miu.com/read-1404.html

    最新回复(0)