Oracle基础

一些sqlplus的指令

  1. host cls 清屏
  2. show user 查看当前用户
  3. select * from tab;查看当前用户下的表
  4. desc emp;员工表结构
  5. show linesize 查看行宽
  6. set linesize 修改行宽
  7. col for sal 9999 设置行宽为150
  8. col for sal a8 设置行宽为a8
  9. c命令修改

1.基本查询

  1. select * from emp从员工表中查看所有员工信息
  2. null值的问题
  3. 列的别名:在列后面加as,可以省略
  4. ed:进入记事本编辑命令
  5. distinct:取出重复的记录——作用于后面的所有列
  6. concat(a,b):连接符——等同于||
  7. dual: 伪表
  8. 伪列:例如后面学到的rowid

2.过滤和排序

  1. 加入where条件:
    1. 条件中的字符串区分大小写——SQL语句不区分大小写
    2. 条件中的日期格式敏感
  2. 修改日期格式:
    1. alter session set NLS_DATE_FORMAT=”yyyy-mm-dd”
  3. between and
  4. not in(集合)
  5. null(可以存在not in中,但是不能存在in中)——因为null代表的是不确定
  6. order by +列、表达式、别名、序号(选择的列的序号)
    1. 作用于后面的所有列,desc只作用于离他最近的列
    2. 排序中null的值最大

3.单行函数——字符操作

  1. 大小写转换:upper、lower
  2. 截取字符串:substr
  3. 查找指定字符串在目标中的位置:instr
  4. 长度:length
  5. 左右填充:lpad、rpad
  6. 去掉:trim()
  7. 替换:replace
  8. 四舍五入:round
  9. 当前时间:sysdate
  10. 日期相差的月份数:mouth_between(a,b)
  11. 日期加上月份:add_mouth()
  12. 上一个星期几:last_day:
  13. 下一个星期几:next_day
  14. nv12(a,b,c):当a=null时,返回c,否则返回b
  15. nullif(a,b):a=b时,返回null,否则返回a
  16. coalesce:从左到右找到第一个不为null的值

4.多行函数——聚合函数

  1. sum
  2. avg
  3. count
  4. having 后面才可以使用聚合函数作为条件的值,where不行

5.多表查询

  1. 等值连接
  2. 不等值连接
  3. 左外连接和右外连接
  4. 自然连接:通过链接,将同一张表视为多张表
    1. 自然链接不适合操作大表,因为很可能产生笛卡尔积

6.子查询——规范

  1. 括号
  2. 书写合理
  3. 可在where——select——having—— from后面
  4. 不可以在group by中使用
  5. 强调from后面的子查询
  6. 主查询和子查询可以不是同一张表
  7. 一般不存在子查询中排序,但在top-n问题中需要排序
  8. 一般先执行子查询,但是在相关子查询中例外

    1. 相关子查询:每差一条记录,都要重新进行一次子查询
  9. 单行子查询只能使用单行操作符,多行子查询(使用到集合)只能使用多行子查询

    1. 单行子查询操作符:= >

7.集合运算

  1. group by增强——rollup(…..)
  2. union——并集
  3. 注意的问题:
    1. 参与运算的各个集合必须列数相同且类型一致
    2. 采用第一个集合作为最后的表头
    3. order by 永远在最后
  4. 必须知道的例子(略)

    • select deptno,job,sum(sal) from emp group by deptno,job
    • union
    • select deptno,sum(sal) from emp group by deptno
    • union
    • select sum(sal) from emp;
      select deptno,sum(sal) from emp group by deptno

等价于

  • select deptno,job,sum(sal) from emp group by rollup(deptno,job);

8.处理数据——DML、DDL

  1. SQL的类型:DML(insert)、DDL(create)、DCL(grant)
  2. insert等DML语句中使用&,等价于prepareStatement
    1. insert into (。。。、)values(&1,&2.。。、)
    2. &1:aaaa
  3. 批处理
    1. 批量赋值表的结构,不需要数据:create table emp1 as select * from emp where 1=2
    2. 批量处理表的结构,同时包含数据:create table emp1 as select * from emp
  4. 海量数据拷贝:
    1. 数据泵(datapump):plsql
    2. SQL*Loader
    3. (数据仓库)外部表
    4. 可传输的表空间
  5. delete和truncate的区别:

  6. 事务:

    1. 事务开启的标识:第一条DML语句的执行
    2. 结束标识:

      1. 提交

        1. 显示:commit
        2. 隐式:正常退出、DDL、DCL
      2. 回滚:

        1. 显示:rollback;
        2. 隐式:非正常退出、掉电、宕机
  7. savepoint:保存点
  8. 事务的隔离级别:ACID

9.创建和管理表

  1. 行地址 rowid——伪列
  2. 创建表:create
  3. 修改表:alter
  4. 删除表:drop
  5. Oracle的回收站–注意:管理员没有回收站
    1. show recyclebin
    2. purge recyclebin;
    3. 闪回:flashback table TESTSAVEPOINT to before drop;

10.数据库对象

  1. 视图
    1. create view empinfoview
    2. as
    3. plsql。。。
  2. 序列
    1. create sequence myseq;
  3. 索引
  4. 同义词

11.PLSQL

  • declare
    • 说明部分(变量、光标、例外、说明)
  • begin
    • 语句序列(DML语句)
  • exception
    • 例外处理语句
  • end;

12.其他对象

  1. 光标:Cursor
  2. 存储过程
  3. 存储函数——存储过程只有一个返回值时使用。
  4. 包头
  5. 包体
  6. 触发器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值