• ORACLE SQL语句总结2


    1 gourp by

    select salary from stu_tbl group by S_SEX

    GROUP BY 用不好的话会提示一个错误。叫做not group by expression

    groupby 还可以跟一个操作,having 这个限制条件真是让我不知道做什么!所以先放弃。

    后来知道了,就是group by having count(*)>10 来筛选分组的信息。

    2 如何使用 connect by prior 进行递归查询。 

    SELECT a.*, a.LEVEL

      FROM stu_tbl

      CONNECT BY PRIOR sno = master_id;

    这里可以看到 从sno=5 的记录开始,下一条显示的记录的sno = 当前记录的master_id

    以此类推,递归显示。 很容易,无论是自顶向下,自底向上。只要记住 prior后面跟着的是当前的master_id。

    可以在递归显示的过程中,加一个where 条件来剪枝。

    3 找到最新日期

    面对这样的表,为了找到最新的日期。

    select name,to_char(tran_date,'yyyy.mm.dd hh24:mi:ss') tran_date

          from abc t2 where tran_date in (

           select max(t1.tran_date) from abc t1 where

        t1.name=t2.name and t1.mod_no=t2.mod_no )

    用这样的语句便可以找到最新的日期。

    5创建新表结构

    oracle 创建表结构并不是简单的声明变量然后说明变量的属性。

    create table  deptment
    (
    deptno  number(5) primary key,
    dname    varchar2(20),
    loc      varchar2(30)
    )
      PCTFREE   10
      PCTUSED   70
      STORAGE
                 (
                   INITIAL   50K
                   NEXT       50k
                   MAXEXTentS  10
                  )
    disable  primary key;

    有三个字段,是特殊的。PCTFREE, PCTUSED, STORAGE

    PCTFREE 是个什么意思呢?

    回答:PCTFREE存储参数告诉oracle什么时候应该将数据块从对象的空闲列表中移出。ORACLE的默认参数是PCTFREE=10;

    也就是说,一旦一个INSERT操作使得数据块的90%被使用,这个数据块就从空闲列表(free list)中移出。

    PCTUSED 是个什么意思 ?

    回答:存储参数告诉ORACLE什么时候将以前满的数据块加到空闲列表中。当记录从数据表中删除时。

    数据库的数据块就有空间接受新的记录,但只有当填充的空间降到PCTUSED值以下时!

    该数据块才被连接到空闲列表中,才可以往其中插入数据。PCTUSED的默认值是PCTUSED=40。

    STORAGE 是个什么意思?

    INITIAL 5(数据块) 2(数据块) 操作系统限定 分配给Segment的第一个Extent的大小,以字节为单位,这个参数不能在alter语句中改变,如果指定的值小于最小值,则按最小值创建。
    NEXT 5(数据块) 1(数据块) 操作系统限定 第二个Extent的大小等于NEXT的初值,以后的NEXT值=前一NEXT大小乘以(1+PCTINCREASE/100),如果指定的值小于最小值,则按最小值创建。
    如果在alter语句中改变NEXT的值,则下一个分配的Extent将具有指定的大小,而不管上一次分配的Extent大小和PCTINCREASE参数值。
    MINEXTENTS 1(Extent)
    回滚段为2个Extent
    1(Extent)
    回滚段为2个Extent
    操作系统限定 Segment第一次创建时分配的Extent数量

    这个字段的意思,有许多属性可以加。

    三个INITIAL NEXT MINEXTENTS

    6假如只想查询某一日期

    如果是查询某个时间,比如只想知道8月份有谁有档期。需要用to_char(xx,'MM')的方法。

    to_char(tran_date,'yyyy.mm.dd hh24:mi:ss')关于时间就是这样。

    yyyy 代表年,mm代表月,dd代表日,HH24代表小时,MI代表分钟,SS代表秒。

    7 decode 的用法有点类似判断

     

  • 相关阅读:
    Android SDK更新 Connection to http://dlssl.google.com refused 解决方法
    rsync服务架设(数据同步|文件增量备份)
    cocos2dx 环境搭建
    GMT、UTC、PDT 时间是什么?Linux下如何调整时区
    测试日志
    处理Oracle中杀不掉的锁
    熟悉常用的Linux操作
    综合练习:英文词频统计
    编译原理
    字符串、组合数据类型练习
  • 原文地址:https://www.cnblogs.com/zzzPark/p/7278419.html
Copyright © 2020-2023  润新知