MySQL的開發規範 資料型別及列屬性

2022-09-18 06:39:22 字數 3705 閱讀 5739

四種主要資料型別:

資料型別的 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...