oracle数据库(零)_特性汇总

1 理论基本

1.1 使用总结
  1. sql引用内存位置组合数据
  2. 分页跑p,分批提交,速度更快更稳定
  3. 避免子查询,不走索引,每个子查询都遍历一次数据,改用链接
  4. 避免集合的使用
  5. 避免模糊查询
  6. 判断有没有时,可以用连接再计算count得出
  7. 计算逻辑,执行每一步时,根据当前表的数据结构,迭代传入列的数值计算的,所以写语句的时候,思考用到了什么变量表,变量表目前的结构是怎样的。
  8. 不使用* ,不直观,危险
  9. 别名可以减轻系统负担
1.2 sql语言类型
  • DDL(data definition language) 【create,alter,drop,truncate】数据定义语言 对表结构进行操作
  • DML(data manipulation language) 【insert,update,delete】数据操控语言,对数据进行操作
  • DQL【select,order by,group by】数据查询语言,标准没有,人们加上去的
  • DCL 【gant,revoke】数据库控制
  • TCL 【commit,rillback】事务控制语言
1.3 分层逻辑(BI开发基本流程)
  • ODS: 一层 (源数据)
    作用是从个平台抽取源数据,整合数据源,避免调用的错误发生,保证索源逻辑可实现

  • DW: 二层 (数据仓,维度表,事实表)
    作用主要是建立事实表和维度表,俗称数据仓库
    事实表:通过修剪源数据保留需要的事实数据,通常作为主表使用
    维度表:根据事实表的维度扩展或细化出来,每个字段都可以作为主表的维度,保持至少一个字段可以与事实表进行连接

  • DM: 三层(根据业务主题,重组维度,聚合计算,设立目标表)
    作用主要针对不同主题设立目标表,形成数据集市
    目标表:根据需求,组合维度表并聚合计算事实数据,得出目标表

  • 报表

1.4 常用数据类型

字符串位数习惯用8的倍数,数字用(22.2)
长度是字节,utf-8时3字节1个中文,gbk时2字节1个中文
oracle中会自动尝试转化数据类型

  • CHAR(length)
  • VARCHAR2(length):可变长度字符,默认长度1,最长4000
  • BUMBER(p,s):无s是整型,有s是浮点型
  • DATE:日期类型
  • INTERVAL:时间间隔类型
  • SYSTIMESTAMP:时间戳
1.5 特性
  • 综合特性
    utf-8:3字节一个中文
    gbk:2字节一个中文
    oracle:计量按从1开始数
  • 删除的区别
    drop: DDL语言,速度最快,删除整张表
    truncate: DDL语言,速度其次,直接清空,不能恢复
    dalete: DML语言,速度最慢,每行删,可回滚,通过日志恢复
  • null的特性
    条件缺少数据时为null,不能再primarykey和notnul列使用,
    排序时最大
    参与任何计算时返回null
    参与任何条件判断是返回false
    指定聚合函数忽略null
    count(col)忽略null
    count(*)计算null
    IS NULL 是null条件
    IS NOT NULL非条件
    IN (NULL)在逻辑运算里会先别过滤掉
    ORDER BY col DESC NULLS LAST控制null的排序职位
  • 查询语句的执行顺序(写需求的顺序)
    根据顺序逐行判断,匹配时返回select字段
    5 select col1,col2
    1 from table
    2 where condition【右-左】
    3 group by col1,col2【传入常数时,与聚合函数一样,先赋值一列数据】
    4 having condition
    6 order col1 ASC,col2 DESC【左-右,可以传入列的数字】
  • 迭代语句
    from,update,dalete语句后面跟的表会被逐行迭代
  • group by特性
    必须有聚合函数与其并存
    查询的字段是聚合函数或分组字段
    可以与case连用
    gourp by 1传入任意值时,会把整个表归为1个组处理
  • between特性
    两端闭合区间:x>=10 and x<=20
  • 伪列rowid,rownum的使用
    rownum必须能查找到1,否则没有返回内容,查询没有不包含1行时用子查询
    rowid`用于去重或返回唯一,按需要唯一的字段分组返回min(rowid)
  • where 的特性
    后面不跟聚合函数
  • where 和 on 的区别
    (都会尽量过滤能过滤的条件)
    on用于连接,保留主表全部数据
    where用于过滤,可能吧主表的数据过滤掉
    同在一条语句时 on 先执行

2 常见问题

2.1 plsql乱码问题
  • 找到数据库语言编码
select userenv('language') from dual; 

select * from V$NLS_PARAMETERS; -- 连接1,2,9行
select r1||'_'||r2||'_'||r9
from
  (
  select 
  min((case rownum when 1 then value end)) r1,
  min((case rownum when 2 then value end)) r2,
  min((case rownum when 9 then value end)) r9
  from V$NLS_PARAMETERS
  group by 1
  );
  • 设置环境变量
    NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  • 重启
2.2 plsql过期
  • 删除注册表文件夹(regedit)
    HKEY_CURRENT_USER\Software\Allround Automations
    HKEY_CURRENT_USER\Software\Microsoft\Security
2.3 oracle sql developer的结果输出
set serveroutput on;
2.4 显示行号
  • ps/sql developer:tools->preferences->editor->display line numbers
    sqlwindow->show gutter
  • oracle sql developer:工具,首选项,代码编辑器,行装订线,显示行号

查询六大法则

  • 分组having法
  • 分析函数法
  • 重复链接发
  • case判断法
  • 字符合并法
  • 条件子查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值