zoukankan      html  css  js  c++  java
  • 数据库之ORACLE常见基础操作

    一》分组查询与分组筛选

    分组查询关键字:group by 分组字段名1,分组字段名2,..

    1.使用分组后,在select语句中只允许出现分组字段和多行函数。

    2.多字段分组,则按by后次序依次分组。

    3.在where子句中不允许出现多行函数。

    分组筛选关键字:having

    1.针对分组进行分组后的数据筛选,允许使用多行函数。

    2.having关键字必须和分组结合使用,不允许单独使用。

    where与having

    1.分组语句中使用where进行字段级别的筛选,使用having进行多行函数的筛选。

    2.where字句不允许出现多行函数,having允许出现多行函数。

    3.where和having都可以使用普通字段进行直接筛选,但where效率高于having。

    where执行顺序:from->where->group by->select->order by

    having执行顺序:from->group by->select->having->order by

    二》 增删查改及数据备份

    注:增删改操作后,不会立即进行数据写入,还需手动对数据进行提交,若数据有问题可回滚。主键非空唯一,用于唯一标识一条数据。

    • 增:insert int 表名(字段名,字段名,...)values(值1,值2,...);

      注:值和字段数量和顺序必须一一对应,如果全字段插入,可省略字段名部分。

    • 删:delete from 表名 ---删除表中所有记录

    ​ delete from 表名 where 条件 ---删除符合条件的指定数据

    ​ truncate table 表名 ---删除表中所有记录,效率高于delete

    • 改:update 表名 set 字段名=新值,字段名=新值...

      ​ update 表名 set 字段名=新值,字段名=新值... where 条件

    • 备份:只会备份表结构和表数据,不会备份约束

      --表全部备份:create table 新表名 as select * from 备份表名

      --表部分备份:create table 新表名 as select 字段名1,字段名2,...from 备份表名

      --数据整体插入:insert into 插入表名 select * from 表名

      注:插入字段数量,类型都要和查询结果字段一致

    三》二维表维护

    • 添加新字段:alter table 表名 add 字段名 类型
    • 修改表名:rename 原表名 to 新表名
    • 修改字段类型:alter table 表名 modify 字段名 新类型
    • 修改字段名:alter table 表名 rename column 字段名 to 新字段名
    • 删除字段:alter table 表名 drop column 字段名
    • 删除表:drop table 表名

    四》约束

    • 主键:primary key
    • 非空约束:not null
    • 检查约束:check(条件)
    • 唯一约束:unique

    使用:

    • 直接在创建表的字段后使用 约束关键字

    • 在创建表的语句最后使用

      例:constraints pk_表名_字段名 primary key(字段名);

      ​ constraints ck_表名_字段名 check(字段名 is not null);

      ​ constraints un_表名_字段名 unique(字段名);

    • 在创建表后使用 alter table 表名 add constraints pk_表名_字段名 primary key(字段名);

    • 删除约束 alter table 表名 drop constraints 约束名;

    外键:当一张表的某个字段的值需要依赖另外一张表的某个字段的值,则使用外键约束,主动依赖的表称为子表,被依赖的表称为父表。在子表插入的数据在父表不存在,则会自动报错。

    使用:

    • 在子表字段后直接使用 references 父表名(字段)
    • 在创建表的语句的最后使用 constraints fk_子表名_字段名 foreign key(字段名) references 父表名(字段名)
    • 在创建表后使用 alter table 表名 add constraints fk_子表名_字段名 foreign key references 父表名(字段名)
    • 删除外键 alter table 表名 drop constraints 外键约束名

    缺点:无法直接删除父表数据,除非级联删除

    级联删除:在添加外键约束时,使用关键字 on delete cascade

    ​ 使用:当删除父表数据时,自动删除子表相关所有数据

    ​ 缺点: 无法保留子表历史数据

    ​ 使用关键字on delete set null,删除父表数据时,将子表中依赖 字段设置为null(子表依赖字段不能添加非空约束)

    五》序列

    create sequence 序列名

    • 默认开始是没有值的,也就是指针指在了没有值的位置
    • 序列名.nextval每次执行都会自增一次,默认步长为1(increment by 可改变步长)
    • 序列名.currval查看当前序列的值,开始是没有的
    • 作为主键使用时,动态获取之间值,新增数据时极大的避免了主键冲突(序列名.nextval作为主键)

    六》视图

    创建视图:create view 视图名 as select 对外提供的内容 from 真实表名

    删除视图:drop view 视图名

    特点:

    • 保护真实表,隐藏重要字段数据,保护数据
    • 在视图中的操作会映射执行到真实表中
    • 可以手动开启只读模式,使用关键字 with read only
    你是我出现在这唯一的原因,无所谓因果,也无关风月.
  • 相关阅读:
    mac上python3安装HTMLTestRunner
    双目深度估计传统算法流程及OpenCV的编译注意事项
    深度学习梯度反向传播出现Nan值的原因归类
    1394. Find Lucky Integer in an Array
    1399. Count Largest Group
    1200. Minimum Absolute Difference
    999. Available Captures for Rook
    509. Fibonacci Number
    1160. Find Words That Can Be Formed by Characters
    1122. Relative Sort Array
  • 原文地址:https://www.cnblogs.com/xcstruggle/p/13629475.html
Copyright © 2011-2022 走看看