首页数据库数据库创建视图语句(如何用SQL语句创建一个视图)

数据库创建视图语句(如何用SQL语句创建一个视图)

编程之家2023-10-20110次浏览

大家好,如果您还对数据库创建视图语句不太了解,没有关系,今天就由本站为大家分享数据库创建视图语句的知识,包括如何用SQL语句创建一个视图的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

数据库创建视图语句(如何用SQL语句创建一个视图)

数据库怎样创建视图

视图是在一张或多张表汇总导出的虚拟表,可以方便用户对数据的操作,那如何在已有的数据库表上创建视图呢,可以使用sql语句创建:

CREATE VIEW<视图名> AS<SELECT语句>

创建视图语法说明如下:

<视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。(个人注解:类似数据库的表名)

<SELECT语句>:指定创建视图的 SELECT语句,可用于查询多个基础表或源视图。

使用视图的好处:

数据库创建视图语句(如何用SQL语句创建一个视图)

A.重用SQL语句。

B.简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道其基本查询。

C.使用表的一部分而不是整个表。

D.保护数据。可以授予用户访问表的特定部分的权限,而不是整个表的访问权限。

E.更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。

如何用SQL语句创建一个视图

用SQL语句创建视图的方法:

数据库创建视图语句(如何用SQL语句创建一个视图)

1、打开软件,附加数据库student course,选中数据库,确定,这样数据库student course附加完成。

2、点击新建查询,在新建查询右侧选择数据库student course,可以看到视图栏有两个视图,现在编写代码,删除视图view2,代码执行后,视图栏剩下view1。

3、利用视图,添加数据,利用视图,修改数据,看到firstc这一栏,将c2改为null。

4、利用视图,删除数据。

5、通过以上四步完成SQL语句创建视图。

SQL实战新手入门:创建视图(1)

创建视图()

对于视图的基本形式来说将一个查询转换为一个视图非常简单只需要在查询之前添加一个CREATE VIEW语句并为新创建的视图定义一个名称即可例如

CREATE VIEW vwBooksONshelves

AS

SELECT

loc_bookcase AS bookcase

loc_shelf AS shelf

loc_position_left AS position

bk_title AS title

FROM location INNER JOIN books

ON location fk_bk_loc= books bk_id;

这样就创建了一个视图接下来就可以使用简单的SELECT*语法来查询该视图例如下面的例子

SELECT* FROM vwBooksONshelves;

表列出了查询视图的结果它与定义视图的查询产生的结果完全相同

表将两个表的JOIN查询包装到一个视图的结果

(续表)

视图具有多种用途例如封装复杂性强制安全性等本章随后还将非常详细地讨论这些功能在各个RDBMS中 CREATE VIEW语句可能会带有相当多的特定于RDBMS的选项但前面例子中的语法是通用的在本书所讨论的每一种RDBMS中都可以正常运行

本书中介绍的任何一个SQL查询(DQL类型的)几乎都可以转换为一个视图但也有一些例外在某些RDBMS中带有ORDER BY子句的查询不能用在视图的定义中(但是GROUPBY子句则可以)因此某些RDBMS不允许使用执行排序功能的关键字(DISTINCT FIRST等)例如 HSQLDB和MySQL允许在视图中使用ORDER BY子句但Oracle MicrosoftAccess PostgreSQL和IBM DB则不允许使用ORDER BY子句任何一种RDBMS都不允许视图引用自身(这会产生一个循环引用)也不允许引用暂态的结构例如临时表(请参考第章)

Microsoft Access是一个融合了数据库和程序设计构造的集成环境可以将它作为其他RDBMS的前端但是这种功能具有很多限制例如在本章讨论的环境中 Microsoft Access数据库引擎并不支持使用CREATE VIEW语句(就这一点而言也包括其他任何DDL语句)对非Microsoft Access引擎的数据库创建视图

如果数据库中已经存在同名的表或视图 RDBMS将抛出一个错误某些RDBMS(Oracle PostgreSQL和MySQL)提供了替代的REPLACE关键字用于解决这一情况(在其他数据库中在创建同名视图之前必须先将已经存在的视图删除掉)例如

CREATE OR REPLACE VIEW vwbooksONshelves

AS

SELECT

loc_bookcase AS bookcase

loc_shelf AS shelf

loc_position_left AS position

bk_title AS title

FROM location INNER JOIN books

ON location fk_bk_loc= books bk_id;

