如何使用sql語句更改檢視左聯右連關係 mssql

2021-07-03 08:13:52 字數 4676 閱讀 2030

1樓:匿名使用者

這樣嗎?

select     t1.id....***xx

from        table2  as t2  left outer join  table1 as t1

on t1.merchantid = t2.merchantid

left outer join  table3  as t3 on t3.submerchantid = t1.submerchantid

還是?select     t1.id....***xx

from         table1 as t1  left outer join  table2  as t2 on t1.merchantid = t2.merchantid

left outer join  table3  as t3 on t3.submerchantid = t1.submerchantid

2樓:王培帥

倆表掉個就行,select注意顯示欄位前面加好別名

sql server中,修改檢視名字的sql語句 5

3樓:千鋒教育

sql server中修改檢視名字的sql語句如下:

1、rename 原試圖名 to 現試圖名;

2、輸入下面語句即可完成:

create view 檢視名

as[with check option]

4樓:匿名使用者

重新命名exec sp_rename v_學院 ,'v_學院男生'go

5樓:匿名使用者

sp_rename 'v_學院' ,'v_學院男生'

6樓:匿名使用者

exec sp_rename 'v_學院' ,'v_學院男生'

sql server2008中無法使用資料庫關係圖

7樓:匿名使用者

1. 概述觸發器是一種特殊的儲存過程,它不能被顯式地呼叫,而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地啟用。 所以觸發器可以用來實現對錶實施複雜的完整性約束。

2. 觸發器的分類sql server2000提供了兩種觸發器:「instead of」 和「after」 觸發器。

一個表或檢視的每一個修改動作(insert、update和delete)都可以有一個「instead of」 觸發器,一個表的每個修改動作都可以有多個「after」觸發器。

2.1 「instead of」觸發器「instead of」觸發器在執行真正「插入」之前被執行。除表之外,「instead of」 觸發器也可以用於檢視,用來擴充套件檢視可以支援的更新操作。

「instead of」觸發器會替代所要執行的sql語句,言下之意就是所要執行sql並不會「真正執行」

?123456789alter trigger trigger_學生_deleteon 學生instead of deleteasbegin    select 學號, 姓名 from deletedend delete from 學生 where 學號 = 4上例中定義了「trigger學生_delete」觸發器,該觸發器從「delete」表中列印出所要刪除的學生.在執行「delete」操作後,會發現「學號 = 4」的學生並未被刪除, 原因在於「trigger學生delete」替代了所要執行的「delete from 學生 where 學號 = 4」語句,而在「trigger學生_delete」中並未真正刪除學生。

2.2 「after」觸發器「after」觸發器在insert、update或deleted語句執行之後被觸發。「after」觸發器只能用於表。

「after」觸發器主要用於表在修改後(insert、update或delete操作之後),來修改其他表

3. inserted和deleted表sql server為每個觸發器都建立了兩個專用表:inserted表和deleted表。

這兩個表由系統來維護,它們存在於記憶體中而不是在資料庫中,可以理解為一個虛擬的表。

這兩個表的結構總是與被該觸發器作用的表的結構相同。

觸發器執行完成後,與該觸發器相關的這兩個表也被刪除。

deleted表存放由於執行delete或update語句而要從表中刪除的所有行。

inserted表存放由於執行insert或update語句而要向表中插入的所有行。

對錶的操作inserted邏輯表deleted邏輯表增加記錄(insert)存放增加的記錄無刪除記錄(delete)無存放被刪除的記錄修改記錄(update)存放更新後的記錄存放更新前的記錄4. 觸發器的執行過程如果一個insert﹑update或者delete語句違反了約束,那麼這條sql語句就沒有執行成功,因此「after」觸發器也不會被啟用。

「instead of」 觸發器可以取代激發它的操作來執行。它在inserted表和deleted表剛剛建立,其它任何操作還沒有發生時被執行。因為「instead of」 觸發器在約束之前執行,所以它可以對約束進行一些預處理。

5. 建立觸發器?1234create trigger trigger_name on  as 相應t-sql語句6.

