深入了解数据库view的使用方法 (数据库view用法)

深入了解数据库 View 的使用方法

数据库 View 是一种虚拟表格,它是由查询语句所定义的结果。它不是一张实际的表格,但它可以像一张表格一样参与查询、插入、更新以及删除等数据库操作。本文将深入探讨数据库 View 的定义、创建、使用、修改以及删除等方法。

一、View 的定义

1.1 View 的概念

数据库 View 是一个虚拟的表格,它是由 SELECT 查询语句所返回的结果。创建 View 时,只需要使用 SELECT 查询语句来定义这个 View。数据库引擎会将这个 SELECT 语句所返回的结果视为一个表格,然后将这个表格作为 View。

1.2 View 的作用

数据库 View 的作用是为了简化查询语句,减少一些冗余的操作。由于 View 的实现是通过 SELECT 查询语句来定义的,所以我们可以将一些常用的查询操作封装在一个 View 中,这样在以后的查询操作中只需要使用这个 View 就可以了,不需要再编写一大段 SELECT 查询语句。

二、View 的创建

2.1 创建 View 的语法

CREATE VIEW View_Name

AS

SELECT Column_Name1, Column_Name2, …

FROM Table_Name

WHERE Condition;

其中,View_Name 表示要创建的 View 的名称,Column_Name 表示要从表格中选择的列名称,Table_Name 表示要从中选择列的表格名称,Condition 表示筛选条件。

2.2 创建 View 的示例

CREATE VIEW Employee_Salary AS

SELECT Emp_Name, Emp_Salary

FROM Employee

WHERE Emp_Salary > 3000;

以上语句将创建一个名为 Employee_Salary 的 View,这个 View 的数据来源是 Employee 表格。在这个 View 中,只会选择 Emp_Name 和 Emp_Salary 这两列,并且只有 Emp_Salary 大于 3000 的记录会被选中。

三、View 的使用

3.1 使用 View 的语法

SELECT Column_Name1, Column_Name2, …

FROM View_Name

WHERE Condition;

其中,Column_Name 表示要从 View 中选择的列名称,View_Name 表示要访问的 View 的名称,Condition 表示筛选条件。

3.2 使用 View 的示例

SELECT Emp_Name, Emp_Salary

FROM Employee_Salary

WHERE Emp_Salary > 5000;

以上语句可以从 Employee_Salary View 中选择 Emp_Name 和 Emp_Salary 这两列,并且只有 Emp_Salary 大于 5000 的记录会被返回。

四、View 的修改

4.1 修改 View 的语法

ALTER VIEW View_Name

AS

SELECT Column_Name1, Column_Name2, …

FROM Table_Name

WHERE Condition;

其中,View_Name 表示要修改的 View 的名称,Column_Name 表示要从表格中选择的列名称,Table_Name 表示要从中选择列的表格名称,Condition 表示筛选条件。

4.2 修改 View 的示例

ALTER VIEW Employee_Salary

AS

SELECT Emp_Name, Emp_Salary+1000

FROM Employee

WHERE Emp_Salary > 3000;

以上语句将修改 Employee_Salary View,将 Emp_Salary 的值加上 1000。

五、View 的删除

5.1 删除 View 的语法

DROP VIEW View_Name;

其中,View_Name 表示要删除的 View 的名称。

5.2 删除 View 的示例

DROP VIEW Employee_Salary;

以上语句将删除 Employee_Salary View。

六、

本文深入探讨了数据库 View 的定义、创建、使用、修改以及删除等方法,并举了相应的示例说明。作为数据库中重要的一部分,掌握 View 的使用方法对于提高数据库开发工作效率有着重要的作用。

相关问题拓展阅读:

vb.net dataview 的用法

我试了半天, 看来dataview 不能拿来updata, datatable 就可以。 能不能不用dataview, 直接用datatable。

给你个code, 你链尘需要棚启禅添加适当的command 来update insert 和delete

Imports System.Data

Imports System.Data.SqlClient

Public Class Form1

Dim connString As String = “Data Source=ITDAB2STUDENT1\SQLEXpress;Initial Catalog=s;Integrated Security=True”

Dim cmdTxt As String = “Select * From tblPhonebook”

Dim ds As New DataSet

Dim dt As New DataTable

Dim dv As New DataView

Dim cn As New SqlConnection

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim adpt As New SqlDataAdapter(cmdTxt, connString)

adpt.Fill(ds)

dt = ds.Tables(0)

dv = dt.DefaultView

DataGridView1.DataSource = ds.Tables(0)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Using connection As SqlConnection = New SqlConnection( _

connString)

Dim adapter As SqlDataAdapter = New SqlDataAdapter(cmdTxt, connection)

adapter.UpdateCommand = New SqlCommand( _

“UPDATE tblPhoneBook SET GroupName = @GroupName , StaffName = @StaffName , HPNo=@HPNo “旁凯 & _

“WHERE ID = @ID”, connection)

Dim pGrpName As SqlParameter = _

adapter.UpdateCommand.Parameters.Add( _

“@GroupName”, SqlDbType.NVarChar, 20)