开发人员可以轻而易举地创建视图以便限制用户只能使用数据的某个子集子集既可以是纵向的(通过限定视图暴露的列数)也可以是横向的(通过限制返回记录的数量)

根据某种命名约定来命名数据库对象是一个良好的编程实践例如可以在视图名称前添加前缀vw使视图与表区分开来

返回目录 SQL实战新手入门

编辑推荐

Oracle索引技术

高性能MySQL

lishixinzhi/Article/program/SQL/201311/16463

数据库如何创建视图

一般来说,视图创建可以分为五步走:

第一步:先考虑select语句的编写。我们知道,视图其实就是一个select语句的集合,所以,我们建立视图的第一步,就是考虑这个select语句的如何编写。这个select语句编写的是否合理,执行效率的高低直接影响着这个视图的性能,在Select语句中,可能还会有格式的控制、内容的编排等等。如在Select语句中,可以把一些字段合并成一个字段;也可以把相关的内容进行倒置等等。这些功能都是Select语句完成的。所以可以这么说,Select语句的编写是视图建立的基础。

第二步:对这个Select语句进行测试。当我们编写好Select语句之后,就需要在数据库中执行这条语句,看其能否查询到我们想要的值。在对 Select语句进行测试的时候,需要注意一个问题,有时候Select查询语句可以查到准确的数据,但是在以这条语句建立视图的时候,可能就会通不过。如在一些表之间的连接查询的时候,如果两个表中有个字段名相同,是可以的。因为他们除了字段名字之外,还有表名一起来定义这个字段。如A.name与 B.name。这是不算重名的。但是,若在建立视图的时候,这就会被认为是重复的列明,需要对其中的一个列名进行重定义。这一点在数据库视图建立的时候,要特别的注意。

第三步:考虑查询结果的准确性。通过查询语句把我们想要的结果查询出来后,我们就需要看看这个结果是否满足我们的需要。在这个过程中,我们主要注意两点。一是形式字段是否齐全。在一些应用系统中,若数据库的视图要能够被前台的应用程序调用的话,则必须包含一些形式字段。如笔者以前在设计一个 ERP系统的时候,若前台系统要调用数据库中的视图的时候,必须包含记录更新时间、更新者、记录创建时间、创建者等相关信息。若缺乏这些信息的话,则前台调用这张视图的时候,就会出现错误。故在考虑查询结果准确性的问题的时候,就要考虑到前台应用程序的需要,看看这些形式字段是否齐全。二是实体内容的完整性。我们到底需要显示表中的哪些字段呢,这个我们在这里要确认清楚。若显示内容太多的话,则会影响视图的执行效率,而且也会降低视图的安全性作用;但是,若字段内容显示不足的话,则以后要添加字段的话,会比较麻烦,有一定的工作量。所以在这个检验的时候,需要根据视图的实际功用,确定视图需要显示的内容。

第四步:视图的修饰。有时候,为了阅读的方便,我们需要对查询结果进行一些修饰。如现在有两张表,一张是员工基本信息表,这表中有员工姓名、员工职位编号等等;另一张表是职位基本信息表,在这表中有职位编号、职位名称。我们希望在视图中能够如下显示:“职位:员工名字”,如数据库工程师:Victor。也就是说,把两个字段合并起来,并且在中间加入一个冒号。这些格式性的内容都是在查询的时候实现的。所以,我们确认查询的结果没有错误之后,接下来就要确认格式问题。若能够在视图中规范这些格式问题,则前台的程序设计就会相对来说比较简单

第五步:建立视图。等到上面四步都确认无误后,我们就要根据上面的查询语句来建立视图了。不过在这一步过程中,也有一些问题需要注意。一是视图名字的命名规格。我们除了遵循数据库的强制命名格式之外,如不能以数字开头等等,还需要遵循一些软规则。如视图最好能够以V开头,跟基础表进行隔开;另外在视图命名中,能够根据应用模块的不同,来进行分类,并体现在视图的名字中。这对于我们后续视图的查找都具有非常现实的意义。二是虽然可以在视图中直接更新基础表,不过,为了安全与数据统一的考虑,我们这些过来人一般都不建议通过视图来直接更新基础表中的数据。虽然数据库提供了类似的功能。若要更改相关数据的话,则直接去更改基础表的内容为好。在建立视图的时候,默认情况下是不能够通过视图直接更新基础表。

关于数据库创建视图语句,如何用SQL语句创建一个视图的介绍到此结束,希望对大家有所帮助。

数据库decimal?sql语句 decimal(18,0)什么意思主机快递 电脑主机能不能快递