数据库之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
你是我出现在这唯一的原因,无所谓因果,也无关风月.
原文地址:https://www.cnblogs.com/xcstruggle/p/13629475.html