zoukankan      html  css  js  c++  java
  • 2.Oracle数据库

    一、Oracle数据库概述
    1. 数据库物理组成
    1. 数据文件-Data File

    用于储存数据库中全部数据

    1. 日志文件-Redo Log File

    记录数据库中的变更,便于出现错误时恢复数据

    1. 控制文件-Control File

    二进制文件,用于储存数据库物理结构

    1. 配置文件

    储存数据块大小,内存结构配置等

    • 这些文件不能直接操作,只能通过Oracle实例去操作
    2. 用户
    1. sys:管理员用户 sysdba

      • 此用户具有所有权限
      • 此用户可以免密登录
      • 维护系统信息,管理实例
    2. system

      • 用来管理用户,权限,储存等
    3. scott

      • 默认密码tiger
      • 自带的普通用户,不能直接使用,需要解锁后重新设置密码
    -- 创建用户
    create user 用户名 identified by 密码;
    
    -- 修改用户密码
    alter user 用户名 identified by 密码;
    
    -- 删除用户
    drop user 用户名;
    drop user 用户名 cascade;
    
    -- 赋权限/角色
    grant 权限/角色 to user;
    
    -- 移除权限/角色
    revoke 权限/角色 from user;
    
    3. 数据库实例

    实例是一个数据库对象

    实例名就是数据库名

    精简版:XE

    完整版:ORCL

    4. 启动服务并连接数据库

    启动服务必须打开Service和Listener

    登录:默认端口1521

    二、约束和表关系
    约束
    1. 实体完整性约束
    2. 域完整性约束
    3. 引用完整性约束
    4. 自定义约束
    -- 添加主键约束
    alter table 表名 
    add constraint 约束名 primary key (字段名);  
    
    -- 添加默认约束
    alter table 表名
    modify  (字段名 default '值'); 
    
    -- 添加非空约束 (有非空和默认时,先写默认再写非空)
    alter table 表名 
    modify (字段名 not null );
    
    -- 添加唯一约束
    alter table 表名 
    add constraint 约束名 unique (字段名);
    
    -- 添加检查约束
    alter table 表名 
    add constraint 约束名 check (检查判断条件);
    
    -- 添加外键约束
    alter table 表名
    add constraint 约束名 foreign key references 主表 (字段);
    
    -- 删除约束
    alter table 表名
    drop constraint 约束名;
    
    -- 创建表
    create table 表名(字段名 数据类型(长度),字段名 数据类型(长度));
    
    -- 删除表
    drop  table 表名;
    
    -- 添加表字段
    alter table 表名
    add (字段名 数据类型(长度));
    
    -- 修改表字段
    alter table 表名
    modify (字段名 数据类型(长度));
    
    -- 删除表字段
    alter table 表名 drop (字段名);
    alter table 表名 drop column 字段名;
    
    -- 表重命名
    rename 旧表名 to 新表名;
    
    -- 增加注释
    comment on table 表名 is '注释';
    comment on table 表名.属性名 is '注释';
    
    -- 表截断
    -- 清空表 不可回滚 只生成一次日志文件
    truncate table 表名;
    
    -- 删除
    -- 删除补空值
    on delete set null;
    -- 级联删除
    on delete cascade;
    
    数据类型
    字符类型 数值类型 日期类型 大对象类型
    char 固定长度字符串,长度为可储存字节数 number(总位数,小数位数) date 普通日期类型 BOLB保存非结构化二进制数据,最大4G
    nchar 固定长度字符串,长度为可储存字符数 int 整数类型 datestamp有精度的日期类型,精度为0-9,默认为6
    varchar2 不固定长度字符串,长度为可储存字节数
    nvarchar2 不固定长度字符串,长度为可储存字符数
    三范式
    1. 第一范式:原子性--每一列都是不可再分的最小数据单元
    2. 第二范式:唯一性--要求必须有唯一标识(主键),非主键字段完全依赖主键
    3. 第三范式:冗余性--字段之间不存在传递依赖,任何字段不能由其他字段派生而来
    ER表达式
    1. 矩形:实体
    2. 圆形:属性
    3. 菱形:关系
    三、基础操作
    -- 1. select 查询
    select 字段一,字段二,字段三 from 表名;
    
    ---------------------------------------------------------------------------------------------
    
    -- 2. insert 添加
    -- 给指定字段添加值
    insert into 表名 (字段一,字段二,字段三) values (值一,值二,值三);
    
    -- 按顺序添加所有字段值
    insert into 表名 values (值一,值二,值三);
    
    -- 将一个表中的数据赋值到新表中  【后面有个判断如果为false则只复制结构】
    create table 新表名 as select 字段 from 旧表 [where 1 = 2];
    
    -- 将一个表中的数据添加到令一个表中
    insert into 表1(字段) select 字段 from 表2;
    
    ---------------------------------------------------------------------------------------------
    
    -- 3. update 修改  【可以添加修改条件】
    update 表名 set 字段名 = 字段值 [where 字段 = 值];
    
    ---------------------------------------------------------------------------------------------
    
    -- 4. delete 删除 【可以添加删除条件】 可回滚 每次执行都会生成日志文件
    delete from 表名 [where 字段 = 值];
    
    
    -- 序列
    create sequence 序列名;
    -- 产生一个序列值
    nextval
    -- 删除序列
    drop sequence 序列名;
    
    四、Oracle运算符
    1. distinct	去重 
    2. where 	条件查询 
    3. +-*/		算数运算符
    4. = , !=(<>) , > , < , <= , >= , any , all , some 后三个运算符必须和前面这些在一起使用,不可单独使用
    5. and , or , not	逻辑运算符
    6. ||		sql中的拼接符
    7. in 		在...中
    8. between and	在...和...之间
    9. is null	为空
    10.like		模糊查询
    11._ % 		模糊查询通配符
    12.order by [acs|desc]	排序
    13.group by [having]	分组【查询】	
    
    五、高级查询
    多表查询
    1. 内连接
    select 列名列表 from 表一 inner join 表二 on 连接条件;
    // 特殊方法连接
    select 列名列表 from 表一 inner join 表二 using (连接字段);
    // 笛卡尔积连接方式
    select 列名列表 from 表一,表二;
    
    1. 外连接
    // 左外连接 (左表为主表)
    select 列名列表 from 表一 left join 表二 on 连接条件;
    // 右外连接 (右表为主表)
    select 列名列表 from 表一 right join 表二 on 连接条件;
    // 完全外连接 (两个表都做主表)
    select 列名列表 from 表一 full join 表二 on 连接条件;
    // 特殊方法 (加号在的那个为附表)
    select 列名列表 from 表一 right join 表二 on 连接条件(+);
    
    分组
    // 列名列表只能写分组条件和符合函数
    select 列名列表 from 表名 group by 分组条件 [having 分组后筛选];
    
    排序
    // 默认升序asc,倒序为desc
    select 列名列表 from 表名 order by 排序条件 [asc或desc];
    
    分页
    // 根据行号显示
    select 列名列表 from (select 列名列表 , rownum num from 表名) where num<=数字;  
    
    特殊关键词
    1. identified by 由...确定
    2. cascade 级联删除
    3. create session 创建连接
    4. resource 资源角色
    5. connect 连接角色
    6. primary key 主键(非空 唯一)
    7. constraint 约束
    8. 内连接中inner可以省略
    9. 外连接中outer可以省略
    
  • 相关阅读:
    201771030120-王嫄 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告
    201771030120-王嫄 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告
    201771030120-王嫄 实验一 软件工程准备 <课程学习目的思考>
    ETH充提币API接口中文文档
    开放API接口 USDT快捷接入充提教程
    比特币BTC支付API接口中文文档
    ERC20充提币API接口文档
    如何调用比特币钱包RPC API实现充值、转账、支付?
    .NET对接交易所钱包教程
    Java 对接交易所钱包解决方案
  • 原文地址:https://www.cnblogs.com/forelim/p/14810183.html
Copyright © 2011-2022 走看看