oracle数据库

oracle基础知识

常规

  1. 生成表空间
    eg:create tablespace bbb
    datafile ‘c:\aaa.dbf’
    size 100m
    autoextend on
    next 10m;
    释义 :创建表空间bbb,文件为aaa.dbf存储在c盘下,默认大小100M,超出默认每次自增10M;
  2. 建立表应该指定表的表空间;
  3. 创建用户:create user 用户名 identified by 密码 default tablespace 表空间名字;
  4. 授权用户:grant dba/resource/connect to 用户名;
  5. 查询数据:select *,max(某字段) from 表名 where 条件 group by 某字段 order by 某字段 having 某条件;
  6. 修改某字段数据类型:alter table 表名 modify (字段名 数据类型);
  7. 修改数据:update 表名 set 字段名=值 where 条件;
  8. 删除某字段:alter table 表名 delete column 字段名;
  9. 添加外键:alter table A表 add constraint 外键名字 foreign key(A表中某字段) references B表(某主键字段);
  10. 添加主键:alter table 表名 add constraint 主键名字 primary key(某字段或某些字段);注意:某些字段指联合主键;
  11. 添加check约束:alter table 表名 add constraint 约束名 check (约束内容);eg:check(state=0 or state =1);
  12. 添加唯一性约束:alter table 表名 add constraint 约束名 unique (某字段);
  13. 创建视图:create view 视图名字 as 子查询。

常用

  1. 数据类型转换用:to_要转换的数据类型(某字段);
    eg:to_char(name);to_date(‘2020-02-02’,‘时间格式’);

  2. 若用到group by,则被查询的字段只能为group by 后面接的字段或者是函数(求和,平均,统计等),和mysql略有不同。当查询字段多余分组字段,可使用子查询解决。

  3. 链表查询有:普通连表查询,inner join,left join ,right join;其中left join已左表为主,right join 已右表为主;(为主的表中被查询字段将显示全部数据)。

  4. 主键自增实现方法(通过序列和触发器)。
    步骤1:定义序列
    create SEQUENCE 序列名
    increment by 1
    start with 1
    nomaxvalue
    minvalue 1
    nocycle;
    (解释 increment by 1:每次增量值为1, start with 1:增量开始值为1, nomaxvalue:增量无最大值, minvalue 1:最小开始值,nocycle:无缓存(缓存每次往后缓存一个值));

    步骤2:定义触发器
    create or replace trigger 触发器名字
    before insert on 表名
    for each row
    declare
    leng int;
    abc varchar2(10);
    begin
    select to_char(序列名.Nextval) into abc from dual;
    leng:=5-length(abc);
    select rpad(‘k’,leng,‘0’)||abc into:new.自增字段 from dual;
    end;
    插入数据时得到自增字段值为:k0001;
    将触发器中最后换为: select lpad(abc,leng,‘0’) into:new.自增字段 from dual;得到结果为:0001。若不限制自增字段为几位数,则无需declare定义变量。

  5. 开窗函数(over())
    用法eg:select avg(salary)over(partition by 字段1 order by 字段2)…
    eg释义:对avg(salary)以字段1分组和以字段2排序。

  6. 分页查询(分页信息按照工资排序)
    通过rownum实现:select * from (select rownum r,t.* from (select * from emp order by sal) t where rownum<=10 ) where r>5;

  7. nvl()函数
    用法eg:nvl(to_char(birthday,‘yyyy-mm-dd’),‘日期不详’)
    释义:当birthday存在时,将birthday以’yyyy-mm-dd’格式显示,不存在则显示:日期不详。

  8. 从一个日期中获取年月日用to_char()解决。
    eg: select to_char(sysdate,‘yyyy’)from dual;:得到系统当前时间的年限。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值