本文只列出索引,触发器,视图的简单操作语句

1.索引

  a.创建

  create index idx_name on fdh_client_info(name);  --普通索引(单列索引)

  create unique index uni_idx_id on fdh_client(id);   --唯一索引

  create index union_idx_name_addr on fdh_client(name, address);  --联合索引

  b.查询索引

  select * from user_indexes;

  select * from all_indexes;

  c.重建索引

  alter index idx_name rebuild online;  --重建索引时不锁表

  alter index idx_name rebuild tablespace tablespace_name;  --重建时指定索引存储的表空间

  d.释放索引中无用空间

  alter index idx_name deallocate unused;

  e.整理索引碎片

  alter index idx_name coalesce;

  f.删除索引

  drop index idx_name;

  

2. oracle触发器

  以下语句学习自慕课网(http://www.imooc.com/learn/414)

 a.创建语句级触发器(没有 for each row)

  执行安全检查:禁止在非工作时间插入员工信息

create or replace trigger security_emp
before insert on emp
beginif to_char(sysdate, 'day') in ('星期六', '星期日') or to_number(to_char(sysdate, 'hh24')) not between 9 and 17 then --9点到18点raise_application_error(-20001, '非工作时间禁止插入新员工');end if;
end;

 b.创建行级触发器

  数据检查:涨后的工资不能比涨前少(伪记录变量:old和:new分别表示更新前后的那一条记录) 

create or replace trigger check_salary
before update
on emp
for each row    --行级触发器
beginif :new.sal < :old.sal thenraise_application_error(-20002, '涨后的工资不能比涨前少. ' || '涨后的工资:' || :new.sal || '  涨前的工资:' || :old.sal);end if;
end;

c.数据库审计(员工涨后薪水大于6000,审计员工信息)

-- 创建薪水审计表
create table audit_emp_sal(empno number(4, 0),ename varchar2(10),newsal number(7,2),incdate date
)
--创建员工测试表
create table emp_2 as select * from emp;--数据库审计:涨后薪水大于6000,其员工信息插入审计表
create or replace trigger do_audit_emp_sal
after update
on emp_2
for each row
beginif :new.sal > 6000 theninsert into audit_emp_sal values (:new.empno, :new.ename, :new.sal, sysdate);end if;
end;

d.数据库备份和同步

--创建备份表
create table emp_back as select * from emp;
--数据库的备份和同步(利用触发器进行同步备份)
create or replace trigger sync_emp_sal
after update
on emp
for each row
beginupdate emp_back b set b.sal = :new.sal where b.empno = :new.empno;
end;

3.视图

  视图本身不包含数据,存储的是一条select语句的查询结果;视图是基于若干表或视图的逻辑表,这里的表称作基表,通过视图可以查询或修改基表的数据。

  视图分为简单视图和复杂视图;简单视图从单表获取数据,不包含函数和数据组,可以执行DML操作,复杂视图相反。

  a.语法

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY] 

  注:FORCE:不管基表是否存在ORACLE都会自动创建该视图; 
    NOFORCE:只有基表都存在ORACLE才会创建该视图: 
    alias:为视图产生的列定义的别名; 
    subquery:一条完整的SELECT语句,可以在该语句中定义别名; 
    WITH CHECK OPTION : 插入或修改的数据行必须满足视图定义的约束; 
    WITH READ ONLY : 该视图上不能进行任何DML操作

  b.示例

create or replace view dept_statistics
(name,minsal,maxsal,avgsal)
as select d.dname,min(e.sal),max(e.sal),avg(e.sal)
from emp e,dept d
where e.deptno=d.deptno
group by d.dname;

转载于:https://www.cnblogs.com/techroad4ca/p/4979305.html

