01 oracle 体系结构 创建表空间 创建用户 用户授权 数据类型 CRUD操作 序列

目录

概念

oracle安装与连接

体系结构

创建表空间 创建用户 用户授权

oracle中常用角色

oracle数据类型

varchar varchar2

NUMBER

DATA

CLOB

BLOB

修改表结构

CRUD操作

序列

scott用户

概念

默认是锁定的

单行函数

概念

多行函数

条件表达式

一共有两种

Decode

when ... then ...

分组查询(group by)

having

where

多表查询

子查询

分页查询

rownum

select是优先于order by 先执行的

分页查询标准代码


  1. 概念

    1. 创始人: 拉里 埃里森
  2. oracle安装与连接

    1. 我们作为java程序员, 只需要知道如何安装就行了
    2. 连接软件
      1. PLSQL Developer
      2. 不能单独使用, 必须在oracle官方推荐的instantclie软件之上使用
  3. 体系结构

    1. 数据库
    2. 实例
    3. 用户
      1. 管理表的基本单位
      2. 在MySQL中, 管理表的基本单位就是数据库
    4. 表空间
      1. 是一个逻辑单位
      2. 一个表空间可以有多个数据文件
      3. 一个表空间可以有多个用户
    5. 数据文件
      1. 真正的实体的物理存储文件
  4. 创建表空间 创建用户 用户授权

    1. oracle中常用角色

      1. connect 连接角色 基本角色
      2. resource 开发者角色
      3. dba 超级管理员角色
    2. --创建表空间
      create tablespace test01
      datafile 'c:\test01.dbf'
      size 100m
      autoextend on
      next 10m;
      --删除表空间
      drop tablespace test01;
      --create user
      create user lq01
      identified by liqian0519
      default tablespace test01;
      
      --给用户授权
      --connect
      --resource
      --dba
      grant dba to lq01;
      

       

  5. oracle数据类型

    1. varchar varchar2

      1. varchar2
        1. 常用
        2. 可以自动截取多余长度, 但不能自动扩展长度
    2. NUMBER

      1. 常用
      2. 可以表示整数, 也可以表示小数
    3. DATA

      1. 常用
      2. 日期
    4. CLOB

      1. 不常用
      2. 存储大文本类型
    5. BLOB

      1. 不常用
      2. 存储二进制类型
  6. 修改表结构

    1. --添加一列
      alter table person add (gender number(1));
      --修改某一列的数据类型
      --当修改的列数比较多的时候, 可以用括号括起来
      alter table person modify (gender char(1));
      --修改列名
      alter table person rename column gender to sex;
      --删除列
      alter table person drop column sex;
      

       

  7. CRUD操作

    1. --查询
      select * from person;
      --添加一条记录
      insert into person(pid,pname) values(2,'lq');
      --修改一条记录
      update person set pname='李乾' where pid = 2;
      --三个删除
      --删除表中全部记录
      delete from person;
      --删除表结构
      drop table person;
      --先删除表, 再创建表
      truncate table person;
      --在数据量大的情况下, 尤其表中带有索引的, 该操作执行效率高
      --而所有可以提高查询效率, 但是会影响增删改的效率
      

       

  8. 序列

    1. 作用
      1. 可以用于实现id值的自增长
    2. 序列不真的属于任何一张表, 但是可以逻辑和表绑定
    3. dual
      1. 是一个虚表, 没有任何意义, 只是为了补全语法
    4. --序列
      create sequence s_person;
      
      select s_person.nextval from dual;
      
      insert into person(pid,pname) values(s_person.nextval,'lq');
      

       

  9. scott用户

    1. 概念

      1. 新手必须了解的用户
      2. 它可以帮你模拟出各种各样的查询, 可以用于学习, 里面预置了好多张表
    2. 默认是锁定的

      1. 解锁
      2. --解锁scott用户
        alter user scott account unlock;
        --解锁scott用户密码 (也可以用户重置密码)
        alter user scott identified by liqian0519;
        --切换到scott用户
        

         

  10. 单行函数

    1. 概念

      1. 作用于一行, 返回一个值
        1. 比如: 4舍5入 字符串转换 大小写转换
    2. --单行函数
      --字符函数
      select upper('qwe') from dual;
      select lower('qwe') from dual;
      --数值函数
      --四舍五入
      select round(12.523123) from dual;
      select round(12.523123, 2) from dual;
      select round(11236782.523123, -3) from dual;
      --日期函数
      select 
      ename , 
      round(months_between(sysdate, hiredate)) weeks 
      from emp;
      --转换函数
      select 
      empno,
      ename,
      to_char(hiredate, 'yyyy') year,
      to_char(hiredate, 'mm') month,
      to_char(hiredate, 'dd') day
      from emp;
      
      select 
      empno,
      ename,
      to_char(hiredate, 'fm yyyy-mm-dd hh24:mi:ss')
      from emp;
      --日期转换函数
      select
      to_date('2020-02-01','yyyy-mm-dd')
      from dual;
      
      --通用函数
      --空值处理nvl
      select
      ename, 
      sal*12+nvl(comm, 0)
      from emp;
      --decode函数, 类似于swtich函数
      select ename,
             decode(job,
                     'CLERK','业务员',
                     'SALESMAN','销售',
                     'MANAGER','分析',
                     'MANAGER','经理',
                     '无业') from emp;
      

       

  11. 多行函数

    1. 概念
      1. 作用于多行, 返回一个值
        1. 比如: 取最大值 取平均值 求和
      2. 聚合查询
  12. 条件表达式

    1. 一共有两种

      1. Decode

        1. oracle专用
      2. when ... then ...

        1. 通用
        2. 以后更多使用的也是这个, 讲究代码可适用性
    2. oracle中, 除了起别名, 其他所有地方都要使用单引号
      1. 起别名也可以使用双引号
        1. 当你起的别名中包含了空格, 那么你需要使用双引号来把别名括起来
  13. 分组查询(group by)

    1. having

      1. 可以出现聚合函数
      2. 过滤分组后的数据
      3. 必须出现在group by之后
    2. where

      1. 不能出现聚合函数
      2. 过滤分组前的数据
      3. 必须出现在group by之前
  14. 多表查询

    1. 推荐使用等值连接
    2. Oracle专用的外连接
      1. 在哪边写加号就保留哪边
      2. select *
        from emp e, dept d
        where e.deptno(+) = d.deptno;
        

         

  15. 子查询

    1. --子查询
      --查询出工资和scott一样的员工信息
      select *
      from emp
      where sal in (select e.sal
      from emp e
      where e.deptno=10);
      --查询出工资和10号部门任意员工工资一样的员工信息
      select *
      from emp
      where sal = (select e.sal
      from emp e
      where e.ename='SCOOT1');
      
      --查询出每个部门最低工资 最低工资员工姓名 以及该员工所在部门名称
      select e.ename,e.sal,d.dname
      from emp e, (select min(sal) msal, deptno
                  from emp
                  group by deptno) t,
           dept d
      where e.sal=t.msal and e.deptno=t.deptno and t.deptno=d.deptno
      
      
      
      
      
      
      
      

       

  16. 分页查询

    1. rownum

      1. 行号
      2. rownum不能大于一个正数
    2. select是优先于order by 先执行的

      1. 如果想要显示排序之后的行号的话, 先要排序, 然后再加入行号
      2. select rownum, t.* from (select * from emp order by sal desc) t
        

         

    3. 分页查询标准代码

      1. oracle的分页查询和MySQL的分页查询使用的sql语句是不一样的
      2. --将emp表倒序排序后, 每页5条记录, 查询第2页
        select *
        from (select rownum rn, t1.* 
             from (select * from emp order by sal desc) t1
             where rownum < 11) t2
        where t2.rn > 5
        

         

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值