阿里云的虚拟主机用什么做网站android手机软件开发教程
阿里云的虚拟主机用什么做网站,android手机软件开发教程,wordpress 文章章节,诚信网站建设其他数据库对象
视图#xff1a;
常见数据库对象——视图#xff1a;从表中抽出的逻辑上相关的数据集合。
所以#xff1a;1. 视图基于表。2. 视图是逻辑概念。3. 视图本身没有数据。
创建视图
创建语法与创建表类似#xff0c;只需要将table → view即可:
SQL …其他数据库对象
视图
常见数据库对象——视图从表中抽出的逻辑上相关的数据集合。
所以1. 视图基于表。2. 视图是逻辑概念。3. 视图本身没有数据。
创建视图
创建语法与创建表类似只需要将table → view即可:
SQL create view empincomeview
as
select e.empno, e.ename, e.sal, e.sal*12 annualsal, e.sal*12nvl(comm, 0) income, d.dname
from emp e, dept d
where e.deptno d.deptno
出错提示权限不足。因为创建视图需要“create view”的权限。默认scott用户没有该种权限。加之
添加步骤
1. 使用管理员登陆sqlplus / as sysdba
2. 给scott用户增加权限 SQL grant create view to scott;
3. 执行“/”可成功创建视图empincomeview。
4. 视图的操作和表的操作完全一样。 SQL select * from empincomeview;
视图的优点
视图的优点
1. 简化复杂查询 原来分组、多表、子查询等可以用一条select * from xxxview代替。
视图可以看做是表的复杂的SQL一种封装。
2. 限制数据访问 只看视图的结构和数据是无法清楚视图是怎样得来的。可以限制数据的访问。例如
银行项目所谓的各个“表”都是“视图”并有可能只是“只读视图” 注意1. 视图不能提高性能 2. 不建议通过视图对表进行修改。 创建视图细节
使用下面的语法格式创建视图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)] AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
1. 视图只能创建、删除、替换。不能修改修改即替换replace
如刚刚创建的empincomeview其他语句不变将create一行改写成
SQL create or replace view empincomeview 视图不存在则创建、存在则替换。 as select…… from…..where….. with read only 可以将视图设为只读视图。 2. 别名可以写在子查询select各个列的后面也可以写在视图的名字后面。
3. with read only 表示该视图为只读视图。
4. with check option 了解即可 举例
SQL create view testview
as
select * from emp where deptno10
with check option;
SQL insert into testview values(******, 10); 不建议向视图插入但可以做。向视图插入10号员工。
SQL insert into testview values(******, 20); 因为创建视图时加了“with check option”所以失败。
视图中使用DML的规定
一
当视图定义中包含以下元素之一时不能使用delete:
组函数GROUP BY 子句DISTINCT 关键字ROWNUM 伪列
二
当视图定义中包含以下元素之一时不能使用update :
组函数GROUP BY子句DISTINCT 关键字ROWNUM 伪列列的定义为表达式
三
当视图定义中包含以下元素之一时不能使用insert :
组函数GROUP BY 子句DISTINCT 关键字ROWNUM 伪列列的定义为表达式表中非空的列在视图定义中未包括
总结一句话不通过视图做insert、update、delete操作。因为视图提供的目的就是为了简化查询。
删除视图SQL drop view testview 不加“purge”关键字。 序列
可以理解成数组默认从[1]开始长度[20] [1, 2, 3, 4, 5, 6, …, 20] 在内存中。 *
由于序列是被保存在内存中访问内存的速率要高于访问硬盘的速率。所以序列可以提高效率。
序列的使用
1. 初始状态下指针*指向1前面的位置。欲取出第一个值应该将*向后移动。每取出一个值指针都向后移。
2. 常常用序列来指定表中的主键。
3. 创建序列create sequence myseq 来创建一个序列。
创建序列
CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];
NOCACHE表示没有缓存一次不产生20个而只产生一个。
创建序列
创建序列、表以备后续测试使用
SQL create sequence myseq 按默认属性创建一个序列。
SQL create table tableA (tid number, tname varchar2(20)) tid作为主键准备使用序列来向表中插入值。
序列的属性
每个序列都有两个属性
NextVal 必须在CurrVal之前被指定。因为初始状态下CurrVal指向1前面的位置无值
对于新创建的序列使用SQL select myseq.currval from dual 得到出错。 但SQL select myseq.nextval from dual 可以得到序列的第一值1. 此时再执行SQL select myseq.currval from dual currval的值也得到1
使用序列给tableA表创建主键tid
SQL insert into tableA values(myseq.nextval, ‘aaa’)
只有nextval取完会向后移动使用currval不会移动。
SQL insert into tableA values(myseq.nextval, ‘bbb’)
继续使用nextval向表中添加主键tid
……
SQL insert into tableA values(myseq.nextval, name)
可以使用“”和“/”来指定名字。 SQL select * from tableA;
由于前面测试currval和nextval关系时调用过nextval所以tableA的tid起始从2开始。
查询序列的属性SQL select * from user_sequences; user_sequences为数据字典视图。
修改序列
必须是序列的拥有者或对序列有 ALTER 权限只有将来的序列值会被改变改变序列的初始值只能通过删除序列之后重建序列的方法实现
删除序列SQL drop sequence myseq;
使用序列需要注意的问题
1. 序列是公有对象所以多张表同时使用序列会造成主键不连续。 如[1, 2, 3, 4, 5, …, 20]
tableA: 1 2 4
tableB: 3 5 A、B表有可能主键不连续。
2. 回滚也可能造成主键不连续。 如多次调用insert操作使用序列创建主键。但是当执行了rollback后再次使用insert借助序列创建主键的时候nextval不会随着回滚操作回退。
3. 掉电等原因也可能造成不连续。由于代表序列的数组保存在内存中断电的时候内存的内容丢失。恢复供电时候序列直接从21开始。
索引
索引相当于书的目录提高数据检索速度。提高效率视图不可以提高效率
一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引. 用户不用在查询语句中指定使用哪个索引在删除一个表时, 所有基于该表的索引会自动被删除通过指针加速 Oracle 服务器的查询速度
通过快速定位数据的方法减少磁盘 I/O。 上图中
emp表中保存数据其中包含部门号列。有10号部门有20部门员工
2. 当 select * from emp where deptno10 的时候。由于10号部门员工不连续没规律。
为了提高访问速度可以在数据库中依照rowid给deptno列建立索引
SQL create index myindex on emp(deptno)
这样就建立了“索引表”可以通过rowid保存的行地址快速的找到表中数据。即使表中数据不连续。
3. 建立了索引以后如果再执行select语句的时候会先检查表上是否有索引表。如果有可以通过有规律 的rowid找到不连续的数据。
4. Oracle的数据库中索引有 B树索引默认和 位图索引两种。
5. 使用create index 索引表名 on 表名列名1 列名2…;来创建索引表。由数据库自动进行维护。 使用主键查询数据最快速因为主键本身就是“索引”所以检索比较快。
索引使用的场景
以下情况可以创建索引:
列中数据值分布范围很广列经常在 WHERE 子句或连接条件中出现表经常被访问而且数据量很大 访问的数据大概占数据总量的2%到4%
下列情况不要创建索引:
表很小列不经常作为连接条件或出现在WHERE子句中查询的数据大于2%到4%表经常更新
删除索引SQL drop index myindex; synonym同义词
就是指表的别名。
如scott用户想访问hr用户下的表employees。默认是不能访问的。需要hr用户为scott用户授权
SQL sqplus hr/11 或 conn hr/11已登录界面 切换登陆
SQL grant select on employees to scott hr用户为scott用户开放了employees表的查询权限。 这时scott用户就可以使用select语句来查询hr用户下的employees表的信息了。
SQL select count(*) from hr. employees (若用户名叫zhangsanfeng则zhangsanfeng.employees) hr.employees名字过长为了方便操作scott用户为它重设别名
SQL create synonym hremp for hr.employees; 为hr.employees创建了同义词。 如有权限限制那么切换管理员登录给scott用户添加设置同义词权限。
SQL conn / as sysdba
SQL grant create synonym to scott
SQL select count(*) from hremp 使用同义词进行表查询操作。 ——同义词、视图 等用法在数据保密要求较高的机构使用广泛如银行机构。好处是既不影响对数据的操作同时又能保证数据的安全。 OCA
OCP
OCM 认证
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89731.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!