pGrpName.SourceColumn = “GroupName”

pGrpName.SourceVersion = DataRowVersion.Current

Dim pStaffName As SqlParameter = _

adapter.UpdateCommand.Parameters.Add( _

“@StaffName”, SqlDbType.NVarChar, 60)

pStaffName.SourceColumn = “StaffName”

pStaffName.SourceVersion = DataRowVersion.Current

Dim pHPNo As SqlParameter = _

adapter.UpdateCommand.Parameters.Add( _

“@HPNo”, SqlDbType.NVarChar, 20)

pHPNo.SourceColumn = “HPNo”

pHPNo.SourceVersion = DataRowVersion.Current

Dim pID As SqlParameter = _

adapter.UpdateCommand.Parameters.Add( _

“@ID”, SqlDbType.Int)

pID.SourceColumn = “ID”

pID.SourceVersion = DataRowVersion.Current

adapter.Update(ds.Tables(0))

End Using

End Sub

End Class

窗体是一个datagridview, 和一个button 我的这个只是update。

只能帮你这么多了,不好意思

定制数据视图

DataView类用来表示定制的DataTable的视图。DataTable和DataView的关系是遵循著名的设计模式–文档/视图模式,其中DataTable是文档,而Dataview是视图。

在任何时候,你都可以有多个基于相同数据的不同的视图。更重要的是,你可以对每一个具有自己一套属性、方法、事件的视图作为独立的对象进行处理。这也代表了相对ADO一个巨大的飞跃。

创建DataView

public DataView();

public DataView(DataTable);

DataView只有同已经存在的、很可能是非空的DataTable对象连接后才可用。通常,这个连接在构造时就指定了。

DataView dv;

dv = new DataView(theDataSet.Tables);

但是,你也可以先创建一个新的视图,然后再用Table属性同表相关联。

DataView dv = new DataView();

dv.Table = theDataSet.Tables;

DataView构造函数使你由DataTable中得到一个DataView对象。如果需要,反之亦可。事实上,DataTable对象的DefaultView属性返回一个该表的DataView对象。

DataView dv = dt.DefaultView;

一旦你有了DataView对象, 你可以利用它的属性来建立你希望用户见到的数据行集。一般,你可以使用下列属性:

RowFilter

Sort

前者可以定制视图中可见数据应匹配的规则。而后者通过表达式来进行排序。当然你可以使用这两者的任意组合。

设置过滤 RowFilter是一个可读写的属性,锋竖用来读取和设置表过滤的表达式。

public virtual string RowFilter {get; set;}

你可以用列名者基梁,逻辑和数字运算符和常量的任意合法组合组成表达式。以下是一些例子:

dv.RowFilter = “Country = ‘USA'”;

dv.RowFilter = “EmployeeID >5 AND Birthdate =, , +, *, % (取模)等等。

如果要选取的行并不能方便地通过算术或逻辑运算符表达,你可以使用IN操作符。以下代码显示如何选取一个随机行:

dv.RowFilter = “employeeID IN (2,4,5)”

你也可以使用通配符*和%,它们同LIKE运算符一起使用时显得更有用。它们都表示任意数量的字符,可以相互替代使用。

请注意,如果在LIKE子句中首运已经有了*或%字符,你必须用方括号将其括起,以免歧义。如果很不幸,字符串中方括号本身也存在了,那么它也必须用将本身括起。这样,匹配语句会如下所示:

dv.RowFilter = “Description LIKE ‘*>product*>”

通配符只允许在过滤字符串的开头或结尾处使用,而不能在字符串中间出现。例如,下列语句会产生运行时错误:

dv.RowFilter = “Description LIKE ‘prod*ct”

字符串必须以单引号括起,而日期型必须以#符号括起。字符型值可以使用小数点和科学计数法。

RowFilter也支持聚合函数,如SUM, COUNT, MIN,MAX, and AVG。如果表中没有数据行,那么函数将返回NULL。

在介绍RowFilter表达式的最后,让我们讨论三个很便利的函数:Len,IIF和Substring。

正如其名,Len()返回特定表达式的长度。该表达式可以是一个列名,也可以是其他合法的表达式。

Substring()返回指定的表达式自特定位置开始,特定长度的字符子串。

我最喜欢用的是IIF(),它按照逻辑表达式的值有一到两个值。IIF是IF-THEN-ELSE语句的紧凑表达。语法如下:

IIF(expression, if_true, if_false)

通 过该函数,可以建立非常复杂的过滤字符串。例如,假定你从SQL Server的Northwind数据库中取得Employees表,下列表达式可以选出那些employeeID小于6且lastname为偶数个字符 和employeeID大于6且lastname为奇数个字符的员工。

IIF(employeeID0)

预排视图

在上面的举例中,datagrid必须负责预排视图中的数据行,以便刷新用户界面。这个自动机制是.NET

数据绑定的产物。Datagrid是通过DataSource属性来获取数据的数据绑定控件。DataView是一个可数据绑定的类,可构建DataSource属性的内容。

