添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
    视图又叫虚表。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
视图主要有以下作用1、安全,权限控制。一些数据表有着重要的信息。有些字段是保密的,不能让用户直接看到。这时就可以创建一个视图,在这张视图中只保留一部分字段。这样,用户就可以查询自己需要的字段,不能查看保密的字段。
2、性能,快。关系数据库的数据常常会分表存储,使用外键建立这些表的之间关系。这时,数据库查询通常会用到连接(JOIN)。这样做不但麻烦,效率相对也比较低。如果建立一个视图,将相关的表和字段组合在一起,就可以避免使用JOIN查询数据。
3、灵活,抽取即将废弃表,产生有用价值。如果系统中有一张旧的表,这张表由于设计的问题,即将被废弃。然而,很多应用都是基于这张表,不易修改。这时就可以建立一张视图,视图中的数据直接映射到新建的表。这样,就可以少做很多改动,也达到了升级数据表的目的。
关于视图的学习,我建议你参考mysql手册。在网上找一些示例,很快就入门了。

视图在SQL中可以分为三类

1 普通视图(Regular View)

sql模板

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ] 
[ WITH <view_attribute> [ ,...n ] ] 
AS select_statement 
[ WITH CHECK OPTION ] [ ; ]
<view_attribute> ::= 
    [ ENCRYPTION ]
    [ SCHEMABINDING ]
    [ VIEW_METADATA ]     } 

参数还是比较少的,现在解释一下上面的参数:

ENCRYPTION: 视图是 加密的 ,如果选上这个选项,则无法修改.创建视图的时候需 要将脚本保存,否则再也不能修改了

SCHEMABINDING: 和底层引用到的表进行定义绑定。这个选项选上的话,则视图所引用到的表 不能随便更改构架(比如列的数据类型) ,如果需要更改底层表构架,则先drop或者alter在底层表之上绑定的视图.

VIEW_METADATA: 这个是个很有意思的选项.正如这个选项的名称所指示,如果不选择,返回给客户端的metadata是View所引用表的metadata,如果选择了这个选项,则返回View的metadata.再通俗点解释,VIEW_METADATA可以让视图看起来貌似表一样。View的每一个列的定义等直接告诉客户端,而不是所引用底层表列的定义。

WITH Check Option:这个选项用于更新数据做限制

  • 在View中,除非有TOP关键字,否则不能用Order By子句
  • View在每个Schema中命名必须独一无二
  • View不要嵌套尽量
  • Compute,compute by,INTO关键字不允许出现在View中
  • View不能建立在 临时表
  • View不能对 全文索引进行查询
CREATE VIEW v_Test
SELECT TOP 10 * FROM table1
查询视图
SELECT * FROM v_Test

2索引视图(Indexed View)----会自动同步(好也坏)

索引视图可以看作是一个和表(Table)等效的对象!,是真实存在于物理数据中。

要求严格:(部分)

  • 索引视图涉及的基本表必须ANSI_NULLS设置为ON
  • 索引视图只能引用基本表
CREATE VIEW v_Test_Index
WITH SCHEMABINDING
SELECT Name,ID
FROM CUSTOMER join NAME="PAUL"
ADN ID>5
--在视图上建立索引
CREATE UNIQUE CLUSTERED INDEX index
ON v_Test_Index
底层直接聚集索引扫描----通过hash匹配,索引扫描,性能好

但是 mysql没有

注:对索引的操作类似于CML可以使用ALTER,UPDATE,DELETE

mysql索引

1、什么是索引

索引是一个单独的、存储在 磁盘上的数据库结构 ,它们包含着对数据库表里所有记录的 引用指针

MySQL中索引的存储类型有两种: BTREE(树)和 HASH(哈希) ,具体和表的存储引擎有关。MyISAM和InnoDB存储引擎只支持 BTREE索引

2、索引的好处

适当使用索引能提升数据库查询速度!

3、实例:

在创建表的时候创建索引

CREATE   TABLE  表名  [  列名称  数据类型 ]  
        [  UNIQUE  |  FULLTEXT  ]   [  INDEX   |   KEY    ]    [  索引名称  ]   ( 列名称  [  length  ]  )  [  ASC | DESC ]
说明: UNIQUE  、 FULLTEXT  为可选参数,分别表示 唯一索引、全文索引 ;INDEX 与 KEY为同义词,两者的作用相同,用来指定索引; bookid INT NOT NULL, bookname VARCHAR(100) NOT NULL, authors VARCHAR(100) NOT NULL, info VARCHAR(500) NULL, year_publication YEAR NOT NULL, INDEX(year_publication)

(2)、唯一索引(unique): 唯一索引列的值必须 唯一 但允许有空值 主键索引是一种特殊的唯一索引,不允许有空 值。

CREATE TABLE  book
  id  INT  NOT  NULL,
  name  CHAR(50)  NOT  NULL,
  UNIQUE  INDEX   UniqueIdx(id)

