视图在数据库中的应用分析数据库教程

时间:2022-12-05 08:05:20 其他范文 收藏本文 下载本文

视图在数据库中的应用分析数据库教程(整理7篇)由网友“德拉克萨的暮刃”投稿提供,下面就是小编给大家分享的视图在数据库中的应用分析数据库教程,希望大家喜欢!

视图在数据库中的应用分析数据库教程

篇1:视图在数据库中的应用分析数据库教程

视图|数据|数据库

视图技术现在几乎所有的关系型数据库都支持,其应用也十分广泛,

采用视图的优点

1、 让数据库结构实现逻辑上的可扩充性:当数据库系统的物理信息(主要指表结构、表数据)已经完成后,如果由于新的业务要求导致表数据的不够,这时就可以采用视图技术进行扩充,通过视图中强大的SQL来完成功能。

2、 软件开发及数据查询处理方便:采用视图可以简化数据库系统的内部结构及其关系图,因为物理表很多时候是以数据库范式原则分析建立的,尤其在数据冗余处理方面与实际业务会产生较大的分歧,采用视图可以将多个表通过SQL联合起来,产生与实际业务相适应的数据结果,这极大方便了软件开发及数据查询,利用视图的SQL写起来也比较简单。

视图按功能的分类分析

1、业务视图

业务视图在数据库应用中比较多,往往是实现返回一个具体的业务结果功能,里面的复杂程度随着业务的复杂而提高,这种视图往往只用在软件中的某个固定模块,所以在建立这种视图应考虑产生的业务数据信息是否有用和完整,不用的数据尽量不返回,如果须从其它表产生的数据应考虑在视图中产生,而不要在实现软件开发时的SQL中通过表链接产生,

2、基本视图

基本视图是指一般是指在软件开发中多个模块都可能用到的视图,这种视图一般比较简单,不会超过四个表的链接,处理基本视图时应做详细的分析,使它的重用性达到最大,切不能因为当前的SQL处理就随便建立一个基本视图。应用了基本视图内的表不应该在外面的SQL中重复出现,否则可能导致ORACLE重复处理的现象。

视图建立备注:

视图中如果出现UNION操作的话在数据不重复的情况下应改为UNION ALL以提高速度。

功能大致相同的视图应在不影响性能及数据的前提下分析是否可以合并成一个视图,这有助于软件模块化开发及调试。

非软件用和不常用的视图应使用完后可以保存SQL成文件再进行删除,以免给其它人员产生影响。

篇2:在视图中用order by数据库教程

视图

大家知道

1:如下查询语句没问题

select * from sysobjects order by name

2:如果把该查询语句建成视图

create view v_test

as

select * from sysobjects order by name

会提示出错:

The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.

3: 既然提示除非在语句中使用top 才能用order by,那就好说了

create view v_test

as

select top 100 percent * from sysobjects order by name

一切正常

再用select * from v_test查一下,确实已经正确排序,

在视图中用order by数据库教程

篇3:通过视图管理数据数据库教程

视图与表具有相似的结构,当向视图中插入或更新数据时,实际上对视图所引用的表执行数据的插入和更新,

通过视图管理数据数据库教程

。但是通过视图插入、更新数据和表相比有一些限制,下面通过具体的例子来讲述通过视图插入、更新数据以及其使用的限制。

使用SELECT 语句,可以在视图和表中查到该条记录。但是如果执行下面的语句,虽然仍可以成功执行,但只可以在表而不是视图中查到该条数据。

注意:由于向视图插入数据实质是向其所引用的基本表中插入数据,所以必须确认那些来包括在视图列但属于表的列允许NULL值或有缺省值。

若要执行INSERT 语句,则在同一个语句只能对属于同一个表的列执行操作,

所以,若向视图au_title 中插入一行数据,只能分别执行以下语句:

insert into au_title (author_au_id, au_lname, au_fname, contract)

values ('234-34-4611','John','Smith', 1)

insert into au_title (title_au_id, title_id, au_ord, royaltyper)

values ('234-34-4611','BU1111',1,50)

通过视图对数据进行更新与删除时需要注意到两个问题:

执行UPDATE DELETE 时,所删除与更新的数据,必须包含在视图结果集中;