修改觸發器:?1234alter trigger trigger_name on  as 相應t-sql語句7. 刪除觸發器:?

1drop trigger trigger_name8. 檢視資料庫中已有觸發器:8.

1 檢視資料庫中所有觸發器?1select * from sysobjects where xtype='tr'8.2 檢視單個觸發器?

1exec sp_helptext '觸發器名'9. 「instead of」相關示例:兩張表:

學生(學號 int, 姓名 varchar)、借書記錄(學號 int, 圖書編號 int)

實現功能:在刪除學生表時,如果該學生仍有借書記錄(未還)則不能刪除

?12345678alter trigger trigger_學生_deleteon 學生instead of deleteasbegin    if not exists(select * from 借書記錄, deleted where 借書記錄.學號 = deleted.

學號)        delete from 學生 where 學生.學號 in (select 學號 from deleted)end10. 「after」觸發器10.

1 在「訂單」表中建立觸發器,當向「訂單」表中插入一條訂單記錄時,檢查「商品」表的貨品狀態「狀態」是否為1(正在整理),則不能往「訂單」表加入該訂單。?12345678910create trigger trigger_訂單_inserton 訂單after insertas    if (select 狀態 from 商品, inserted where 商品.pid = inserted.

pid)=1     begin        print 'the goods is being processed'        print 'the order cannot be committed'        rollback transaction --回滾,避免加入     end該示例中「pid」為商品編碼

該示例的if判斷嚴格來講是不準確的,因為「訂單」表如果每次插入一條記錄,該判斷沒有問題;如果一次插入多條記錄,則「select 狀態」返回的是多行。

10.2 在「訂單」表建立一個插入觸發器,在新增一條訂單時,減少「商品」表相應的貨品記錄中的庫存。?1234567create trigger trigger_訂單_insert2on 訂單after insertas    update 商品 set 數量 = 數量 - inserted.

數量    from 商品, inserted     where 商品.pid = inserted.pid10.

3 在「商品」表建立刪除觸發器,實現「商品」表和「訂單」表的級聯刪除。?12345create trigger goodsdelete trigger_商品_deleteon 商品after deleteas    delete from 訂單 where 訂單.pid in (select pid from deleted)10.

4 在「訂單」表建立一個更新觸發器,監視「訂單」表的「訂單日期」列,使其不能被「update」.?123456789create trigger trigger_訂單_updateon 訂單after updateas    if update(訂單日期)     begin        raiserror('訂單日期不能手動修改',10,1)         rollback transaction    end10.5 在「訂單」表建立一個插入觸發器,保證向「訂單」表插入的貨品必須要在「商品」表中一定存在。?

123456789create trigger trigger_訂單_insert3on 訂單after insertas    if (select count(*) from 商品, inserted where 商品.pid = inserted.pid)=0     begin        print '商品不存在'        rollback transaction    end10.

6 「訂單」表建立一個插入觸發器,保證向「訂單」表插入的貨品資訊要在「訂單日誌」表中新增?12345alter trigger trigger_訂單_inserton 訂單 for insertas    insert into 訂單日誌 select inserted.id, inserted.

pid,inserted.數量 from inserted

如何使用SQL語句實現如下更新,如何使用SQL語句實現如下更新?

如果是sqlserver可以這樣實現 先給你說思路,首先用到亂序排列,然後用到分割槽函式select from select row number over partition by staffno order by patindex substring grade,1,1 高,中,初 id,fro...

c中如何使用in傳遞sql語句引數

傻,不會變通,直接用select from table where id in a1,a2,a3.明白了嗎?也可以把id拆分出來,既然是id拆分出來以後全部轉成數字,再重新組合,就不用引數了,也不會被注入了。不可以,in使用引數時會強制轉換引數型別與條件欄位一致,不支援構造字串 如果欄位本身為var...

如何在sql語句中使用保留字

在sql語句中,有些特殊字元,是sql保留的。比如 等。我們可以先看看它們的用法。當需要查詢某資料時,加入條件語句,或著當你需要insert記錄時,我們用 來將字元型別的資料引起來。比如 select from customers where city london 當表的名字或列的名字中,含有空格...