作者TeemingVoid (曼尼)
看板C_Sharp
標題Re: [問題] 詢問這組SQL為什麼要分SELECT和WHERE兩段
時間Fri Jul 19 00:01:58 2013
※ 引述《bernachom (Terry)》之銘言:
:
: 問題2: ASq1.AppendFormat("SELECT AAA_003 FROM {0}..AAA_003_W ", mCompany);
: ^^^^
: 上面那個{0}右邊有兩個小點,是代表什麼意思呢??
SQL Server 看你用的版本,早期的物件全名是: server.db.owner.object,
SQL Server 2005 版之後改成 instance.db.schema.object,其中的 schema
就想像成是「分類」名稱。
舉例來說,我想查 Yukon 這部 Server 的 mlb 資料庫的 game 資料表:
select * from yukon.mlb.dbo.game
...這樣子的全名有點長,於是--
1. Server 名稱直接省略, 因為連線時一定已指明 Server 或 Instance 了。
2. 往往連線時也會指定或 use 講明 DbName,所以,DbName 可以再省掉。
3. 如果要存取的物件正好分類在目前連線帳號的 Default Schema,那麼名稱
的第三個部分也可省略。
4. 就算不是第三項指出的情形,如果物件歸類在 dbo 這個schema,dbo 也可
以省略不寫,反正東西找不到,SQL Server 最後還是會看看 dbo 這一區。
所以,我們經常就只看到這樣的寫法:
select * from game
如果目前帳號也有權限查 nba 資料庫的資料,指令可以這樣寫:
select * from nba.dbo.game
或者寫成
select * from nba..game
這樣,就是你問到的寫法了。原程式設計師是將 {0} 代換成 mCompany 的值
(也許各公司的資料分放在不同資料庫),.. 只是單純只是省略 schema。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.75.44
推 bernachom:蠻清楚的,謝謝您,市面上有這麼清楚的書可以參考嗎QQ? 07/19 00:09
→ TeemingVoid:Multipart name應該都會提到,只是不會寫這麼細。 07/19 00:24
推 sheauren:看SQL文件可能比較有機會找到相關的.. 書本很少提到 07/21 11:45