SQL基础(3)-索引/触发器/视图操作
本文只列出索引,触发器,视图的简单操作语句
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)-索引/触发器/视图操作相关推荐
- mysql join on 索引_连接查询,表关联查询join on,索引,触发器,视图
一.连接查询 1.统计每一个部门的人数 "部门名,部门的人数" select department,count(eid) from employee group by depar ...
- SQL 基础之索引、闪回、临时表(十八)
创建索引: 自动 – 创建 PRIMARY KEY – 创建 UNIQUE KEY 手动 – CREATE INDEX 语句 – CREATE TABLE 语句 create table 语句中 c ...
- SQL笔记(1)索引/触发器
--创建聚集索引 create clustered index ix_tbl_test_DocDate on tbl_test(DocDate) with fillfactor=30 GO--创建非聚 ...
- SQL 基础之用户角色日常操作(十六)
在数据库管理中一定本着一个原则就是权限最小化的原则,如果有需要在赋予相应的权限 数据库管理员日常对于用户的管理任务如下: – 创建新用户 – 删除用户 – 删除表 – 备份表 1.创建用户yuri,并 ...
- 【数据库基础】数据库的视图操作
一.实验目的 1. 定义"MIS"专业学生基本情况视图V_MIS,并根据视图查询结果. 2.将student.salebill.goods表中学生学号.姓名.商品名.商品售价,销售 ...
- SketchUp:SketchUp草图大师软件使用技巧总结(视图操作,绘图环境优化,缩放/镜像/对齐/桌边倒圆角案例)
SketchUp:SketchUp草图大师软件使用技巧总结(视图操作,绘图环境优化,缩放/镜像/对齐/桌边倒圆角案例) 目录 经验总结 经典案例操作步骤说明 1.基础案例 2.视图操作
- SQL Server基础操作(此随笔仅作为本人学习进度记录四 !--索引和视图)
约束.索引.视图.约束:(要求字段不能为空,必须填写内容,就是非空约束)not null(非空约束).unique(唯一性约束).primary key(主键约束).foreign(外键约束).che ...
- oracle图书操作、sql语句查询+授权、视图、索引、表操作
oracle图书操作.sql语句查询+授权.视图.索引.表操作 一.创建一张表book,表结构为(总编号,分类号,书名,作者,出版单位,单价),插入若干记录 二.创建一张表reader,表结构为(借书 ...
- sql数据库三个重点复习的基础语句(游标,索引,视图)
(l)SQL基础语句 1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname 4.创建新表 create table ta ...
最新文章
- 【Java】 链表的回文结构
- 因为在企业软件中采用了React,我差点被公司开除
- gin中间件中使用Goroutines
- 微信好友数据打包下载--微信数据分析(二)
- 新手入门深度学习 | 2-4:时间序列数据建模流程示例
- Spring Cloud Eureka 自我保护机制
- Java多线程设计模式(1)
- 【转】15个最受欢迎的Python开源框架
- C++|Qt中QTreeWidget基本操作及完整代码下载
- java后台传一个对象到前台_前台判断对象中的一个布尔值_前后台分离的项目中,如何优雅的传输boolean类型的参数...
- linux压缩文件命令_Linux基础篇(二)--Linux常用命令
- redis数据库无法写入导致的bug
- 查看文章strncpy()功能更好的文章
- Weblogic 视频教程免费下载
- java俄罗斯方块代码_俄罗斯方块java源代码提供
- LitJson使用中的坑
- 江苏农村商业银行计算机类笔试考什么时候,2020江苏农商行笔试考试内容是什么?...
- FATAL: Failed to start gitlab-runner: “systemctl“ failed: exit status 5, Failed to start gitlab-runn
- 项目一:家庭记账软件
- h5 适配 iphoneX 的全面屏 (上有刘海 ,下有呼吸灯) ,在iphonX 上 fixed定位的问题
热门文章
- 主机_云服务器vps价格比对[博]
- 微软顶级代码女神,编程界最有权势的女王
- 企业如何搭建数据分析平台
- 利用Numpy提取+处理数据
- python列表数据类型(一分钟读懂)
- pythonturtle库画图_python 用turtle库画图
- java里的foreach迭代器_java 中 for 、foreach 和 迭代器 的学习笔记
- python安装mysqldb模块,如何使用pip安装Python MySQLdb模块?
- ##CSP认证 201909-2小明种苹果(续)(100分)
- http和websocket共用同一端口