當前位置:首頁 » 數據倉庫 » sql關聯修改資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql關聯修改資料庫

發布時間: 2022-12-09 02:12:30

sql資料庫修改表

1、首先你要保證你的兩個表都有主鍵,或者有關聯欄位。
例如:
表A(id,name,date)
id是主鍵
表B(id,name,date)
id是主鍵
1)導入B數據數據到A表保留date欄位值(確切的說這種情況應該叫利用【B】表數據更新【A】表數據),用下面的sql就可以達到目的:
update
A
set
A.date=(select
B.date
from
B
where
B.id=A.id);
說明:這樣做的話要保證A表和B表都有數據並且id欄位能夠關聯上,而且這樣修改的數據只是關聯上的數據,假設A表中有【id=1】的數據而B表中沒有
【id=1】的數據,那麼A表中【id=1】的數據就不會被修改。
2)如果A表和B表都沒有主鍵的話,那麼尋找一個能夠關聯兩個表數據的欄位(這個欄位可以從一定意義上作為"主鍵"區分表中數據),假設是id和name欄位聯合起來:
update
A
set
A.date=(select
B.date
from
B
where
B.id=A.id
and
B.name=A.name);
說明:在這個更新中更新條目也只限定於能夠關聯上的數據。
3)如果A表中沒有數據只是想把B表中的數據全部插入A表(B表中date欄位的值必須被保留的話)
insert
into
A
select
*
from
B;
說明:在這個語句中,把B表中所有的數據不加修改的全部放入了B表,自然也就包含了date欄位的值不變。
insert
intp
A
select
1,'張三',date
from
B;
說明:在這個語句中,把B表中的date欄位的只保留,id和name欄位分別換成了【1】和【張三】(當然是所有數據的id和name欄位都換了)
2、綜合上面的觀點
1)如果表1沒有數據:insert
into
表1
select
*
from
表2;
2)如果表1中有數據,並且和表2中的數據完全關聯的上的話:
update
表1
set
表1.sj=(select
表2.sj
from
表2
where
表2.欄位X=表1.欄位X
and....);
3)如果表1中有數據,但是表2中只有一部分能夠關聯上,目的是關聯上的更新,關聯不上的插入表1的話:
先:update
表1
set
表1.sj=(select
表2.sj
from
表2
where
表2.欄位X=表1.欄位X
and....);
後:insert
表1
select
*
from
表2
where
表2.關聯欄位X
not
in(select
表1.關聯欄位X
from
表1)
and
表2.關聯欄位Y
not
in(select
表1.關聯欄位Y
from
表1)....
---
以上,希望對你有所幫助。

Ⅱ SQL中如何根據一個欄位查詢兩個表關聯欄位並修改

UPDATE表AA
SETA.欄位1=值1,
A.欄位2=值2,
A.欄位3=值3
WHEREEXISTS(SELECT1
FROM表BB
WHEREA.關聯欄位=B.關聯欄位
ANDA.欄位=值
ANDB.欄位=值
)

Ⅲ sql server 中怎麼修改在兩個表中有關聯的數據

一台伺服器上的兩個不同的
sql
server
資料庫?
還是
兩台伺服器上的,
2個
sql
server
資料庫?
一台伺服器上的兩個不同的
sql
server
資料庫
很簡單
比如你現在是
use
test1
資料庫,建立一個表,叫
testa
然後
use
test2
資料庫,建立一個表,叫
testb
那麼要關聯,就是
查詢的時候,輸入全路徑
例如
select
檢索欄位
from
test1.dbo.testa
testa,
test2.dbo.testb
testb
where
關聯條件
如果是跨伺服器的,需要創建
資料庫鏈接。
鏈接建立好以後,也是和上面的寫法差不多。

Ⅳ sql 幾張表互相關聯 更改一張資料庫信息 相應的更新相關聯的數據

