Unit05: 视图、序列、索引 、 约束    

视图
数据库对象之一
视图在SQL语句中体现的角色与表相同,
但它并非一张真实存在的表,它对应的
是一个查询语句的结果集。
创建一个查看10号部门员工信息的视图:
CREATE VIEW v_emp_dept10
AS
SELECT ename,sal,job,deptno
FROM emp
WHERE deptno=10 DESC v_emp_dept10 SELECT *
FROM v_emp_dept10 修改视图就是替换该视图对应的子查询。
使用CREATE
OR REPLACE即可。
若视图不存在就创建,存在则替换。
视图对应的子查询的字段若有别名,则该视图
对应的字段名就是这个别名。若子查询的字段
含有函数或表达式,那么该字段必须给别名。
CREATE OR REPLACE VIEW v_emp_dept10
AS
SELECT empno id,ename name,
sal salary,job,deptno
FROM emp
WHERE deptno=10 对视图进行DML操作就是对视图数据
来源的基础表的操作。
INSERT INTO v_emp_dept10
(id,name,salary,job,deptno)
VALUES
(1001,'JACK',3000,'CLERK',10) SELECT * FROM v_emp_dept10
SELECT * FROM emp 插入数据时,视图看不到的字段都插入
基础表对应字段的默认值,所以不能违反
基础表相应字段的约束条件,尤其是看不到
的字段的非空约束,否则可能导致插入失败。 UPDATE v_emp_dept10
SET name='JACKSON'
WHERE id=1001 SELECT * FROM v_emp_dept10
SELECT * FROM emp DELETE FROM v_emp_dept10
WHERE id=1001 对视图进行DML操作可能导致对基表
数据"污染"
即:对视图进行DML操作的数据视图对其
不可见,却修改了基表该数据。 INSERT INTO v_emp_dept10
(id,name,salary,job,deptno)
VALUES
(1001,'JACK',3000,'CLERK',20) SELECT * FROM v_emp_dept10
SELECT * FROM emp UPDATE v_emp_dept10
SET deptno=20 为视图添加检查选项可以避免对视图
进行DML操作时污染基表。
CREATE OR REPLACE VIEW v_emp_dept10
AS
SELECT empno id,ename name,
sal salary,job,deptno
FROM emp
WHERE deptno=10
WITH CHECK OPTION 为视图添加只读选项后,则不能对视图
进行DML操作。
CREATE OR REPLACE VIEW v_emp_dept10
AS
SELECT empno id,ename name,
sal salary,job,deptno
FROM emp
WHERE deptno=10
WITH READ ONLY SELECT table_name FROM user_tables 视图根据对应的子查询不同,分为简单视图和
复杂视图。当子查询中含有函数,表达式,分组
去重,关联查询时,该视图就是一个复杂视图。
复杂视图不能进行DML操作。
创建一个包含每个部门薪资情况的视图
CREATE VIEW v_emp_sal
AS
SELECT AVG(e.sal) avg_sal,
SUM(e.sal) sum_sal,
MIN(e.sal) min_sal,
MAX(e.sal) max_sal,
d.deptno,d.dname
FROM emp e,dept d
WHERE e.deptno=d.deptno
GROUP BY d.deptno,d.dname SELECT * FROM v_emp_sal 查看哪个员工的工资高于其部门平均工资?
SELECT e.ename,e.sal,e.deptno
FROM emp e,v_emp_sal v
WHERE e.deptno=v.deptno
AND e.sal>v.avg_sal 删除视图
DROP VIEW v_emp_dept10 删除视图中的数据会将基表中对应数据删除,
但是删除视图本身不会对基表数据产生影响。 序列
序列也是数据库对象之一
作用是生成一系列数字。通常使用它为某表的
主键字段提供值使用。
CREATE SEQUENCE seq_emp_id
START WITH 1
INCREMENT BY 1 序列支持两个伪列:
NEXTVAL:获取序列下一个数字
CURRVAL:获取序列当前数字 NEXTVAL会导致序列发生步进
,且序列是不能
回退的。CURRVAL是获取序列最后一次生成的
数字,新创建的序列至少在调用以此NEXTVAL
后才可以使用CURRVAL。 SELECT seq_emp_id.CURRVAL
FROM dual SELECT * FROM emp INSERT INTO emp
(empno,ename,sal,job,deptno)
VALUES
(seq_emp_id.NEXTVAL,'JACK',3000,
'CLERK',10) UUID的生成方式:
SELECT SYS_GUID() FROM dual 删除序列
DROP SEQUENCE seq_emp_id CREATE TABLE employees1 (
eid NUMBER(6) UNIQUE,
name VARCHAR2(30),
email VARCHAR2(50),
salary NUMBER(7, 2),
hiredate DATE,
CONSTRAINT employees1_email_uk UNIQUE(email)
); INSERT INTO employees1
(eid,name,email)
VALUES
(NULL,'JACK',NULL) SELECT * FROM employees1 CREATE TABLE employees2 (
eid NUMBER(6) PRIMARY KEY,
name VARCHAR2(30),
email VARCHAR2(50),
salary NUMBER(7, 2),
hiredate DATE
);
INSERT INTO employees2
(eid,name)
VALUES
(1,'JACK')

