四種主要資料型別:
資料型別的 abc 要素:
brief(簡潔)
complete(完整)
使用數值資料型別時的注意事項:
– 資料型別所表示的值的範圍
– 列值所需的空間量
– 列精度和範圍(浮點數和定點數)
• 數值資料型別的類:
– 整數:整數
– 浮點數:小數
– 定點數:精確值數值
– bit:位欄位值類型別
說明整數
tinyint
極小整數資料型別(0-255)
整數smallint
較小整數資料型別(-2^15 到2^15-1 )
整數mediumint
中型整數資料型別
整數int
常規(平均)大小的整數資料型別(-2^31 到2^31- 1)
整數bigint
較大整數資料型別(-2^63到2^63-1 )
浮點數float
小型單精度(四個位元組)浮點數
浮點數double
常規雙精度(八個位元組)浮點數
定點數decimal
包含整數部分、小數部分或同時包括二者的
精確值數值
bitbit
位字段值
• 表示給定字符集中的乙個字母數字字串行
• 用於儲存文字或二進位制資料
• 幾乎在每種程式語言中都有實現
• 支援字符集和整理
• 屬於以下其中一類
– 文字:真實的非結構化字串資料型別
– 整數:結構化字串型別類型別
說明文字
char
固定長度字串,最多為 255 個字元
文字varchar
可變長度字串,最多為 65,535 個字元
文字tinytext
可變長度字串,最多為 255 個字元
文字text
可變長度字串,最多為 65,535 個字元
文字mediumtext
可變長度字串,最多為 16,777,215 個字元
文字longtext
可變長度字串,最多為 4,294,967,295 個 字元
整數enum
由一組固定的合法值組成的列舉
整數set
由一組固定的合法值組成的集
char和varchar的對比:
char:效能比較高,但是定義多大長度就會直接占用多大長度,比較費空間
varchar: 效能稍微差一些,會動態調整占用長度,比較省空間。
mysql一般不建議儲存太長的字串,如果資料量比較大,不利於索引的掃瞄。
enum使用的也比較多,效能高於char和varchar,比如: create table stu (id int, name varchar(20), enum ('male','female'));
型別格式
示例date
yyyy-mm-dd
2006-08-04
time
hh:mm:ss[.uuuuuu]
12:59:02.123456
datetime
yyyy-mm-dd hh:mm:ss[.uuuuuu]
2006-08-04
12:59:02.123
timestamp
yyyy-mm-dd hh:mm:ss[.uuuuuu]
2006-08-04 12:59:02.12
year
yyyy
2006
datetime 和 timestamp之間建議選擇datetime
位元組序列
– 二進位制位按八位分組
• 儲存二進位制值,例如:
– 編譯的電腦程式和應用程式
– 影象和聲音檔案
• 字元二進位制資料型別的類:
– 二進位制:固定長度和可變長度的二進位制字串
– blob:二進位制資料的可變長度非結構化集合類型別
說明二進位制
binary
類似於 char(固定長度)型別,但儲存的是 二進位制位元組字串,而不是非二進位制字串
二進位制varbinary
類似於 varchar(可變長度)型別,但儲存的是二進位制 位元組字串,而不是非二進位制字串
blob
tinyblob
最大長度為 255 個位元組的 blob 列
blob
blob
最大長度為 65,535 個位元組的 blob 列
blob
mediudmblob
最大長度為 16,777,215 個位元組的 blob 列
blob
longblob
最大長度為 4,294,967,295 個位元組的 blob 列
資料型別設定
例 1:列宣告
create table people ( id int, first_name char(30), last_name char(30) );
例 2:不允許負值和未知值
create table people ( id int unsigned not null, first_name char(30), last_name char(30) );
列屬性的類別:
• 數值:適用於數值資料型別(bit 除外)
• 字串:適用於非二進位制字串資料型別
• 常規:適用於所有資料型別
據型別屬性
說明數值
unsigned
禁止使用負值
僅整數auto_increment
生成包含連續唯一整數值的序列
字串character set
指定要使用的字符集
字串collate
指定字符集整理
字串binary
指定二進位制整理
全部*null 或 not null
指示列是否可以包含 null 值
全部default
如果未為新記錄指定值,則為其提供預設值
create table student(id int not null primary key auto_increment); create table student1(id int not null primary key auto_increment,name varchar(20)) charset utf8; create table teacher(id int not null ,name varchar(20) not null); create table teacher1(id int not null ,name varchar(20) not null,beizhu varchar(20) not null default "ok");
primary key 主鍵:非空、唯一
unique:唯一
資料型別的字符集用法
選擇合適的資料型別
具體如何選擇資料型別:
考慮哪些資料型別和字符集可以最大限度地減少儲存和磁碟 i/o。
• 使用固定長度資料型別:
– 如果儲存的所有字串值的長度相同
• 使用可變長度資料型別:
– 如果儲存的字串值不同
– 對於多位元組字符集
• 對於頻繁使用的字元,使用占用空間較少的多位元組字符集。
– 使用基本多文種平面 (basic multilingual plane, bmp) 之外的其他 unicode 字符集。
編碼規範資料型別拓展
pep 8 style guide for python code python pep8 編碼規範中文版 當 不符合pep8規範時,下方會出現波浪線。如 上方空行過多,達到3行 逗號後面沒有留空格 與 相矛盾的注釋比沒有注釋還糟糕,當 更改時,優先更新對應的注釋!注釋應該是完整的句子。如果乙個注釋...
Mysql 規範資料設計
當資料庫比較複雜的時候,我們就需要設計了 糟糕的資料庫設計 良好的資料庫設計 軟體開發中關於資料庫的設計 設計資料庫的步驟 個人部落格 標識實體 把需求落地到每個字段 標識實體 之間的關係 為什麼需要資料規範化?刪除異常 三大正規化 了解 第一正規化 1nf 原子性 保證每一列不可再分 第二正規化 ...
mysql的資料型別及使用
無論是在小得可憐的免費資料庫空間或是大型電子商務 合理的設計表結構 充分利用空間是十分必要的。這就要求我們對資料庫系統的常用資料型別有充分的認識。下面我就將我的一點心得寫出來跟大家分享。一 數字型別 數字型別按照我的分類方法分為三類 整數類 小數類和數字類。我所謂的 數字類 就是指decimal和n...