如果视图引用多个表时,无法用DELETE 命令删除数据,若使用UPDATE 则应与INSERT 操作一样,被更新的列必须属于同一个表。

篇4:MSSQL SERVER数据库视图

MSSQL SERVER数据库-视图

“视图是由基于一个或多个表的一个查询所定义的虚拟表,它将查询的具体定义保存起来,视图不包含任何数据,” 前面这句是我在网上找的视图的定义,对于初接触MSSQLSERVER视图的人,一眼读过去,可能也不解其意,不过没有关系,大概记住就行了,在实际使用过后再来看这句,你就知道他在讲什么了。

视图在操作上和数据表没有什么区别,但两者的差异是在其本质上的。数据表是实际存储记录的地方,然而视图并不是保存任何记录,它存储的实际上是查询语句。相同的数据表,根据不同用户的不同需求,可以创建不同的视图。

视图的作用主要是用来查询,但也可以对视图进行增删改的操作,对视图的增删改操作实际是通过视图的变化引起基表数据的变化。这篇文章不会写到对视图的增删改操作,因为我认为没有必要对视图进行这方面的操作,我现在的理解仅是将视图作为查询操作,在实际应用上也是如此。

可们首先来看一下系统视图

(图1)

从图1我们可以看,MSSQL数据里内置了如此之多的系统视图。那么这些视图里面存放的是什么东西

1、我们输入SQL语句:

select * from sys.tables

结果显示:

name object_id principal_id schema_id parent_object_id type type_desc create_date

student 133575514 NULL 1 0 U USER_TABLE -08-04 16:03:00.613

Employee 597577167 NULL 1 0 U USER_TABLE 2012-08-04 16:53:40.557

comment 709577566 NULL 1 0 U USER_TABLE 2012-08-05 21:25:56.637

article 741577680 NULL 1 0 U USER_TABLE 2012-08-05 21:27:46.980

teacher 2121058592 NULL 1 0 U USER_TABLE 2012-08-04 14:41:58.470

从name字段可以看过,我们把当前数据库的全部表名都查找出来了。

2、我们输入SQL语句:

select * from sys.databases

从name字段可以看过,我们把当前数据库的全部数据库名都查找出来了。

3、我们输入SQL语句

select * from

INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='student'

结果显示

TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION

MySchool dbo student sid 1

MySchool dbo student sname 2

MySchool dbo student sage 3

MySchool dbo student ssex 4

MySchool dbo student tid 5

我们可以从 COLUMN_NAME获得student表的全部字段,

那么你可能会问得到这些系统视图有什么用 我实际用过一次,可以根据这些系统视图所获得的内容来做某种类型的代码生成器。

SQL视图的其他应用举列:

--如果存在该数据库那么先把他删除掉再创建

if exists(select * from sys.database where name='test')

drop database test

create database test

--如果存在该表那么先把他删除掉再创建

if exists(select * from sys.objects where name = 'test')

drop table test

create table test

(

tid int primary key identity(1,1),

tName nvarchar(50) null,

tAge int

)

--为该表创建一个年龄检测约束,约束范围在18-70岁之间,如果存在该约束则删除后创建

