Oracle的积累

1. 连接oracle远程服务器

    服务器与客户端的配置

2.日期,格式敏感

            select * from emp where hiredate='17-11月-81'  正确

            select * from emp where hiredate='1981-11-17' 错误,文字与格式字符串不匹配

3.查询当前的日期格式

   a:select  sysdate from dual;

   b:select * from v$nls_parameters;  可以,不专业

      alter session  set NLS_DATE_FORMAT='yyyy-MM-dd';   专业

4,修改当前session的一些参数(v$nls_parameters:语言,货币,日期等格式)
    alter session set nls_date_format='yyyy-mm-dd';
    也可以加到glogin.sql中,注意最后要有分号。


5,使用日期函数 to_char(str, format)

6,排序:
    按照薪水降序排序
    order by后面可以跟:列名,表达式,别名,序号
        使用序号表示第n个列
    order by作用于多列:
        先按照第一列排序;如果相同,再按照第二列排序;如果降序,需要将desc放在每列后面
    有null值时:
        升序,null值在后面。
        降序,null值在前面,这样不好。
        让null值在后面:
            select * from emp order by comm desc nulls last;


1,分组函数
    avg、count、max、min、sum
    有null时:
        组函数会忽略空值。
        使用NVL函数使分组函数不忽略空值。

2,分组(group by)
    将表中的数据分成若干组
        如按部门分组
    在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中
        包含在 GROUP BY 子句中的列不必包含在SELECT 列表中
    在GROUP BY 子句中包含多个列

3,使用Having
    HAVING 子句中使用组函数

4,组函数嵌套
    显示部门平均工资的最大值


1,子查询
    查询工资比SCOTT高员工信息
        1. 查SCOTT的工资
        2. 查比3000高的员工
    子查询解决的问题:不能一步求解时,考虑使用子查询

2,注意问题:
     1. 子查询相对主查询往右缩进
     2. 将子查询放入括号中
     3. 换行
     4. 可以在主查询的select, from, where, having 都可以放子查询
     5. 不可以在主查询的group by 放子查询
     6. 主查询和子查询可以不是用一张表,只要子查询返回的结果主查询可以使用,即可
     7. 在from后面放子查询(*****)
    
3,select 后面放子查询: 该子查询必须是单行子查询

4,from 后面放子查询: 查询员工的编号和姓名

5,主查询和子查询可以不是用一张表,只要子查询返回的结果主查询可以使用,即可
    例:查询部门名称为ACCOUNTING的员工信息


1,多行子查询
    in: 在集合中
        例:查询部门名称为ACCOUNTING和SALES的员工信息
    any:和子查询中任意(随便)一个值比较
        查询工资比10号部门任意一个员工工资低的员工信息
    all: 和子查询中所有值比较
        查询工资比10号部门所有员工工资低的员工信息
    **
        any: 小于集合中的最大值
        all: 小于集合中的最小值
        any: 大于集合中的最小值
        all: 大于集合中的最大值

2,子查询中的空值问题
    查询不是经理的员工信息(前面已经见到了)

3,相关子查询
    子查询中的条件要引用主查询的值。
    例:
        查询员工与员工经理的工资。


1. rownum一旦生成就不变
2. rownum 只能使用< <=,不能使用> >=


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值