作者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
1F:推 bernachom:蛮清楚的,谢谢您,市面上有这麽清楚的书可以参考吗QQ? 07/19 00:09
2F:→ TeemingVoid:Multipart name应该都会提到,只是不会写这麽细。 07/19 00:24
3F:推 sheauren:看SQL文件可能比较有机会找到相关的.. 书本很少提到 07/21 11:45