SQL基础(3)-索引/触发器/视图操作相关推荐

  1. mysql join on 索引_连接查询,表关联查询join on,索引,触发器,视图

    一.连接查询 1.统计每一个部门的人数  "部门名,部门的人数" select department,count(eid) from employee group by depar ...

  2. SQL 基础之索引、闪回、临时表(十八)

    创建索引: 自动 – 创建 PRIMARY KEY – 创建 UNIQUE KEY 手动 – CREATE INDEX 语句 – CREATE TABLE 语句 create table  语句中 c ...

  3. SQL笔记(1)索引/触发器

    --创建聚集索引 create clustered index ix_tbl_test_DocDate on tbl_test(DocDate) with fillfactor=30 GO--创建非聚 ...

  4. SQL 基础之用户角色日常操作(十六)

    在数据库管理中一定本着一个原则就是权限最小化的原则,如果有需要在赋予相应的权限 数据库管理员日常对于用户的管理任务如下: – 创建新用户 – 删除用户 – 删除表 – 备份表 1.创建用户yuri,并 ...

  5. 【数据库基础】数据库的视图操作

    一.实验目的 1. 定义"MIS"专业学生基本情况视图V_MIS,并根据视图查询结果. 2.将student.salebill.goods表中学生学号.姓名.商品名.商品售价,销售 ...

  6. SketchUp:SketchUp草图大师软件使用技巧总结(视图操作,绘图环境优化,缩放/镜像/对齐/桌边倒圆角案例)

    SketchUp:SketchUp草图大师软件使用技巧总结(视图操作,绘图环境优化,缩放/镜像/对齐/桌边倒圆角案例) 目录 经验总结 经典案例操作步骤说明 1.基础案例 2.视图操作

  7. SQL Server基础操作(此随笔仅作为本人学习进度记录四 !--索引和视图)

    约束.索引.视图.约束:(要求字段不能为空,必须填写内容,就是非空约束)not null(非空约束).unique(唯一性约束).primary key(主键约束).foreign(外键约束).che ...

  8. oracle图书操作、sql语句查询+授权、视图、索引、表操作

    oracle图书操作.sql语句查询+授权.视图.索引.表操作 一.创建一张表book,表结构为(总编号,分类号,书名,作者,出版单位,单价),插入若干记录 二.创建一张表reader,表结构为(借书 ...

  9. sql数据库三个重点复习的基础语句(游标,索引,视图)

    (l)SQL基础语句 1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname 4.创建新表 create table ta ...

最新文章

  1. 【Java】 链表的回文结构
  2. 因为在企业软件中采用了React,我差点被公司开除
  3. gin中间件中使用Goroutines
  4. 微信好友数据打包下载--微信数据分析(二)
  5. 新手入门深度学习 | 2-4:时间序列数据建模流程示例
  6. Spring Cloud Eureka 自我保护机制
  7. Java多线程设计模式(1)
  8. 【转】15个最受欢迎的Python开源框架
  9. C++|Qt中QTreeWidget基本操作及完整代码下载
  10. java后台传一个对象到前台_前台判断对象中的一个布尔值_前后台分离的项目中,如何优雅的传输boolean类型的参数...
  11. linux压缩文件命令_Linux基础篇(二)--Linux常用命令
  12. redis数据库无法写入导致的bug
  13. 查看文章strncpy()功能更好的文章
  14. Weblogic 视频教程免费下载
  15. java俄罗斯方块代码_俄罗斯方块java源代码提供
  16. LitJson使用中的坑
  17. 江苏农村商业银行计算机类笔试考什么时候,2020江苏农商行笔试考试内容是什么?...
  18. FATAL: Failed to start gitlab-runner: “systemctl“ failed: exit status 5, Failed to start gitlab-runn
  19. 项目一:家庭记账软件
  20. h5 适配 iphoneX 的全面屏 (上有刘海 ,下有呼吸灯) ,在iphonX 上 fixed定位的问题

热门文章

  1. 主机_云服务器vps价格比对[博]
  2. 微软顶级代码女神,编程界最有权势的女王
  3. 企业如何搭建数据分析平台
  4. 利用Numpy提取+处理数据
  5. python列表数据类型(一分钟读懂)
  6. pythonturtle库画图_python 用turtle库画图
  7. java里的foreach迭代器_java 中 for 、foreach 和 迭代器 的学习笔记
  8. python安装mysqldb模块,如何使用pip安装Python MySQLdb模块?
  9. ##CSP认证 201909-2小明种苹果(续)(100分)
  10. http和websocket共用同一端口