顯示具有 SQL Server 標籤的文章。 顯示所有文章
顯示具有 SQL Server 標籤的文章。 顯示所有文章

2012年7月18日 星期三

安裝 SQL Server 2008 的範例資料庫-AdventureWorks

請注意:是 SQL Server 2008 不是 SQL Server 2008 R2
因為要移轉一些資料,所以範例資料庫要重裝
沒想到事過境遷,人事全非啊

SQL Server 2000 用的範例還是NorthWind北風資料庫,還裝便便等你用
SQL Server 2005 用的範例就改AdventureWorks,要自已裝了
(哇哩,我都還沒看懂人家設計北風資料庫的精湛之處…)

SQL Server 2008 用的範例還是AdventureWorks,好險…
SQL Server 2008R2…出了AdventureWorks R2 版本的範例
(哇哩,我還沒看懂人家設計AdventureWorks的精湛之處…)

今個兒就打算到SQL Sever範例資料庫的提供網站下載重裝

不知道什麼時候的事…裡頭AdventureWorks  (SQL Server 2008版本) 的頁面,我找不到了,只有SQL Server 2012和SQL Server 2008R2)
image

SQL Server 2012…
(現在是怎樣…有人的SQL Sever是一直換一直換的嗎?換了SQL要不要Windows Server也要換啊?裁判…可以這樣嗎?)

現在趕緊做紀錄,然後把資料庫範例(version:Samples Refresh 4)給另外存在別的地方才是上上之策
含資料範例檔:AdventureWorks2008_SR4.exe  (備用連結)
只有資料表:SQL2008.AdventureWorksLT2008_Only_Database.zip (備用連結)
安裝完除了資料庫以外,還有附一個sample,預設位置在
C:\Program Files\Microsoft SQL Server\100\Tools\Samples
可以拿來參考使用
image

2011年10月20日 星期四

分享程式開發設計案裡,如何快速建置資料表,提昇你的工作效率

image
這是一個一般程式設計師不願說的秘密…DNOWBA不藏私…這裡分享一下我的建置心得,哈哈,這個開頭有點自以為是,其實也不是什麼太大的秘密,只是我自已開發的心得…以往自已在整個開發的過程裡面,我自已認為最沒有效率的就是這一段:資料設計和實現。

不管是WEB FORM 或是WINDOWS FORM開發案,開發前的資料庫設計或分析完成後,我們有時要將資料庫設計草案提供給客戶;抑或是純綷的程式設計教學,需要把資料表內容呈現給學生…

最早的時候我都是在EXCEL上寫(DNOWBA相信很多人都有這個經驗)。但這有一個壞處就是當我們要實際建置專案時,又得手動在資料庫上面建置一次。

最惱人的地方就是在建置過程中如果要修改哪一個欄位的型別,還要做二次以上…打個比方,如果我要在某個資料表建三個欄位如下圖(別職業病的分析下面的資料欄位設計的好不好,這只是舉例):

欄位名稱 資料型別 允許NULL 註解
ID INT X 自動編號/識別 Identifier
文章內容 varchar(500) X 本文內容
文章回應 varchar(500) V 本文的回應內容
並了讓大家能感受到效率的明顯提昇,我先用以下二個常用的建置資料表的工具讓大家能夠比較一下。

2011年10月18日 星期二

文字資料要用哪種資料型別儲存char, varchar, nchar, nvarchar

「字元」這件事情我們先要有一個觀念,就是中文字和英文字,每個字(中文是單字、英文是字母)所佔的位元是不同的。

image

英文一個字母,佔1個byte。廢話,當初系統的設計就是先做英文字母符號和0-9等國際通用符號。中文則因為1byte(共8碼)的二進位編碼根本不夠中國字使用,所以改成16碼二進位編碼,所以中文每個字比英文字母多佔一倍的儲存空間。
外國人使用習慣上直接把byte稱做是字元,因為1字元(1 個英文字母)就是1byte,byte其實是8個bit組成的二進位制編碼;在中國字可千萬不要稱為字元,而要稱為一個word…在國外定義1word=2byte…所以在建立資料庫資料表時,可千萬要算準來,比方說你限定一篇回應文章最多500字,這500字是「中國字」還是「英文字元」,如果是500字元的話,那麼其實就是250個中文字…

如果你還是不大懂bit、byte,建議看看下面的說明:
電腦的資料是使用二進位的0或1,每一個0或1是最小的儲存單位,也就是位元。
將8個位元組合成一個位元組(byte),我們通常將英語系或歐語系的字母、0~9的數字或符號等能夠使用一個位元組來表示的資料稱為字元(character) 
而中文字等需要使用兩個位元組(16位元)才能表示的資料則稱為字組(word)。

結論:
所以它們之間的關系為:
bit 可以代表0,1
1byte = 8 bits
1word = 2 bytes = 16bits
1doubleword = 2 words = 4bytes = 32bit

額外一提:其他國家的國字所佔用的位元數是多少我沒有研究
不過可以很確定的事,中文字佔的空間是英文字的二倍
所以買一些以英文為主的3c產品(例如手機),記憶體容量的部分進了台灣市場後會發現不太給力…

