一、整數型別
每個整型型別可以指定乙個最小顯示寬度(注意:這個寬度並不表示儲存的值有多大)
型別儲存空間(n)
取值範圍:-2(n-1)到 2(n-1)-1
tinyint
8-128……127
smallint
16-32768……32767
mediumint
24-8388608……8388607
int32
-2147483648……2147483647
bigint
64(自己算… …)
注:如果有指定unsigned屬性,則訪問範圍可以提公升一倍,基本格式:即:-2n到 2n-1
int[(m)] [unsigned] [zerofill]
① m:指定顯示寬度(預設是m=10),以實際的取值範圍為準,值超過顯示寬度,顯示寬度自動增加
② unsigned:無符號的,表示只允許正數,所以取值範圍取絕對值且最大值*2
③ zerofill: 填充0(如果宣告了zerofill,該列會自動設為unsigned)
二、實數型別
1、定點小數:decimal
基本格式:
dec[(m[,d])] [unsigned] [zerofill]
① m:精度,(整數字數+小數字數)不包含小數點的數字總位數(1–30),不指定預設為10
② d:小數字數,如果不指定,預設為0
注: 若位數不夠,小數末尾補零;若位數超預算,則報錯。2、浮點數:float與double
基本格式:
兩者區別在於值所保留的儲存空間數量不同float[(length) | (,)]
double[(precision) | (,)]
注:由於對乙個浮點數字來說,可用的儲存空間有限,如果乙個數字非常大或非常小,將儲存這個數字的近似值而不是實際值。使用方法:
① 使用乙個引數來指定浮點型別
length/precision:在乙個浮點資料型別中可以指定長度,來確定具體的浮點型別。
0~24:單精度float,從第7位有效位,進行四捨五入儲存
25~30:雙精度double,從第16位有效位,進行四捨五入儲存
如:
② 使用兩個引數來指定浮點型別mysql> create table t3(id float(8));
//m=8,說明是單精度,儲存6位的近似值(第7位四捨五入,後面為0)
mysql> insert into t3 values(123);
mysql> insert into t3 values(1234567);
mysql> insert into t3 values(123456789);
mysql> insert into t3 values(123456789.123456789);
mysql> select * from t3;
+-----------+
| id |
+-----------+
| 123 |
| 1234570 |
| 123457000 |
| 123457000 |
+-----------+
單精度float(m,d):m表示精度(0~24),d表示小數字數
雙精度double(m,d):m表示精度(25~30),d表示小數字數
注意:整數字(m-d)不夠沒關係,超出報錯;小數字(d)不夠補零,超出四捨五入。
三、字串
型別描述
char(n)
固定長度,最多255個字元。char非常適合用於儲存密碼的md5值
varchar(n)
可變長度,最多65535個字元。varchar需要使用1或2個額外位元組記錄字串長度:如果列的最大長度小於或等於255位元組,則使用1個位元組表示,否則使用2個位元組。
text
包括tinytext、smalltext(text)、mediumtext、longtext
blob
包括tinyblob、smallblob(blob)、mediumblob、longblob,二進位制型別。blob 可以儲存。
1、char和varchar
區別:① char(n) 若存入字元數小於n,則以空格補於其後,查詢之時再將空格去掉。所以char型別儲存的字串末尾不能有空格,varchar不限於此。
② char(n) 固定長度,char(4)不管是存入幾個字元,都將占用4個位元組,varchar是存入的實際字元數+1個位元組(n<=255)或2個位元組(n>255),所以varchar(4),存入3個字元將占用4個位元組。
③ char型別的字串檢索速度要比varchar型別的快。
④ 對於經常更變的資料,char比varchar更好,char不容易產生碎片。
相同:① 如果儲存內容走出指定長度,都會被截斷。
2、varchar和text的區別:
① varchar可指定n,text不能指定,內部儲存varchar是存入的實際字元數+1個位元組(n<=255)或2個位元組(n>255),text是實際字元數+2個位元組。
② text型別不能有預設值。
③ varchar可直接建立索引,text建立索引要指定前多少個字元。varchar查詢速度快於text,在都建立索引的情況下,text的索引似乎不起作用。
④ char和varchar可以有預設值,text不能指定預設值。
注:盡量避免使用blob/text型別,查詢會使用臨時表,導致嚴重的效能開銷。四、列舉
列舉可以把一些不重複的字串儲存成乙個預定的集合。mysql在儲存列舉時非常緊湊,會根據列表值的數量壓縮到乙個或者兩個位元組中。mysql在內部會將每個值在列表中的位置儲存為整數,並且在表的*.frm*檔案中儲存「數字 - 字串」對映關係的「查詢表」。
注:盡量避免使用資料作為enum列舉的常量,易混亂。五、時間和日期
型別描述
datetime
表示時間範圍是2023年到2023年,精度為秒。占用8個位元組。
timestamp
占用4個位元組,表示時間範圍從2023年到2023年。使用該型別時一定要注意時區問題。
六、位位主要是用來存放二進位制數,select查詢預設顯示10進製,可以使用bin()、hex()函式來進行查詢。
bin()—顯示二進位制格式
hex()—顯示十六進製制格式
如:
參考mysql> create table t(id bit(4));
mysql> insert into t values(2);
mysql> insert into t values(13);
mysql> select bin(id),hex(id) from t;
+---------+---------+
| bin(id) | hex(id) |
+---------+---------+
| 10 | 2 |
| 1101 | d |
+---------+---------+
《高效能mysql》 [美]baron scbwartz, peter zaitsev, vadim tkacbenko 著
Python基礎01 基礎資料型別
注釋的用法 在每一行的開頭,加上 是對該行進行單行注釋 print hello world 行末注釋,在一句程式的末尾,一般用來解釋這句話。注意空格。control 多行同時注釋或取消注釋 mac上是command 嘗試同時取消注釋或注釋下面三行 print hello world print he...
Mysql基礎資料型別
mysql 基礎資料型別筆記 1 設計資料庫之處,選擇的資料型別,應選擇最小資料範圍。2 盡量避免null值 因為查詢語句中,如果包含null列,對mysql來說更難優化,因為null列使得索引 索引統計和值比較都更加複雜。另外,可為null的列會使用更多的儲存空間,在mysql裡也需要特殊處理。當...
C語言基礎 01資料型別
資料型別 一 整形型別 整形資料報括int short long long long等。關於各種型別的範圍 c語言僅規定 short型別不會比int型別長,long型別不會比int短。具體編譯環境可以利用sizeof來測試。例如sizeof int gcc編譯器通常認為 short佔4個位元組,in...