oracle下:
oracle只有級聯刪除,沒有級聯更新(其實是有的,只是沒有on update cascade),所以要實現級聯更新有兩種方法:
一、在約束中定義延遲更新:alter table child_table
add constraint fk_child_parent
foreign key (id)
references parent_table (id)
initially deferred deferrable;
-- initially deferred deferrable; 這是延遲oracle的一致性檢查,通過這個我們可以分別更新主表和子表,然後再提交,這樣就能驗證通過了,有點麻煩,呵呵,還是用觸發器吧
二、通過觸發器實現:
CREATE OR REPLACE TRIGGER ID_TRG AFTER UPDATE ON Section FOR EACH ROW
BEGIN
UPDATE Employee SET 部門=:NEW.部門WHERE 部門=:OLD.部門;
END;

Ⅳ SQL Server資料庫多表關聯如何更新

一條Update更新語句是不能更新多張表的,除非使用觸發器隱含更新。而表的更新操作中,在很多情況下需要在表達式中引用要更新的表以外的數據。我們先來討論根據其他表數據更新你要更新的表

一、MS SQL Server 多表關聯更新
sql server提供了update的from 子句,可以將要更新的表與其它的數據源連接起來。雖然只能對一個表進行更新,但是通過將要更新的表與其它的數據源連接起來,就可以在update的表達式 中引用要更新的表以外的其它數據。
一般形式:
update A SET 欄位1=B表欄位表達式, 欄位2=B表欄位表達式 from B WHERE 邏輯表達式
例如:
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA);

實際更新的操作是在要更新的表上進行的,而不是在from子句所形成的新的結果集上進行的

Ⅵ SQL資料庫問題,為什麼不能修改數據了

有外鍵關聯,關聯表裡有數據,所以不能修改。把關聯數據刪掉就好了,有必要可以在刪除前備份。

Ⅶ SQL資料庫中表與表之間的關聯怎麼建立

1、在資料庫窗口中,單擊「創建」中「表格」中的「表設計」,打開表設計窗口。

Ⅷ 如何使用SQL語句修改表內的數據

修改表中內容

修改用到update語句,語句格式為:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

即 update 員工表 set 部門id=01 where 員工id=0004

SQL聯合主鍵

  • Create Table 表名 (欄位名1 Int Not Null,

  • 欄位名2 nvarchar(13) Not Null Primary Key (欄位名1, 欄位名2),

    欄位名3…………

    欄位名N………… )

(8)sql關聯修改資料庫擴展閱讀

主鍵是資料庫表的一個重要屬性,建立主鍵可以避免表中存在完全相同的記錄,也就是說主鍵在一張表中的記錄值是唯一的。 建立主鍵有兩種方法:一種是在資料庫提供的GUI環境中建立,另一種是通過SQL語句執行建立,下面分別介紹。

  1. 在資料庫提供的GUI環境中建立(以SQL7為例)。輸入表信息後按Ctrl鍵同時選中多行,然後點上面的主鍵按鈕就行了。

  2. 通過SQL語句執行建立。又分兩種,一是在建表語句中直接寫,二是建表之後更改表結構。

    在建表語句中直接寫:

  3. Create Table 表名 (欄位名1 Int Not Null,

欄位名2 nvarchar(13) Not Null Primary Key (欄位名1, 欄位名2),

欄位名3…………

欄位名N………… )

Ⅸ SQL資料庫裡面怎樣設置表與表之間的關聯

你說的關聯是指外鍵不?

SQL Server Management Studio
展開所要設置的表下面的選項,可以新建外鍵。這樣直觀,簡單。
也可以用SQL語句。

Ⅹ SQL語言中把資料庫中兩張表數據關聯起來的語句

1、創建兩張測試表,

create table test_cj(name VARCHAR(20), remark varchar2(20));

create table test_kc(name VARCHAR(20), remark varchar2(20));

2、插入測試數據

insert into test_cj values('xh','cj_1');

insert into test_cj values('kcdh','cj_2');

insert into test_cj values('cj','cj_3');

insert into test_kc values('kcdh','kc_1');

insert into test_kc values('kcm','kc_2');