<<資料表的結構>>
要資料表能夠存放資料, 首先要定義資料表的規格, 所謂的規格就是決定資料表中有幾個存放資料的欄位, 還有這些欄位存放資料時的資料型態、資料長度…等限制規定。<<<欄位的命名>>>
每張資料表可有多個欄位, 每個欄位負責存放不同類型的資料, 為了辨識這些欄位, 所以必須為資料表中的欄位訂立一個識別名稱, 命名基本原則如下:<<<欄位的資料型態與儲存大小>>>
在MySQL 中提供了多種資料型態:<<<<數值型態(Numeric Types)>>>>
資料類型
|
儲存大小
|
資料範圍
|
TINYINT[(M)]
|
1位元組
|
有正負號為 -128 to 127
正負號為 0 to 255
|
SMALLINT[(M)]
|
2位元組
|
有正負號為 -32768 to 32767
無正負號為 0 to 65535
|
MEDIUMINT[(M)]
|
3位元組
|
有正負號為 -8388608 to 8388607
無正負號為 0 to 16777215
|
INT[(M)]
|
4位元組
|
有正負號為 -2147483648 to
2147483647
無正負號為 0 to 4294967295
|
INTERGER[(M)]
|
4位元組
|
與INT ODBC 兼容使用
|
BIGINT[(M)]
|
8位元組
|
有正負號為
-9223372036854775808 to 9223372036854775807
無正負號為 0 to 18446744073709551615
|
FLOAT[(M,D)]
PRECISION |
(4):4位元組
(8):8位元組
|
FLOAT(4)->FLOAT(單精準)
FLOAT(8)->DOUBLE(雙精準) |
FLOAT[(M,D)]
|
4位元組
|
-3.402823466E+38 to
-1.175494351E-38及1.175494351E-38 to 3.402823466E+38
|
DOUBLE[(M,D)]
|
8位元組
|
-1.7976931348623157E+308 to
-2.2250738585072014E-308
2.2250738585072014E-308 to 1.7976931348623157E+308 |
DOUBLE[(M,D)]
PRECISION |
8位元組
|
同DOUBLE
|
REAL[(M,D)]
|
8位元組
|
同DOUBLE
|
DECIMA[(M,D)]
|
X位元組
|
最大值同DOUBLE 實際範圍要看m及d
|
NUMERIC[(M,D)]
|
同DECIMAL
|
同DECIMAL
|
上表中字母代號意義:
- M:最大的顯示尺寸, 最大的值為 255 。
- D:適用於浮點類型, 用於指出跟隨在十進制小數點後的數碼的數量, 最大值是30, 但不可大於M-2。
- BIGINT[(M)]:當兩個參數是INTEGER值時, 其+、-和*(加、減、乘法)將使用BIGINT運算;所有算術運算應用有符號的BIGINT或DOUBLE值完成, 除了函數外, 不應使用大於9223372036854775807(63位)的有符號BIGINT。
- FLOAT[(M,D)]:一個單精準浮點數值, 不能沒有正負號。允許的值是-3.402823466E+38到-1.175494351E-38, 0 和1.175494351E-38到3.402823466E+38, M是顯示寬度而D是小數的位數。
- DOUBLE[(M,D)] :一個倍精準浮點數值不能無符號, 允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308, M是顯示寬度而D是小數位數。
<<<<字串型態(String Types)>>>>
資料型態
|
儲存大小
|
資料範圍
|
CHAR (M)
|
M 個位元組
1<=M<=255
|
M為指定的資料長度
M由1到255字元
|
VARCHAR
(M)
|
L+1 個位元組
L<=M1<=M<=255
|
資料長度<=M, M由1到255字元
|
TINYTEXT、TINYBLOB
|
L+1個位元組
L<2^8
|
最大長度255字元(2^8-1)
|
TEXT、 BLOB
|
L+2個位元組
L<2^16
|
最大長度65535字元(2^16-1)
|
MEDIUMTEXT、MEDIUMBLOB
|
L+3個位元組
L<2^24
|
最大長度16777215字元(2^24-1)
|
LONGTEXT、LONGBLOB
|
L+4個位元組
L<2^32
|
最大長度4294967295字元(2^32-1)
|
ENUM
|
1 or 2個位元組
|
最大有65535種值
|
SET
|
1,2,3 to 8 byte
|
最大有64個值
|
- Char(M):用來儲存固定長度且非Unicode的字元資料, 一般用來儲存固定長度的資料, 例如身分證字號, 設定為Char(M)的欄位其使用的空間大小就是M個位元組, 當輸入的資料長度未達指定的M個位元組時, 將會在資料後面補上空白字元(Space)直到該欄位設定的最大長度, 當值被檢索時, 空格尾部(資料後面補上的空白字元)會被刪除;Char值會根據預設字元集以大小寫不區分的方式進行排序和比較。
- varChar(M):用來儲存非固定長度且非Unicode的字元資料, 設定為Char(n)的欄位其使用的空間大小並非就是M個位元組, 使用的空間大小視輸入的資料長度而, 當輸入的資料長度未達指定的M個位元組時, 不會在資料後面補上空白字元(Space), 而當輸入的資料長度大於指定的M個位元組時, 則多餘的部份將被截除;varChar的長度為實際資料長度外加一個位元組記錄長度;當值被檢索時, 空格尾部(資料後面補上的空白字元)會被刪除;varChar值會根據預設字元集以大小寫不區分的方式進行排序和比較。
<<<<日期時間型態(Date and Time Types)>>>>
資料型態
|
儲存大小
|
資料範圍
|
DATE
|
3位元組
|
'
格式為YYYY-MM-DD
|
DATETIME
|
8位元組
|
'1000-01-01
00:00:00' 到
'9999-12-31
23:59:59'
|
TIMESTAMP
|
4位元組
|
'1970-01-01
00:00:00' 到 2037年
|
TIME
|
3位元組
|
'-838:59:59' 到 '838:59:59'格式為HH:MM:SS
|
YEAR
|
1位元組
|
1901到2155及0000
格式為YYYY
|
- DATE:用在僅需要日期值時, 沒有時間部分, 以'YYYY-MM-DD'格式顯示DATE值, 支援的範圍是'1000-01-01'到'9999-12-31'。
- DATETIME:用在需要同時包含日期和時間資訊的值時, 以'YYYY-MM-DD HH:MM:SS'格式顯示DATETIME值, 支援的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
- TIMESTAMP:自動提取系統當前的日期和時間標記, 特別適用INSERT或UPDATE時資料記錄的操作, TIMESTAMP值可以從1970的某時的開始一直到2037年, 精度為一秒, 其值以數字顯示。
- YEAR:以YYYY格式顯示YEAR值, 其範圍是1901到2155。
YEAR值能用多種格式指定:
- 範圍在'1901'到'2155'的一個4位字串。
- 範圍在1901到2155的一個4位數字。
- 範圍在'00'到'99'的一個2位字串, 在'00'到'69'範圍的值被變換到在2000到2069範圍的YEAR值, '70'到'99'1970範圍的值被變換到1999的YEAR值。
- 範圍在'00'到'99'的一個2位數字, 在'00'到'69'範圍的值被變換到在2000到2069範圍的YEAR值, '70'到'99'1970範圍的值被變換到1999的YEAR值, 但不能直接指定零作為一個數字並且把它解釋為2000。
- 可接受函數的回傳值, 例如NOW()函數。
沒有留言:
張貼留言