當前位置:首頁 » 編程語言 » sql視圖插入

sql視圖插入

發布時間: 2022-08-08 04:56:39

1. 簡述sql中對視圖進行插入操作,必須具備的條件

視圖必須來源於一個表,
一般行子集視圖都沒問題(行子集視圖就是視圖數據只是過濾了基表的某些行)
如果是列子集視圖,那麼視圖中應該包括基本的關鍵列,例如主鍵, NOT NULL的列等

如果是多表視圖,或列子集視圖(不滿足我上面寫的條件的), 你可以用INSTEAD OF INSERT觸發器來實現

2. 如何用sql語句在視圖直插入記錄

視圖一般來說是即使是一個表生成的也是不能插入的,因為視圖通常不是全表欄位,否則視圖沒意義

3. 簡述SQL中對視圖進行插入操作的視圖中來引用的欄位,必須具備的條件

視圖中的數據只能來自一個表
視圖中必須包含來源表的關鍵欄位

4. sql server中如何添加視圖

可以使用T-SQL語句添加視圖:
CREATE VIEW view_name
AS
<select語句>
IF EXISTS (SELECT * FROM sysobjects WHERE /*檢測是否存在*/
name = 'view_stuInfo_stuMarks')
DROP VIEW view_stuInfo_stuMarks /*刪除視圖*/
GO
CREATE VIEW view_stuInfo_stuMarks /*創建視圖*/
AS
SELECT 姓名=stuName,學號=stuInfo.stuNo,
筆試成績 =writtenExam, 機試成績=labExam,
平均分=(writtenExam+labExam)/2
FROM stuInfo LEFT JOIN stuMarks
ON stuInfo.stuNo=stuMarks.stuNo
GO
SELECT * FROM view_stuInfo_stuMarks /*使用視圖*/
從一個或者多個表或視圖中導出的虛擬表,結構和數據建立在對表的查詢基礎上的。
理論上它可以像普通的物理表一樣使用,例如增、刪、改、查等,修改視圖中的數據實際上是修改原始數據表。
因為修改視圖有許多限制,所以在實際開發中一般視圖僅做查詢使用。

5. sql在視圖中如何插入新的數據

對於 單表的視圖, 插入/修改 數據是沒有問題的。 (只要你不做特別的設置)

對於多表的視圖, 操作的時候,會存在一定的問題。

下面是一個例子:

1> CREATE VIEW v_main_sub AS
2> SELECT
3> test_main.id AS main_id,
4> test_main.value AS main_value,
5> test_sub.id AS sub_id,
6> test_sub.value AS sub_value
7> FROM
8> test_main, test_sub
9> WHERE
10> test_main.id = test_sub.main_id;
11> go

1> SELECT * FROM v_main_sub;
2> go
main_id main_value sub_id sub_value
----------- ---------- ----------- ----------
1 ONE 1 ONEONE
2 TWO 2 TWOTWO

(2 行受影響)

1> UPDATE v_main_sub
2> SET main_value='ONX'
3> WHERE main_id = 1;
4> go

(1 行受影響)

1> UPDATE v_main_sub
2> SET sub_value='ONXONX'
3> WHERE main_id = 1;
4> go

(1 行受影響)

1> DELETE FROM v_main_sub WHERE main_id = 1;
2> go
消息 4405,級別 16,狀態 1,伺服器 GMJ-PC\SQLEXPRESS,第 1 行
視圖或函數 'v_main_sub' 不可更新,因為修改會影響多個基表。

-- 這個觸發器, 只測試輸出, 不刪除數據。
1> CREATE TRIGGER v_main_sub_trigger
2> ON v_main_sub
3> INSTEAD OF DELETE
4> AS
5> DECLARE
6> @main_id INT,
7> @sub_id INT;
8> BEGIN
9> SELECT @main_id=main_id, @sub_id=sub_id FROM deleted;
10>
11>
12> PRINT(@main_id);
13> PRINT(@sub_id);
14> END;
15> go

1> DELETE FROM v_main_sub WHERE main_id = 1;
2> go
1
1

(1 行受影響)
1> DELETE FROM v_main_sub WHERE sub_id = 1;
2> go
1
1

(1 行受影響)

對於多表關聯的視圖, 刪除的時候,需要人為的去判斷
例如當 主表 和 子表,都只有一條記錄的情況下。
無法判斷 本次刪除, 是要刪除掉一個子表的記錄,留下主表的。
還是 主表 子表的數據,一同刪除。

6. sql在視圖中插入數據時通過計算列得出的年齡怎麼插

  • SqlServer中通過出生日期計算年齡可用year函數。步驟如下:有student表,數據如下,其中birthday列為生日列。

7. 如何在sql server資料庫的視圖上插入新的數據

視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在資料庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。
當建立視圖時使用的表中的數據發生了改變後,視圖中的數據也會發生相應的改變,視圖本身是不能執行添加,刪除,修改的!
如果要插入新數據的話,建議使用觸發器,在視圖相對應的各表中插入數據。視圖中自然更新。

8. 創建一個視圖 插入相關數據 SQL

創建數據表
create
table
table_name
(
[column_name]
data_type
constraint,
[column2_name]
data_type
consraint,
[column3_name]
data_type
constraint
)
插入數據
insert
into
table_name([column_name],[column_name1],[column_name2])
values
('something','something','something')
還有很多的東西
比如說修改、刪除表;添加、修改、刪除約束;添加、修改、刪除列等。都是基礎的東西
不是很難

熱點內容
怎麼用紙做豌豆解壓玩具 發布:2022-09-29 04:39:17 瀏覽:732
雲存儲播放時間表 發布:2022-09-29 03:58:31 瀏覽:598
新英朗4缸買哪個配置劃算 發布:2022-09-29 03:51:54 瀏覽:122
紅旗5配置怎麼選 發布:2022-09-29 03:44:21 瀏覽:887
linux安裝maven 發布:2022-09-29 03:29:18 瀏覽:595
吉利星瑞豪華天窗版有什麼功能配置 發布:2022-09-29 03:20:28 瀏覽:822
伺服器固定ip和彈性ip一起用 發布:2022-09-29 02:40:49 瀏覽:510
gpioc語言 發布:2022-09-29 02:34:40 瀏覽:959
h乚c語言 發布:2022-09-29 02:34:39 瀏覽:410
迷你世界體驗服正式服密碼是多少 發布:2022-09-29 02:21:19 瀏覽:419