如果你想使用datagrid之外的另一个控件,应该怎么办呢?又如果你不想使用自动数据绑定呢?应该怎样预排视图中所选的数据行呢?

DataView的Table属性指向相应的数据表,但DataTable并不保存过滤信息。所以,预排表中的数据注定是不可行的。虽然DataTable和DataView是紧密相联的,但它们各自保持独立,并执行独立的功能。

以下Visual Basic .NET代码段显示了如何遍历视图中所有的数据行,并加入到listbox中。

Dim dv As New DataView()

dv = ds.Tables(“Employees”).DefaultView

dv.RowFilter = “employeeid >5”

ListBox1.Items.Clear()

Dim buf As String

Dim dr As DataRowView

For Each dr In dv

buf = “”

buf &= dr(“lastname”).ToString()& “, ” & dr(“firstName”).ToString()

ListBox1.Items.Add(buf)

Next

正如前面说提到的,DataView是可枚举的类,因此你可以安全的将它传给For..Each语句。Count属性存储了视图中数据行数,以便在For..Next循环中使用。

要访问视图中某一行,可以使用DataRowView类。DataRowView可表示DataRow的视图,就像DataView表达DataTable定制的视图一样。

总的来说,DataRow最多有四种状态:default,original,current和proposed。这些状态由DataRowVersion枚举类型设置,由RowVersion属性表达。

DataRow的视图只能是其中某一种状态。

数据行的默认(default)版本只有当其列在构造时设定了默认值时才有。而初始(original)版本是指在最后一次调用表的AcceptChanges后,从数剧源中得到数据行或快照。当前(Current)版本是指当前的数据行,包括所有当时发生的更新。Proposed状态只存在于调用BeginEdit和EndEdit的编辑过程中。

可以通过访问DataRow相同的语法访问DataRowView。这里最重要的属性叫Item。

排序和其他便捷的特性

DataView支持Sort属性,可以用来对视图中的内容排序。Sort由用逗号分隔的列名表达式进行排序。通过在任何列名后加ASC或者DESC限定词,可以使得字段按照上升或者下降的顺序排列。如果没有方向限定词,默认顺序为ASC。

DataView是内存中的对象,所以排序在本地进行,无需调用数据库服务器。

RowStateFilter是DataView另一有趣的属性。它可以用任何预定义的标准来过滤DataTable中的内容。下表中是DataViewRowState枚举类型的所有取值:

CurrentRows包括所有未更新的、新的和修改的数据行Deleted所有自上次调用AcceptChanges后删除的数据行ModifiedCurrent所有自上次调用AcceptChanges后修改过的数据行ModifiedOriginal所有自上次调用AcceptChanges后original版本的数据行New所有自上次调用AcceptChanges后新添加的行OriginalRows返回初始数据行,包含unchanged和deleted 的Unchanged所有未更新的数据行

如果要操作非连接的数据,所有更新都在对DataTable调用AcceptChanges后生效。对单一行的更新在调用DataRow的AcceptChanges后生效。类似的,这些更新可以通过调用DataTable或DataRow对象的RejectChanges来取消。

DataView对象还有一些属性,如AllowEdit,AllowDelete和AllowNew,用来得到或设定是否允许更新的值。它们的默认值设为True,允许任何种类的更新。如果在标志设为False时,你想要完成相应的更新操作,会有一个运行时错误发生。

DataViewManager类

DataTable对象的DefaultView属性用来返回一个DataView对象,作为数据表中内容的默认视图。它按照自然顺序读取数据并显示表中所有的行,而不使用任何过滤。

theMasterGrid.DataSource = m_ds.Tables(“Employees”).DefaultView

如果需要数据特定的视图,你可以进行排序并/或对DefaultView对象直接进行过滤。

m_ds.Tables(“Employees”).DefaultView.Sort = “lastname”

theMasterGrid.DataSource = m_ds.Tables(“Employees”).DefaultView

DataViewManager类是用来存储DataSet中所有表的视图设置。

可以通过传递一个合法的非空的DataSet给类的构造函数来创建DataViewManager

Dim dvm As DataViewManager

dvm = New DataViewManager(m_ds)

也可以通过DataSet对象的DefaultViewManager属性直接得到:

Dim dvm As DataViewManager = m_ds.DefaultViewManager

重要的是DataViewManager类是同一个DataSet相关联的。下面是另一种可行的方法:

Dim dvm As New DataViewManager()

dvm.DataSet = m_ds

DataViewManager最重要的属性是DataViewSettings,一个DataViewSetting对象的。

Dim dvs As DataViewSetting

dvs = dvm.DataViewSettings(“Employees”)

dvs.Sort = “lastname”

DataViewSetting对象包含了表视图的参数信息。当将数据绑定到对数据敏感的控件时,使用DataViewManager而不是DataSet或DataTable可以保留你的视图设置(过滤和排序字段)

theMasterGrid.DataSource = dvm

theMasterGrid.DataMember = “Employees”

数据库view用法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库view用法,深入了解数据库view的使用方法,vb.net dataview 的用法的信息别忘了在本站进行查找喔。


数据运维技术 » 深入了解数据库view的使用方法 (数据库view用法)