好啦,進入主題,在建立資料庫的時候,文字資料要用哪種資料型別儲存????

資料型別

◎精確數值
使用整數資料的 Exact-number 資料類型。
資料類型 範圍 儲存體
bigint -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)
通常是在整數值可能超過 int 資料類型所支援的範圍時使用。只有當參數運算式是 bigint 資料類型時,函數才會傳回 bigint。
8 位元組
int -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)
是 SQL Server 中的主要整數資料類型

4 位元組
smallint -2^15 (-32,768) 到 2^15-1 (32,767) 2 位元組
tinyint 0 到 255 1 位元組
一種整數資料類型,其值有 1、0 或 NULL 幾種
資料類型 範圍 儲存體
bit 只佔用一個位元,且不允許存放 NULL 值
如果資料表中的 bit 資料行小於或等於 8 個,這些資料行會儲存為 1 個位元組。如果有 9 到 16 個 bit資料行,則儲存為 2 個位元組,依此類推。字串值 TRUE 和 FALSE 可以轉換為 bit 值:TRUE 會轉換成 1,而 FALSE 會轉換成 0。

1 位元組
具有固定有效位數和小數位數的數值資料類型。
資料類型 範圍 儲存體
DECIMAL[(p[,s])] 可儲存的值介於 -1038+1 與 1038-1 之間;p 用來定義小數點兩邊可以被儲存的有效位數總數目,而 s 代表小數點右邊的小數位數(s < p);p的預設值為 18 而 s 的預設值為0 17位元組
(最大)
NUMERIC[(p[,s])] 與 DECIMAL[(p[,s])] 功能相同
代表金融或貨幣值的資料類型
資料類型 範圍 儲存體
money -922,337,203,685,477.5808 到 922,337,203,685,477.5807 8 位元組
smallmoney - 214、748.3648 到 214、748.3647 4 位元組
◎近似數值
資料類型 範圍 儲存體
float [ (n) ]
- 1.79E+308 到 -2.23E-308、0 及 2.23E-308 到 1.79E+308
其中 n 是用來儲存科學記號標記法 float 數之尾數的位元數目,因此,它規定了有效位數和儲存體大小。如果指定 n,它必須是在 1 和 53 之間的值。n 的預設值是 53。
8位元組
(最大)
real - 3.40E + 38 到 -1.18E - 38、0 及 1.18E - 38 到 3.40E + 38 4 位元組
◎日期和時間
資料類型 範圍 儲存體
date 格式是YYYY-MM-DD
範圍西元 1 年 1 月 1 日到西元 9999 年 12 月 31 日
3 個位元組
time 格式是hh:mm:ss[.nnnnnnn]
範圍00:00:00.0000000 到 23:59:59.9999999
5個位元組
datetime 格式是YYYY-MM-DD hh:mm:ss
日期範圍1753 年 1 月 1 日到 9999 年 12 月 31 日
時間範圍00:00:00 到 23:59:59.997
8 位元組
datetime2 格式是YYYY-MM-DD hh:mm:ss
日期範圍 1 年 1 月 1 日到日到 9999 年 12 月 31 日
時間範圍00:00:00 到 23:59:59.9999999
8 個位元組
datetimeoffset 格式是YYYY-MM-DD hh:mm:ss
日期範圍 1 年 1 月 1 日到日到 9999 年 12 月 31 日
時間範圍00:00:00 到 23:59:59.9999999
時差位移範圍-14:00 到 +14:00
10個位元組
smalldatetime 格式是YYYY-MM-DD hh:mm:ss
日期範圍1900 年 1 月 1 日到 2079 年 6 月 6 日
時間範圍00:00:00 到 23:59:59
4個位元組
◎字元字串
資料類型 範圍 儲存體
char [ ( n ) ] n 必須是 1 到 8,000 的值。 1字元=1位元組
varchar [ ( n | max ) ] 可變長度。n 可以是 1 - 8,000。max 表示最大是 2^31-1 位元組。 1字元=1位元組
text 可變長度非 Unicode 資料,最大是 2^31-1 (2,147,483,647) 個字元。 1字元=1位元組
◎Unicode 字元字串
資料類型 範圍 儲存體
nchar [ ( n ) ] n 字元的固定長度 Unicode 字元資料。n 必須是 1 到 4,000 的值。 1word =2位元組
nvarchar [ ( n | max ) ] 可變長度,Unicode 字元資料。n 可以是 1 到 4,000 的值。
max 表示最大儲存體大小是 2^31-1 位元組。
1word =2位元組
ntext 可變長度 Unicode 資料,最大長度為 2^30 - 1 (1,073,741,823) 個字元 1word =2位元組
◎二進位字串
資料類型 範圍 儲存體
binary [ ( n ) ] 固定長度的二進位資料,n 代表 1 到 8,000 的值。 1字元=1位元組
varbinary [ ( n | max) ] 可變長度二進位資料。n 是 1 到 8,000 的值。max 上限是 2^31-1 位元組。 1字元=1位元組
image 可變長度的二進位資料,上限是0 到 2^31-1 (2,147,483,647) 位元組 1字元=1位元組
Related Posts Plugin for WordPress, Blogger...
// Dnow Function