用檢視修改資料庫,SQL資料庫裡是否可以通過檢視更改表中的資料

時間 2022-11-26 01:50:05

1樓:匿名使用者

可以,你用的是oracle還是sql server,可以參考他們的語法文件。oracle的語法是create view replace 檢視名。

2樓:匿名使用者

一般不建議直接對檢視進行非查詢操作。

檢視是否支援這些操作,還要看檢視的具體定義,就是對把對檢視的操作能無歧義的解析為對基表的操作(理論上),更新才是被支援的。

sql資料庫裡是否可以通過檢視更改表中的資料?

3樓:慕容暖沁

對於沒有複雜處理的 單錶 檢視, 是可以 update 的。

例如這樣的檢視:

create view v_1 as select * from 某錶。

但是假如你的檢視, 是單錶的, 帶統計的, 那恐怕是不能 直接 update 了。

例如這樣的檢視:

create view v_2 as select id, count(*)as num from 某錶--前面是單錶的, 下面說多表的 --

對於2張表的,假如你的查詢裡面, 這2張表是 一對一的關係。 且檢視裡面, 包含了主鍵,那麼是可以 update 的。

例如下面這樣的檢視:

create view temp_view as

select

as t1name, as t1age, as t2name, as t2age

fromt1, t2

然後直接更新檢視。

update temp_view set t1age = t2age;

完整的例子, 可參考:

但是假如你的檢視裡面的 2個表, 不是一一對應的。

或者是帶了 sum / count 等統計函式的, 那麼可能是沒辦法更新了。

sql server資料庫中 是否可以對檢視進行修改刪除

4樓:匿名使用者

特定的分割槽可以。

在下列情況中,檢視被視為可更新的分割槽檢視: 檢視是一組 select 語句,這些語句的結果集通過 union all 語句組合為乙個結果集。每個 select 語句引用乙個 sql server 基表。

該錶可以是本地表,也可以是使用 4 部分名稱、openrowset 函式或 opendatasource 函式引用的鏈結表(不能使用 opendatasource 或 openrowset 函式指定直接傳遞式查詢)。

insert 語句通過分割槽檢視將資料新增到成員表中。insert 語句必須遵守下列規則: 所有列必須包含在 insert 語句中,即使基表中的列可能為 null 或在基表中定義了 default 約束。

不能在 insert 語句的 values 子句中指定 default 關鍵字。

insert 語句提供的值必須符合在乙個成員表的分割槽列上定義的 check 約束邏輯。

如果乙個成員表包含具有標識屬性的列,則不能使用 insert 語句。

如果乙個成員表包含 timestamp 列,則不能使用 insert 語句。

如果存在具有同一檢視或任一成員表的自聯接,則不能使用 insert 語句。 update 語句通過分割槽檢視在乙個或多個成員表中修改資料。update 語句必須遵守下列規則:

update 語句不能在 set 子句中將 default 關鍵字指定為值,即使列在相應的成員表中定義了 default 值。

不能更改具有標識屬性的列的值;不過可以更新其它列。

如果列中包含 text、image 或 ntext 資料,則不能更改 primary key 的值。

如果基表中包含 timestamp 列,則不能進行更新。

如果存在具有同一檢視或成員表的自聯接,則不能進行更新。

不能在 update 語句的 set 子句中指定 default 關鍵字。 delete 語句通過分割槽檢視在乙個或多個成員表中刪除資料。delete 語句必須遵守如下規則:

如果存在具有同一檢視或任一成員表的自聯接,則不能使用 delete 語句。

對sql檢視進行修改時是否會改變基本資料表資料

5樓:允越

會的,修改檢視會修改底層基表的資料,另外檢視一般只做查詢不做增刪改的操作。檢視的目的通常是從優點考慮的,乙個是安全(敏感字段),第二是高效,第三是可以定製化資料(如多表查詢)。

6樓:匿名使用者

會的。檢視只是資料庫在磁碟上的乙個縮小範圍的邏輯影像,任何修改都會修改到基本資料表的。

7樓:逝回憶

不會,檢視是虛表,不會影響基本表。

8樓:網友

一般情況下,檢視不會對基本表的資料進行修改,實質上檢視只是個虛擬的表,就是從多個基本表上查詢出需要的資訊。

怎麼使用檢視在資料庫中新增資料

9樓:智者總要千慮

檢視是乙個虛擬表,其內容由查詢定義。同真實的表一樣,檢視包含一系列帶有名稱的列和行資料。但是,檢視並不在資料庫中以儲存的資料值集形式存在。

行和列資料來自由定義檢視的查詢所引用的表,並且在引用檢視時動態生成。

當建立檢視時使用的表中的資料發生了改變後,檢視中的資料也會發生相應的改變,檢視本身是不能執行新增,刪除,修改的!

如果要插入新資料的話,建議使用觸發器,在檢視相對應的各表中插入資料。檢視中自然更新。

如何修改sql資料庫中表及儲存過程和檢視的創

10樓:折柳成萌

**如下:

exec sp_rename '表名。[原列名]',新列名', column'

transact-sql 參考。

sp_rename

更改當前資料庫中使用者建立物件(如表、列或使用者定義資料型別)的名稱。

語法sp_rename [ objname = object_name' ,newname = new_name'

[ ,objtype = object_type' ]

引數[@objname =]object_name'

是使用者物件(表、檢視、列、儲存過程、觸發器、預設值、資料庫、物件或規則)或資料型別的當前名稱。如果要重新命名的物件是表中的一列,那麼 object_name 必須為 形式。

如果要重新命名的是索引,那麼 object_name 必須為 形式。object_name 為 nvarchar(776) 型別,無預設值。

[@newname =]new_name'

是指定物件的新名稱。new_name 必須是名稱的一部分,並且要遵循識別符號的規則。newname 是 sysname 型別,無預設值。

[@objtype =]object_type'

是要重新命名的物件的型別。object_type 為 varchar(13) 型別,其預設值為 null,可取下列值。

值 描述。column 要重新命名的列。

database 使用者定義的資料庫。要重新命名資料庫時需用此選項。

index 使用者定義的索引。

object 在 sysobjects 中跟蹤的型別的專案。例如,object 可用來重新命名約束(check、foreign key、primary/unique key)、使用者表、檢視、儲存過程、觸發器和規則等物件。

userdatatype 通過執行 sp_addtype 而新增的使用者定義資料型別。

求oracle修改資料庫欄位長度sql

2個辦法 1.使用備份表 a.create table test as select from a b.drop table a c.create table a 將ddd欄位改為char 20 d.insert into a select from test e.drop table test2....

怎麼用mysql front修改資料庫密碼

修改當前登入使用者的密碼 也就是修改自己的密碼 mysql set password password test query ok,0 rows affected 0.00 sec mysql select host,user,password from mysql.user host user p...

如何用php修改資料庫中的資料

舉例如下 建立userinfo update.php頁面用於查詢使用者資訊,先顯示資訊,在修改 先通過get獲取使用者編號查詢使用者資訊 sql select from user info where user id get userid result mysql query sql,con if ...