if exist(select * from sys.objects where name='UQ_TEST_TNAME'

alter table test

drop constraint UQ_TEST_TNAME

alter table test

add constraint UQ_TEST_TNAME CHECK(tAge>=18 and tAge<=70)

怎么创建视图

create view v_Student

as

select sname,sage from student

select * from v_Student;

创建好后就可当作一个表来使用 select * from v_Student

怎么删除视图

if exists(select * from sys.objects where name='v_Student')

drop view v_Student

怎么修改视图

alter view v_Student

as

select sname,sage from student where sid=1

视图的注意事项

视图不包括结合

视图不包括Group By子句

视图不包括Union语句

视图不包含对伪字段RowNum的任何引用

视图不包含任何组函数

不能使用Distinct子句

Where子句包含的嵌套的表表达式不能与From子句引用同一个表

作者 春晓

篇5:游标的应用数据库教程

在前面几节,我们详细介绍了如何声明游标,从游标中读取数据以及关闭、释放游标的方法,

游标的应用数据库教程

。下面我们将给出几个应用实例使读者对游标有更为全面的了解。

13.7.1 游标变量的应用

我们已经提到游标是从MS SQL SERVER 7 版本才开始使用的新的变量类型,游标常被应用在存储过程、触发器中。那么游标是如何被作为变量而应用呢?看一下系统过程sp_cursor_list 的SQL 语句文本,会大有收获。

在该存储过程中,@cursor_return 为一游标变量,并将其结果集返回给其调用者,该结果集保存有当前所有游标的各属性值。

提示:在存储过程中,如果被定义为游标类型的变量使用OUTPUT选项,则必须使用VARYING保留字,即为@variable CURSOR VARYING OUTPUT形式,

例13-9: 如果准备在客户机程序中对从数据库服务器检索出的数据进行处理,那么可以创建一个包含游标的存储过程。

首先删除同名存储过程jobs_cursor

接着创建存储过程jobs_cursor

13.7.2 嵌套游标

为了灵活地处理结果集,可以在存储过程中使用多层游标。

例13-10: 本例创建了包含二层游标的存储过程。第一层游标存放authors 表中符合过程参数的数据记录,每次从第一层游标中读取一条authors 数据,然后遍历第二层游标,将有关该authors 的信息读取出来。如果准备生成一个嵌套报表,这种方法很有效。

篇6:浅谈DataSet数据库教程

DataSet是ADO.NET开发人员为方便数据处理开发出来的,是数据的集合,是为解决DataReader的缺陷设计的,DataReader数据处理速度快,但它是只读的, 而且一旦移到下一行,就不能查看上一行的数据,DataSet则可以自由移动指针,DataSet的数据是与数据库断开的。DataSet还可用于多层应用程序中,如果应用程序运行在中间层的业务对象中来访问数据库,则业务对象需将脱机数据结构传递给客户应用程序。

DataSet的功能:浏览、排序、搜索、过滤、处理分级数据、缓存更改等。还可以与XML数据互换。DataSet中可包括多个DataTable,可将多个查询结构存到一个DataSet中,方便操作,而DataTable中又包括多个DataRow、DataColumn,可通过这些DataRow、DataColumn来查看、操作其中的数据,而需将操作结果返回给数据库的话,则可以调用DataAdapter的Update方法。

DataSet的操作:

DataSet ds=new DataSet;

DataTable dt=new DataTable(“newTable”);

ds.Tables.Add(dt);DataSet ds=new DataSet();

DataTable dt=ds.Tables.Add(“newTable”);

上述两种方法都可以在DataSet中添加一个DataTable,看需要而进行选择。添加DataTable后,需向其中添加行和列。

DataSet ds=new DataSet();

DataTable dt=ds.Tables.Add(“newTables”);

DataColumn col=dt.Columns.Add(“newColumn”,typeof(int));

col.AllowDBNull=false;

col.MaxLength=4;

col.Unique=true;

上述代码向DataSet中的DataTable中添加名为”newColumn”,类型为int且不为空,最大长度为4和唯一性为真的列。

dt.PrimaryKey=new DataColumn[]{dt.Columns[“ID”]}

这段代码是继续上面代码的,为一个DataTable中添加一个主键列,主键列是一个数据组,如有多个主键,只需在数组中添加一个列即可。如下:

dt.PrimaryKey=new DataColumns[]{dt.Columns[“OrderID”],dt.Columns[“ProductID”]}

添加外键:

ForeignKeyConstraint fk;

fk=new ForeignKeyConstraint(ds.Tables[“Customers”].Columns[“CustomerID”],ds.Tables[“Orders”].Columns[“CustomerID”]);

ds.Tables[“Orders”].Constraints.Add(fk);

//上述代码假如已经为Cusomers表和Orders创建了主键,此句为添加外键约束,

上述是根据Customers表和Orders表的CustomerID来创建约束。

下面介绍修改DataRow中的内容:

DataRow dr=ds.Tables[“Customer”].Rows.Find(“ANTON”);

if(dr==null)

else

{

dr.BeginEdit();

dr[“CompanyName”]=“newValue”;

dr[“ContactName”]=“newValue2”;

dr.EndEdit();

}

//上面代码通过Row集合的Find方法来在DataTable中的行进行定位,找到“ANTON”行,再修改“ANTON”行中CompanyName列和ContactName列的值。通过BeginEdit和EndEdit来缓存对行的修改,还可调用 CancelEdit为取消修改。

判断某列是否为空值:

DataRow dr=ds.Tables[“Customers”].Rows.Find(“aaa”);

if(dr.IsNull(“ContactName”);

..

else

dr[“ContactName”]=DBNull.Value

//这里判断ContactName列是否为空,如果不是则为其赋空值,呵,很无厘头的做法,这里只为演示为列赋空值的做法。

删除DataRow:

有两种方法可以删除DataRow,Delete方法和Remove方法和RemoveAt方法。其区别是Delete方法实际上不是从DataTable中删除掉一行,而是将其标志为删除,仅仅是做个记号,而Remove方法则是真正的从DataRow中删除一行,RemoveAt方法是根本行的索引来删除。列:

DataRow dr=ds.Tables[“table”].Rows.Find(“a”);

ds.Tables[“table”].Remove(dr);

ds.Tables[“table”].Remove(index);

//dr 为“a”所在的行,查出后将其删除,index为 “a”所在的索引号。关于DataSet中的其用法,参照MSDN

篇7:ChangeAllObjectOwner数据库教程

object

EXEC ChangeAllObjOwner @oldowner = 'John', @newowner = 'Alex'

/*

Version: SQL Server 7.0/2000

Created by: Alexander Chigrik

www.MSSQLCity.com/ - all about MS SQL

(SQL Server Articles, FAQ, Scripts, Tips and Test Exams).

This stored procedure can be used to run through all of a specific

database's objects owned by the 'oldowner' and change the old

owner with the new one.

You should pass the old owner name and the new owner name,

as in the example below:

EXEC ChangeAllObjOwner @oldowner = 'John', @newowner = 'Alex'

*/

IF OBJECT_ID('ChangeAllObjOwner') IS NOT NULL //line continous

DROP PROC ChangeAllObjOwner

GO

CREATE PROCEDURE ChangeAllObjOwner (

@oldowner sysname,

@newowner sysname

)

AS

DECLARE @objname sysname

SET NOCOUNT ON

--check that the @oldowner exists in the database

IF USER_ID(@oldowner) IS NULL

BEGIN

RAISERROR ('The @oldowner passed does not exist in the database',

16, 1)

RETURN

END

--check that the @newowner exists in the database

IF USER_ID(@newowner) IS NULL

BEGIN

RAISERROR ('The @newowner passed does not exist in the database',

16, 1)

RETURN

END

DECLARE owner_cursor CURSOR FOR

SELECT name FROM sysobjects WHERE uid = USER_ID(@oldowner)

OPEN owner_cursor

FETCH NEXT FROM owner_cursor INTO @objname

WHILE (@@fetch_status -1)

BEGIN

SET @objname = @oldowner + '.' + @objname

EXEC sp_changeobjectowner @objname, @newowner

FETCH NEXT FROM owner_cursor INTO @objname

END

CLOSE owner_cursor

DEALLOCATE owner_cursor

GO

优化其索引的小技巧数据库教程

120个solidworks实例教程

AutoCAD教程_5线型,线宽,颜色及图层

从一个MysqL的例子来学习查询语句数据库教程

AutoCAD三维建模教程:三通管的制作过程

Excel数据透视表:以自己的方式查看数据

Word入门动画教程77:插入艺术字

第三章 第10讲 网页设计基础知识

机械制图新标准学习教程2-制图的基本规定

教学课件制作教程与技巧

视图在数据库中的应用分析数据库教程
《视图在数据库中的应用分析数据库教程.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【视图在数据库中的应用分析数据库教程(整理7篇)】相关文章:

CAD 教程:曲面命令创建楼房2023-04-16

绘制甘特图2022-05-07

浩辰CAD机械教程之特殊曲线绘制2024-05-01

基于AutoCAD的机械零件参数化图库的建立方法2023-03-03

ACCESS数据库中Field对象的caption属性读写数据库教程2023-06-16

Flash教程三维引擎初探2023-03-19

Expression Blend实例中文教程 控件快速入门ControlTempla2022-04-29

Excel“选项”对话框使用问答EXCEL基本教程2022-10-02

实训心得总结2022-04-29

机械制图与检验技术教程-2常用术语2022-05-07