新聞中心
深入了解數(shù)據(jù)庫 View 的使用方法

成都創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報價,主機托管價格性價比高,為金融證券行業(yè)成都移動機房,ai人工智能服務(wù)器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。
數(shù)據(jù)庫 View 是一種虛擬表格,它是由查詢語句所定義的結(jié)果。它不是一張實際的表格,但它可以像一張表格一樣參與查詢、插入、更新以及刪除等數(shù)據(jù)庫操作。本文將深入探討數(shù)據(jù)庫 View 的定義、創(chuàng)建、使用、修改以及刪除等方法。
一、View 的定義
1.1 View 的概念
數(shù)據(jù)庫 View 是一個虛擬的表格,它是由 SELECT 查詢語句所返回的結(jié)果。創(chuàng)建 View 時,只需要使用 SELECT 查詢語句來定義這個 View。數(shù)據(jù)庫引擎會將這個 SELECT 語句所返回的結(jié)果視為一個表格,然后將這個表格作為 View。
1.2 View 的作用
數(shù)據(jù)庫 View 的作用是為了簡化查詢語句,減少一些冗余的操作。由于 View 的實現(xiàn)是通過 SELECT 查詢語句來定義的,所以我們可以將一些常用的查詢操作封裝在一個 View 中,這樣在以后的查詢操作中只需要使用這個 View 就可以了,不需要再編寫一大段 SELECT 查詢語句。
二、View 的創(chuàng)建
2.1 創(chuàng)建 View 的語法
CREATE VIEW View_Name
AS
SELECT Column_Name1, Column_Name2, …
FROM Table_Name
WHERE Condition;
其中,View_Name 表示要創(chuàng)建的 View 的名稱,Column_Name 表示要從表格中選擇的列名稱,Table_Name 表示要從中選擇列的表格名稱,Condition 表示篩選條件。
2.2 創(chuàng)建 View 的示例
CREATE VIEW Employee_Salary AS
SELECT Emp_Name, Emp_Salary
FROM Employee
WHERE Emp_Salary > 3000;
以上語句將創(chuàng)建一個名為 Employee_Salary 的 View,這個 View 的數(shù)據(jù)來源是 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。
六、
本文深入探討了數(shù)據(jù)庫 View 的定義、創(chuàng)建、使用、修改以及刪除等方法,并舉了相應(yīng)的示例說明。作為數(shù)據(jù)庫中重要的一部分,掌握 View 的使用方法對于提高數(shù)據(jù)庫開發(fā)工作效率有著重要的作用。
相關(guān)問題拓展閱讀:
- vb.net dataview 的用法
vb.net dataview 的用法
我試了半天, 看來dataview 不能拿來updata, datatable 就可以。 能不能不用dataview, 直接用datatable。
給你個code, 你鏈塵需要棚啟禪添加適當(dāng)?shù)腸ommand 來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。
只能幫你這么多了,不好意思
定制數(shù)據(jù)視圖
DataView類用來表示定制的DataTable的視圖。DataTable和DataView的關(guān)系是遵循著名的設(shè)計模式–文檔/視圖模式,其中DataTable是文檔,而Dataview是視圖。
在任何時候,你都可以有多個基于相同數(shù)據(jù)的不同的視圖。更重要的是,你可以對每一個具有自己一套屬性、方法、事件的視圖作為獨立的對象進行處理。這也代表了相對ADO一個巨大的飛躍。
創(chuàng)建DataView
public DataView();
public DataView(DataTable);
DataView只有同已經(jīng)存在的、很可能是非空的DataTable對象連接后才可用。通常,這個連接在構(gòu)造時就指定了。
DataView dv;
dv = new DataView(theDataSet.Tables);
但是,你也可以先創(chuàng)建一個新的視圖,然后再用Table屬性同表相關(guān)聯(lián)。
DataView dv = new DataView();
dv.Table = theDataSet.Tables;
DataView構(gòu)造函數(shù)使你由DataTable中得到一個DataView對象。如果需要,反之亦可。事實上,DataTable對象的DefaultView屬性返回一個該表的DataView對象。
DataView dv = dt.DefaultView;
一旦你有了DataView對象, 你可以利用它的屬性來建立你希望用戶見到的數(shù)據(jù)行集。一般,你可以使用下列屬性:
RowFilter
Sort
前者可以定制視圖中可見數(shù)據(jù)應(yīng)匹配的規(guī)則。而后者通過表達式來進行排序。當(dāng)然你可以使用這兩者的任意組合。
設(shè)置過濾 RowFilter是一個可讀寫的屬性,鋒豎用來讀取和設(shè)置表過濾的表達式。
public virtual string RowFilter {get; set;}
你可以用列名者基梁,邏輯和數(shù)字運算符和常量的任意合法組合組成表達式。以下是一些例子:
dv.RowFilter = “Country = ‘USA'”;
dv.RowFilter = “EmployeeID >5 AND Birthdate =, , +, *, % (取模)等等。
如果要選取的行并不能方便地通過算術(shù)或邏輯運算符表達,你可以使用IN操作符。以下代碼顯示如何選取一個隨機行:
dv.RowFilter = “employeeID IN (2,4,5)”
你也可以使用通配符*和%,它們同LIKE運算符一起使用時顯得更有用。它們都表示任意數(shù)量的字符,可以相互替代使用。
請注意,如果在LIKE子句中首運已經(jīng)有了*或%字符,你必須用方括號將其括起,以免歧義。如果很不幸,字符串中方括號本身也存在了,那么它也必須用將本身括起。這樣,匹配語句會如下所示:
dv.RowFilter = “Description LIKE ‘*>product*>”
通配符只允許在過濾字符串的開頭或結(jié)尾處使用,而不能在字符串中間出現(xiàn)。例如,下列語句會產(chǎn)生運行時錯誤:
dv.RowFilter = “Description LIKE ‘prod*ct”
字符串必須以單引號括起,而日期型必須以#符號括起。字符型值可以使用小數(shù)點和科學(xué)計數(shù)法。
RowFilter也支持聚合函數(shù),如SUM, COUNT, MIN,MAX, and AVG。如果表中沒有數(shù)據(jù)行,那么函數(shù)將返回NULL。
在介紹RowFilter表達式的最后,讓我們討論三個很便利的函數(shù):Len,IIF和Substring。
正如其名,Len()返回特定表達式的長度。該表達式可以是一個列名,也可以是其他合法的表達式。
Substring()返回指定的表達式自特定位置開始,特定長度的字符子串。
我最喜歡用的是IIF(),它按照邏輯表達式的值有一到兩個值。IIF是IF-THEN-ELSE語句的緊湊表達。語法如下:
IIF(expression, if_true, if_false)
通 過該函數(shù),可以建立非常復(fù)雜的過濾字符串。例如,假定你從SQL Server的Northwind數(shù)據(jù)庫中取得Employees表,下列表達式可以選出那些employeeID小于6且lastname為偶數(shù)個字符 和employeeID大于6且lastname為奇數(shù)個字符的員工。
IIF(employeeID0)
預(yù)排視圖
在上面的舉例中,datagrid必須負責(zé)預(yù)排視圖中的數(shù)據(jù)行,以便刷新用戶界面。這個自動機制是.NET
數(shù)據(jù)綁定的產(chǎn)物。Datagrid是通過DataSource屬性來獲取數(shù)據(jù)的數(shù)據(jù)綁定控件。DataView是一個可數(shù)據(jù)綁定的類,可構(gòu)建DataSource屬性的內(nèi)容。
如果你想使用datagrid之外的另一個控件,應(yīng)該怎么辦呢?又如果你不想使用自動數(shù)據(jù)綁定呢?應(yīng)該怎樣預(yù)排視圖中所選的數(shù)據(jù)行呢?
DataView的Table屬性指向相應(yīng)的數(shù)據(jù)表,但DataTable并不保存過濾信息。所以,預(yù)排表中的數(shù)據(jù)注定是不可行的。雖然DataTable和DataView是緊密相聯(lián)的,但它們各自保持獨立,并執(zhí)行獨立的功能。
以下Visual Basic .NET代碼段顯示了如何遍歷視圖中所有的數(shù)據(jù)行,并加入到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(“l(fā)astname”).ToString()& “, ” & dr(“firstName”).ToString()
ListBox1.Items.Add(buf)
Next
正如前面說提到的,DataView是可枚舉的類,因此你可以安全的將它傳給For..Each語句。Count屬性存儲了視圖中數(shù)據(jù)行數(shù),以便在For..Next循環(huán)中使用。
要訪問視圖中某一行,可以使用DataRowView類。DataRowView可表示DataRow的視圖,就像DataView表達DataTable定制的視圖一樣。
總的來說,DataRow最多有四種狀態(tài):default,original,current和proposed。這些狀態(tài)由DataRowVersion枚舉類型設(shè)置,由RowVersion屬性表達。
DataRow的視圖只能是其中某一種狀態(tài)。
數(shù)據(jù)行的默認(default)版本只有當(dāng)其列在構(gòu)造時設(shè)定了默認值時才有。而初始(original)版本是指在最后一次調(diào)用表的AcceptChanges后,從數(shù)劇源中得到數(shù)據(jù)行或快照。當(dāng)前(Current)版本是指當(dāng)前的數(shù)據(jù)行,包括所有當(dāng)時發(fā)生的更新。Proposed狀態(tài)只存在于調(diào)用BeginEdit和EndEdit的編輯過程中。
可以通過訪問DataRow相同的語法訪問DataRowView。這里最重要的屬性叫Item。
排序和其他便捷的特性
DataView支持Sort屬性,可以用來對視圖中的內(nèi)容排序。Sort由用逗號分隔的列名表達式進行排序。通過在任何列名后加ASC或者DESC限定詞,可以使得字段按照上升或者下降的順序排列。如果沒有方向限定詞,默認順序為ASC。
DataView是內(nèi)存中的對象,所以排序在本地進行,無需調(diào)用數(shù)據(jù)庫服務(wù)器。
RowStateFilter是DataView另一有趣的屬性。它可以用任何預(yù)定義的標(biāo)準來過濾DataTable中的內(nèi)容。下表中是DataViewRowState枚舉類型的所有取值:
CurrentRows包括所有未更新的、新的和修改的數(shù)據(jù)行Deleted所有自上次調(diào)用AcceptChanges后刪除的數(shù)據(jù)行ModifiedCurrent所有自上次調(diào)用AcceptChanges后修改過的數(shù)據(jù)行ModifiedOriginal所有自上次調(diào)用AcceptChanges后original版本的數(shù)據(jù)行New所有自上次調(diào)用AcceptChanges后新添加的行OriginalRows返回初始數(shù)據(jù)行,包含unchanged和deleted 的Unchanged所有未更新的數(shù)據(jù)行
如果要操作非連接的數(shù)據(jù),所有更新都在對DataTable調(diào)用AcceptChanges后生效。對單一行的更新在調(diào)用DataRow的AcceptChanges后生效。類似的,這些更新可以通過調(diào)用DataTable或DataRow對象的RejectChanges來取消。
DataView對象還有一些屬性,如AllowEdit,AllowDelete和AllowNew,用來得到或設(shè)定是否允許更新的值。它們的默認值設(shè)為True,允許任何種類的更新。如果在標(biāo)志設(shè)為False時,你想要完成相應(yīng)的更新操作,會有一個運行時錯誤發(fā)生。
DataViewManager類
DataTable對象的DefaultView屬性用來返回一個DataView對象,作為數(shù)據(jù)表中內(nèi)容的默認視圖。它按照自然順序讀取數(shù)據(jù)并顯示表中所有的行,而不使用任何過濾。
theMasterGrid.DataSource = m_ds.Tables(“Employees”).DefaultView
如果需要數(shù)據(jù)特定的視圖,你可以進行排序并/或?qū)efaultView對象直接進行過濾。
m_ds.Tables(“Employees”).DefaultView.Sort = “l(fā)astname”
theMasterGrid.DataSource = m_ds.Tables(“Employees”).DefaultView
DataViewManager類是用來存儲DataSet中所有表的視圖設(shè)置。
可以通過傳遞一個合法的非空的DataSet給類的構(gòu)造函數(shù)來創(chuàng)建DataViewManager
Dim dvm As DataViewManager
dvm = New DataViewManager(m_ds)
也可以通過DataSet對象的DefaultViewManager屬性直接得到:
Dim dvm As DataViewManager = m_ds.DefaultViewManager
重要的是DataViewManager類是同一個DataSet相關(guān)聯(lián)的。下面是另一種可行的方法:
Dim dvm As New DataViewManager()
dvm.DataSet = m_ds
DataViewManager最重要的屬性是DataViewSettings,一個DataViewSetting對象的。
Dim dvs As DataViewSetting
dvs = dvm.DataViewSettings(“Employees”)
dvs.Sort = “l(fā)astname”
DataViewSetting對象包含了表視圖的參數(shù)信息。當(dāng)將數(shù)據(jù)綁定到對數(shù)據(jù)敏感的控件時,使用DataViewManager而不是DataSet或DataTable可以保留你的視圖設(shè)置(過濾和排序字段)
theMasterGrid.DataSource = dvm
theMasterGrid.DataMember = “Employees”
數(shù)據(jù)庫view用法的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫view用法,深入了解數(shù)據(jù)庫view的使用方法,vb.net dataview 的用法的信息別忘了在本站進行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站題目:深入了解數(shù)據(jù)庫view的使用方法(數(shù)據(jù)庫view用法)
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/dpjjdgs.html


咨詢
建站咨詢