JAVA-Unit05: 视图、序列、索引 、 约束的更多相关文章

  1. Oracle学习总结_day06_视图&序列&索引

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day 06 视图,索引,序列 视图 什么是视图: 视 ...

  2. Oracle入门基础(十)一一数据库其他对象-视图/序列/索引/同义词

    SQL> --视图 SQL> create view empinfoview as select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname ...

  3. java数据库编程之事务、视图、索引、备份、恢复

    第五章:事务.视图.索引.备份和恢复 5.1:事务 事务的概念:事务(transcation)是讲一系列数据操作捆绑成为一个整体进行统计管理. 如果某一事务执行成功了,则该事务进行操作的所有数据将会提 ...

  4. 序列、视图、索引(面试看这个就GO了)

    oracle内置对象 序列.视图.索引 序列 create sequence aaa start with 1; 使用 视图 创建好之后 然后直接用 就OK了 有了视图可以代替子查询,使得sql简洁 ...

  5. Oracle视图,索引,序列

    什么是视图[View] (1)视图是一种虚表 (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表(3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELEC ...

  6. oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词

    数据库对象 用户模式:指数据库用户所创建和存储数据对象的统称.在访问其它用户模式的数据库对象时需加上用户模式. 如:scott.emp, scott.dept等. 数据库对象包括:表.视图.索引.序列 ...

  7. oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词

    数据库对象 用户模式:指数据库用户所创建和存储数据对象的统称.在访问其它用户模式的数据库对象时需加上用户模式. 如:scott.emp, scott.dept等. 数据库对象包括:表.视图.索引.序列 ...

  8. accp8.0转换教材第5章事务、视图、索引、备份和恢复理解与练习

    知识点:事务.视图.索引.数据库的备份和恢复 一.单词部分 ①transation事务②atomicity原子性③consistency一致性④isolation隔离性 ⑤durability持久性⑥ ...

  9. PL/SQL 编程(三 )程序包和包体,触发器,视图,索引

    一.程序包和包体 程序包(package):存储在数据库中的一组子程序.变量定义.在包中的子程序可以被其它程序包或子程序调用.但如果声明的是局部子程序,则只能在定义该局部子程序的块中调用该局部子程序. ...

  10. 2019-2-25SqlServer 中所有表、列、视图、索引、主键、外键等常用sql

    sp_help Accounts_Users     其中Accounts_Users 表示表名 sp_columns Accounts_Users exec  sp_helpconstraint   ...

随机推荐

  1. 解决在for循环内判断条件多次执行

    最近遇到的这个问题,就是在for循环内if判断的条件会多次执行. 例如,在返回的30数据中,a条目是第7条则会进行30次判断,弹出29次查无数据,也就是要点击29次关闭alert,很是让人不爽. 有了 ...

  2. Spring入门1. IoC入门实例

    Spring入门1. IoC入门实例 Reference:Java EE轻量级解决方案——S2SH 前言: 之前学习过关于Spring的一点知识,曾经因为配置出现问题,而总是被迫放弃学习这些框架技术, ...

  3. golang简易版聊天室

    功能需求: 创建一个聊天室,实现群聊和单聊的功能,直接输入为群聊,@某人后输入为单聊 效果图: 群聊:   单聊: 服务端: package main import ( "fmt" ...

  4. Shell脚本编写规范

    shell脚本需要有较高的实用性.可维护.可阅读.方便他人阅读,因而需要建立一定的规范来操作 dream361@master:~$ cat test2.sh #!/bin/bash 所使用的bash程 ...

  5. LeetCode OJ:Number of Islands(孤岛计数)

    Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...

  6. PostgreSQL提升为主库 时间线加一的问题

    在使用PostgreSQL高可用集群过程中发现一个很难解决的问题,先记录在这里. 我们知道在PG流复制集群中,如果主库死掉了,备库要提升为主库有两种方法: 1)pg_ctl promote 2)创建对 ...

  7. zookeeper的c API 单线程与多线程问题 cli_st和cli_mt

    同样的程序,在centos和ubuntu上都没有问题,在solaris上问题却多多,据说是solaris管理更加严格. zookeeper_init方法,在传入一个错误的host也能初始化出一个非空的 ...

  8. EasyPusher/EasyDarwin支持H.265 RTSP/RTP直播推流与分发播放

    前言描述 随着大屏时代和高清时代的到来,人们已经不再满足于VGA.CIF这种小分辨率了,取而代之的是720P.1080P.4K级的视频传输,虽然我们国家的基础带宽一直在上升,但普遍情况下,传输高清视频 ...

  9. 1. Java EE简介 - JavaEE基础系列

    什么是Java EE? 真的是你理解的那样吗? Java EE, 原名J2EE, 其核心由一系列抽象的标准规范所组成, 是针对目前软件开发中所普遍面临问题的解决方案. 注意以上定义中的"抽象 ...

  10. Swift UITextField各种属性的设置

    //MARK: 文本输入框 func _initTextField() { //如果需要在模拟器中调用电脑的键盘 快捷键:command + shift + k let textField = UIT ...