• Oracle初识


    Oracle 笔记

    第一节

    名词解释

    1. 数据 (data)
    2. 数据库 (db)
    3. 数据库管理系统 (Dbms)
    4. 数据库系统 (Dbs)

    DBS > DBMS 范围大小

    关系数据模型

    三要素

    1. 数据结构
    2. 关系操作
    3. 关系约束完整性

    解释

    数据结构

    • 在数据库中以表的方式的存在
    • 关系:一个由 组成的二维表,每一个单元格不可分隔
    • 字段: 表中的每一列为一个字段(属性)
    • 记录:每一行表示一个记录(元组)

    关系操作

    • 查询操作:选择 投影 连接
    • 更新操作:插入、删除、修改

    关系约束完整性

    如果一个表的主键,不能确定一条记录,那么就设定两个主键,来确定一行

    • 实体完整性:主键非空
    • 参照完整性:外键必须取主键当中存在的值

    任何的关系型数据库,必须满足这两条

    关系与关系模型

    关系模式用来描述关系

    数据库的设计

    基本要素

    1. 需求分析
    2. 概念结构设计
      • 绘制 ER - 图
    3. 逻辑结构设计
      • ER - 图 转换成关系模型
    4. 物理结构设计
    5. 数据库实施
      • 写 SQL 或 编程 代码
    6. 数据库运行和维护

    实体-关系模型

    E-R数据模型

    1. 实体 (Entity)
    2. 属性 (Attfribute)
    3. 联系(Relationship)
      • 1 : 1 一对一
      • 1 : n 一对多
      • m : n 多对多

    E - R 图的绘制

    实体 - 关系图是表现实体 - 关系模型的图形工具,简称E-R图

    无标题

    将E-R模型转换为关系模型

    实体转换为表

    将E-R图中的每个实体转换成一张表,实体的属性即为表中的各个列

    实体之间联系的处理
    1. 1:1

      把任意一端的主键加到另外一端作为主键

    2. 1:n

      把一端的主键加到多端作为外键

    3. m:n

      把两端的主键取出来作为新表的主键,联系的属性也加到新表中

    第二节

    Oracle 数据库的应用系统结构

    分布式系统结构、客户机-服务器结构(C/S)、浏览器-服务武器结构(B/S)

    Oracle 的默认用户

    1. sys 超级用户
    2. system 普通用户
    3. sysman
    4. dbsnmp
    5. mgmt_view

    Oracle 的体系结构

    物理存储结构

    从物理文件角度分析Oracle数据库

    文件组成

    1. 数据文件 .DBF
      • 存放数据
    2. 日志文件 .LOG
      • 记录并存储 => 数据库的更改信息
      • 表结构修改、数据修改、均会记录到日志文件中
    3. 控制文件 .CTL
      • 二进制文件
      • 记录了,日志文件、数据文件的位置
    4. 参数文件
      • 记录了,控制文件的位置、所在路径、进程信息等

    逻辑存储结构

    逻辑存储单元

    概念:高一级的存储单元,由其低一级的存储单元构成的

    划分

    1. 数据块
    2. 盘区
    3. 表空间

    按存储单元从小到大排序为

    数据块 < 盘区 < 段 < 表空间

    数据块

    数据块 是最小的逻辑存储单元

    盘区

    盘区 是磁盘空间分配的最小单元

    盘区 构成,存在于表空间

    分类
    1. 数据段
    2. 索引段
    3. 临时段
    4. LOB段
    5. 回退段
    表空间

    逻辑与物理的统一

    分类
    1. SYSTEM表空间:存放系统信息
    2. UNDO表空间:存放撤销信息
    3. USERS表空间:建议用户使用的表空间
    4. TEMPORARY表空间:临时使用的表空间

    第三节

    用户 模式

    模式

    定义: 一系列逻辑数据结构或对象的集合

    一个模式属于一个用户(模式名与用户名相同)

    用户

    创建用户

    create user 用户名 Indentified by 密码
    

    表是模式的对象,最基本的数据结构

    数据类型

    1. char(n) : 固定长度的字符串,创建表的时候需要指定宽度,不够会自动补齐空格
    2. varchar2(n):可变长的字符型
    3. number(p,s):存储整数、浮点数;p是宽度、s是小数点后位数
    4. date:日期时间类型;
      • 默认的日期格式:DD-MON-YY,
      • 月是英文单词的前三个字母
      • 月或者是 123……12 + 月 的格式
    5. 大型对象数据类型 BLOB二进制 CLOB……

    创建表

    语法格式

    create table [模式名.] 表名
    (
        列名1 数据类型 [列约束],
        列名2 数据类型 [列约束],
        …………
        列名n 数据类型 [列约束],
    ) 
    [pctfree integer(数字)]
    [pctused integer(数字)]
    [initrans integer(数字)]
    [maxtrans integer(数字)]
    [tablespace integer(数字)]
    [storage storage_clause] -- 设置存储选项
    

    主键约束

    如果主键定义在一列上,直接在列的后面写``primary key`

    如果主键定义在多列上,在所有列定义完成之后,加 primary key(列1,列2,……,列n)

    外键约束

    在当前表中不是主键,而是另外一个表的主键

    foreign key (列名) references 参照表的表名 [(参照表的主键)]
    

    外键定义在列的里面省略 foreign key

    唯一性约束

    主键以外的其他列如果要求不重复,则使用唯一性约束

    区别于主键:可以为空 可以有多个

    -- 在列的后面直接写
    unique
    -- 在下里面写的
    unique(列名)
    

    默认约束

    为列设定默认值,当向表中添加数据时,如果不给值,则取默认值

    default '值' / default 数值
    

    检查约束

    为列设定条件,如果不满足条件,则拒绝输入 !

    check(条件) -- 在列后面加入
    

    修改表

    基本语法

    alter table [模式名.] 表名 add 列名 数据类型 -- 增加一列
    alter table [模式名.] 表名 add 列 约束(主键等) -- 加个约束
    alter table [模式名.] 表名 modify 列名 要修改的项 -- 修改列
    alter table [模式名.] 表名 drop column 列名 -- 删除一列
    

    每次仅可执行一个

    删除表

    drop table 表名
    

    第四节

    修改SQL数据与SQL*Plus命令

    添加数据

    insert into `表` (列名1……) values (值1……) | select query 
    -- select query 可以将查询结果,插入到对应的表中
    

    情况

    1. 列名全部指定:可以改变列名的顺序
    2. 省略一部分列名:省略的列或者允许为空、或者有默认值
    3. 不指定列名:按表的定义的顺序给值
    4. 返回多行(子查询):列的类型、数量要相匹配

    更新数据

    update `表名` set `列名1……` = 值1……,`列名2……` = 值2……,…… [| select query] where 条件
    -- select query 可以查询赋值
    

    情况

    1. 省略where:指定列的值全改
    2. 使用表达式指定新值
    3. 同时改多列
    4. 子查询只能

    删除数据

    使用delete

    delete from `表名` where 条件
    

    使用 truncate

    删除一个表的所有数据,表结构不变。功能 <=> 没有条件的 delete

    • 无法撤销,不在日志中记录,所以较快
    truncate `表名`;
    

    第五节 查询

    简化的查询表达式

    select 选择列表
    from 表名
    [where 条件]
    [group by 分组表达式]
    [having 分组条件]
    [order by 排序字段 [asc] [desc]] -- 省略默认升序 desc 降序
    

    select 子句

    查询所有的列

    select * from `table`
    

    查询多列

    select conlum1, conlum2, conlum3 …… from `table`
    

    列的重命名

    select conlum1 as alias1, conlum1 as alias1 …… from `table`
    

    查询去重

    select distinct conlum1, distinct conlum2 …… from `table`
    

    where 子句

    比较运算符

    =、!=、<>、>、>=、<、<=
    

    范围运算符

    between and -- ……与……直间
    

    逻辑运算符

    and or not
    not > and > or -- 优先级排序
    

    列表运算符

    in -- 查找属于指定集合的记录 -> x in (1,2,3,4,5,6,7)
    -- 等价于多个or逻辑查询
    

    模式匹配运算符

    select 
    
    1. 下划线:任意一个字符
    2. 百分号:任意一个字符串

    判断某一列空

    select * from `table` where `id` is null [is not null]
    

    第五节课

    使用统计函数查询

    主要的统计函数

    求和: SUM(ALL | DISTINCT 列名)

    平均: AVG(ALL | DISTINCT 列名)

    最大: MAX(ALL | DISTINCT 列名)

    最小: MIN(ALL | DISTINCT 列名)

    计数: COUNT(ALL | DISTINCT 列名)

    count(*)

    分组查询

    使用 GROUP BY 子句时,表单式之后,结果值相等的为一组

    select 的列名 要与 group by 后的列名相同 (除统计函数外)

  • 相关阅读:
    c语言中的rewind函数,Win CE 不支持,可用fseek函数替换
    接口隔离原则(转)
    接口设计的 11 种原则 (转)
    设计模式六大原则/接口设计六大原则 之 组合/聚集复用原则(转)
    C++ 求幂的运算符是什么?
    设计模式六大原则/接口设计六大原则 之 迪米特法则(转)
    解决mysql出现“the table is full”的问题
    tomcat远程调试设置
    这些习惯很伤肾 要警觉
    从ie临时文件夹一次复制多个文件
  • 原文地址:https://www.cnblogs.com/JQ04/p/14987892.html
Copyright © 2020-2023  润新知