Test 21

99 语法:

  1. select 数据(*|字段,字段|伪列) from 数据源(表|结果集|视图) where 行过滤条件 group by 分组字段 having 组过滤条件 order by 排序字段;
  2. select 数据(*|字段,字段|伪列) from 数据源1,数据源2.. where 行过滤条件 and 表连接条件 group by 分组字段 having 组过滤条件 order by 排序字段;
  3. 等值连接:
    1. 自然连接 natural join   自动根据同名字段,主外键关联关系 字段做等值连接
    2. 注意: 在自然连接中同名字段不能指明出处
  4. 非等值连接:
    1. 数据源1 join 数据源2 on 表连接条件 可以做等值,可以做非等值
  5. 内连接 : 满足连接条件才能显示 (inner) join
  6. 外连接 : 有的表中的数据不满足连接条件也显示
    1. 主表: 不满足连接条件也显示
    2. 左连接 : left join
    3. 右连接 : right join
    4. 全连接 : full join 两张表都作为主表
  • rowid 与 rownum:(都做伪列存在)
    1. rowid : 行记录的地址,行的唯一标识,数据插入到表中的是决定
      1. 可以实现去重: 对没有主键|唯一字段的表中多条完全重复的数据,根据rowid实现去重
      2. 去重: 如果表中存在主键或者唯一字段,直接 根据主键或者唯一字段去重
      3. rownum 结果集的序号,规律: 从1开始,每次+1,一个select查询语句就有一个结果集,每一个结果集中数据都有自己的序号-->rownum
      4. 注意: 当需要使用rownum进行一些判定,需要对一个已经确定的结果集的rownum进行判定
    2. rownum与排序:
      1. 一般规律为: 根据非主键字段排序,先确定rownum再排序,根据主键字段排序,先排序,后确定rownum
  • 视图与索引
    1. 视图 : 表与结果集之间
    2. 逻辑视图: 不会存储数据,数据来资源原始表结构,起到封装,简化,提高复用性的作用
    3. 物理视图: 真实存储数据
    4. 作用: sql语句的封装与简化,提高复用性,安全性
    5. create or replace view 视图名 as select语句 [with read only];
    6. 修改视图中的数据其实是修改原有表机构中的数据,视图不存储数据
    7. 删除视图:drop view vw_haha;
  • 索引
    1. 帮助提高查询效率,索引为表中的字段添加索引,大量数据的前提下,通过索引对某个字段的数据做查询,效率会大大提高,索引也是对象,需要通过是数据库维护,索引类似与目录

如果大量做根据字段做查询,少量做增删适合使用索引,如果大量根据字段做增删,少量查询,每次增删数据需要根据维护索引,会降低效率,oracle自动为主键添加索引。

    1. 为emp表的sal字段添加索引:
      1. create index 索引名 on表名 (字段列表...)
      2. drop  index 索引名
      3. 注意: 唯一性较好字段适合建立索引
  • 表设计
    1. 三范式:  
      1. 列不可再分,字段的原子性   
      2. 定义主键(唯一+非空),确定唯一  
      3. 拆分表,通过主外键约束定义两张表的关系 ,消除传递依赖,避免数据的过渡冗余
    2. 创建表
      1. 表名
      2. 确定表中的字段
      3. 字段: 字段名  数据类型  字段的约束(要求)
      4. 数据
    3. create 表名(

      字段名 字段类型,

     字段名 字段类型, 

    .....

     字段名 字段类型

)

    1. 表与表之间的关系
      1. 一对一 : 用户  身份证   -->主外键
      2. 一对多|多对一 : 学生 与 班级  -->主外键
      3. 多对多 : 订单与商品   学生与课程  --> 中间表
  • DML 数据管理语言
    1. 数据的增insert 删delete 改update
    2. 数据的查询 DQL
    3. 在对表中数据做增删改自动开启事务,需要提交或者回滚
    4. 序列工具
      1. 帮助管理类似主键字段的值
      2. 序列与表与字段不绑定
      3. 序列第一次需要获取nextval
      4. 创建 create sequence 序列名  start with  起始值  increment by 步进;
    5. 修改 update 表名 set 字段=值 [,....] where  过滤行记录;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值