(3)、联合索引:组合索引即是在多个列上创建索引。查询时,只有在查询条件中使用了这些字段(创建组合索引的时候指定的哪些列)的最左边字段时,索引才会被使用。

CREATE TABLE student
  id  INT  NOT  NULL,
  name  CHAR(50)  NOT  NULL,
  age  INT  NOT  NULL,
  info  VARCHAR(200),
  INDEX   MultiIdx(id,name,age)

(4)、全文索引:MySQL只有MyISAM存储引擎支持FULLTEXT索引,并且类类型为CHAR、TEXT、VARCHAR。 并且需要指定表的存储引擎为MyISAM。

CREATE TABLE t4
  id  INT  NOT  NULL,
  name  CHAR(50)  NOT  NULL,
  age  INT  NOT  NULL,
  info  VARCHAR(200),
  FULLTEXT INDEX   FullindexName(info)
) ENGINE = MyISAM ;

 在已经存在的表上创建索引:

ALTER  TABLE  table_name  ADD   [  UNIQUE  |  FULLTEXT  ]   [  INDEX   |   KEY    ] 
[  inex_name  ]  (col_name [ length ] ,...)  [ASC | DESC ]
 
(1)、普通索引:ALTER  TABLE  book  ADD  INDEX   indexName( bookname(30) );
(2)、唯一索引:ALTER  TABLE  book  ADD UNIQUE INDEX  UniqueIdx( bookid );
(3)、组合索引:ALTER  TABLE  book  ADD  INDEX  BkAndInfoIdx( authors(20), info(50) );
(4)、全文索引:ALTER TABLE t6  ADD  FULLTEXT  INDEX infiIdx(info);(前提是这个表的存储引擎为 MyISAM)

使用 create  index  创建索引:

CREATE    [  UNIQUE  |  FULLTEXT  ]   [  INDEX   |   KEY    ]  INDEX  index_name
ON   table_name ( col_name[ length ] , ... )  [ASC | DESC ]
 例:在表book的bookname字段上建立名为BkNameIdx的索引。
CREATE INDEX  BkNameIdx   ON   book (bookname);
  例: 在book表的bookId字段上建立唯一索引。
CREATE   UNIQUE    INDEX  UniqueIdx    ON   book (bookId);

4、删除索引:

(1)、ALTER   TABLE  table_name   DROP   INDEX  index_name;
(2)、DROP    INDEX     index_name   ON  table_name ;
UTS LINUX WINDOWS MYSQL ORCALE DB2 MSSQL 数据传输系统 数据稽核 视图转档 定制传输 数据源监管 异构数据处理 数据衍生服务 --创建视图 as后查询图中需要显示的数据,可以是连接查询、子查询等 create [or replace] view 名 as select * from emp; --多表查询 create view v_em 在数据库方面,查询一张表的时候有两种检索方式:全表扫描、索引检索(效率很高)。 索引虽然可以提高检索效率,但不能随意添加索引,因为索引也是数据库当中的对象,也需要数据库不断维护。比如,表中的数据经常被修改,这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。 添加索引是给某一个字段或者是某些字段添加索引。 例如:select ename,sal from emp where ename = 'SMITH' 1、说明:创建数据库CREATE DATABASE db1(db1代表数据库表,可自命名)2、说明:删除数据库drop database db1(db1代表数据库表,可自命名)3、说明:备份sql server— 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:mssql7backupMyNwind_1.da... 一直把视图理解为一个select语句而已,视图一般就是用于查询,不会通过视图来更新表或视图本身的数据,所以视图根本不需要什么主键。今天自己建了一个视图view_test: drop view if exists view_test create view view_test select a.c1,a.c2, b.c1,b.c2, c.c1,c.c2, d.c1,... 一、数据库视图 视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以... 1.视图 1.1视图介绍 数据库中的视图是一个虚拟表。同真实地表格一样,包含一系列带有名称的行和列数据。行和列数据来自由定义视图查询所引用的表,并且在引用视图时,动态生成。 视图是一个虚拟表,是从数据库中的一个或多个表中导出来的表。它可以从已经存在的视图的基础上定义。一旦定义后便存储在数据库中,与其对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据知识放在基本表中的数据。对视图的操作与对表的操作一样,可以查询、修改、删除。当通过视图看到的数据进行变化时,相应的基本表中的数据也 1. 视图也有索引可能有许多人知道数据库要建索引,可能更多的理解都是全文索引,这个是需要在数据库属性中手工去创建的,当然通过程序也可以做。其实很多人会忽略视图索引,其实文件夹也有类似的索引,但是由于它的更新通常是人工的,所以这里不专门说明了。 表单是用来创建文档的,但是表单并不是数据库中的表结构。视图是用来显示文档的,但是视图并不是天生就会显示出那些我们需要的文档,它跟数据库的Index一样,需...