小貝_mysql建表以及列屬性,小貝_mysql列屬性
mysql建表以及列屬性簡要:
一、建表原則
二、詳細的列屬性說明
一、建表原則
建表: 其實就是聲明列的過程,資料最終是以檔案的形式放在硬碟(記憶體)
列: 不同的列類型占的空間不一樣. 選列的原則: 夠用,不浪費
二、列類型以及屬性說明
列類型有: 整形、浮點型、字元型、日期/時間型
2.1、整形
tinyint/smallint/mediumint/int/bigint
2.1.1、詳解tinyint 一個位元組
[][][][][][][][]共8位
假設8為都為0 ==》 轉化為十進位 0
假設8為都為1 ==》 轉換為十進位 2^8-1
由於電腦也能夠儲存負數,並採用最高位為符號位
最高位為0代表正數 最高位為1代表負數
當最高位為0時:
[0][][][][][][][] => 0~2^7-1 轉化為十進位 0~127
當最高位為1時
[1][][][][][][][] => 0~-2^7 轉化為十進位 0~-128
列 |
位元組 |
無符號 |
有符號 |
tinyint |
1 |
0~255 |
-128~127 |
smallint |
2 |
0~2^16-1 |
-2^15~2^15 |
medium |
3 |
0~2^24-1 |
-2^23~2^23 |
int |
4 |
0~2^32-1 |
-2^31~2^31 |
bigint |
8 |
0~2^64-1 |
-2^63~2^63 |
2.1.2、執行個體
2.1.3、整形列可選屬性: not null unsigned zerofill
總結:
a、聲明整數型列需要0填充時,它一定是無符號的
b、進行0填充時,不會改變其大小值
2.2、浮點型
對於浮點列類型,在MySQL中單精確度值使用4個位元組,雙精確度值使用8個位元組。
float與decimal的區別:decimal更精確
2.3、字元型
char:定長char(M),M代表寬度,即可容納的字元數
varchar:變長char(M),M代表寬度,即可容納的字元數
區別:
a、效率方面看,char<=1 varchar<1
即char會有完全利用的情況,而varchar則不會。因為同CHAR對比,VARCHAR值儲存時只儲存需要的字元數,另加一個位元組來記錄長度
b、針對尾部(從左往右的方向看),char會過濾尾部有空格的情況,而varchar不會。因為char儲存的字元少於定義的字元長度時,就會對尾部進行空格填充.進行展示時,再把尾部的空格去掉
案例:
CREATETABLE vc (v VARCHAR(4), c CHAR(4));
INSERTINTO vc VALUES ('ab ', 'ab ');
SELECTCONCAT(v, '+'), CONCAT(c, '+') FROM vc;
位元組問題:
varchar(N), 這裡的N是指字元數,並不是位元組數.佔用的位元組數與編碼有關
utf-8,一個漢字3位元組 英文字母1位元組
MySQL 5.0以上的版本:
1.一個漢字佔多少長度與編碼有關:
UTF-8:一個漢字=3個位元組
GBK:一個漢字=2個位元組
2.varchar(n)表示n個字元,無論漢字和英文,Mysql都能存入n個字元,僅是實際位元組長度有所區別
3.MySQL檢查長度,可用SQL語言:
select LENGTH(fieldname) from tablename來查看
2.4、日期與時間型
2.4.1、 year
總結
MySQL以YYYY格式檢索和顯示YEAR值。範圍是1901到2155。
可以指定各種格式的YEAR值:
· 四位字串,範圍為'1901'到'2155'。
· 四位元字,範圍為1901到2155。
· 兩位字串,範圍為'00'到'99'。'00'到'69'和'70'到'99'範圍的值被轉換為2000到2069和1970到1999範圍的YEAR值。
· 兩位整數,範圍為1到99。1到69和70到99範圍的值被轉換為2001到2069和1970到1999範圍的YEAR值。請注意兩位整數範圍與兩位字串範圍稍有不同,因為你不能直接將零指定為數字並將它解釋為2000。你必須將它指定為一個字串'0'或'00'或它被解釋為0000。
2.4.2、 time
MySQL以'HH:MM:SS'格式檢索和顯示TIME值(或對於大的小時值採用'HHH:MM:SS'格式)。TIME值的範圍可以從'-838:59:59'到'838:59:59'。小時部分會因此大的原因是TIME類型不僅可以用於表示一天的時間(必須小於24小時),還可能為某個事件過去的時間或兩個事件之間的時間間隔(可以大於24小時,或者甚至為負)。
2.4.3、 date
當你只需要日期值而不需要時間部分時應使用DATE類型。MySQL用'YYYY-MM-DD'格式檢索和顯示DATE值。支援的範圍是'1000-01-01'到 '9999-12-31'。
2.4.4、 datetime
總結:雖然mysql有時間與日期的類型。但在一般的開發過程中涉及到跟時間方面的列類型時,通常使用int即整形類型。主要考慮到開發方面的方便,而且整形效率高。
The quieter you become,the more you are able to hear!
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。