mysql:創建表時聲明數值型、字符串、時間

語法

CREATE TABLE Persons
(
PersonID tinyint(5) zerofill,
PersonID int unsigned,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

數值型

數值型分爲整型,浮點型,定型

整型:

name 佔位(字節) 最大值(無符號)
bigint 8 太大了
int 4 4294967295
mediumint 3 16777215
smallint 2 65535
tinyint 1 255

注意:默認是有符號的,也就是最小值是負數
一些可選參數:

  • unsigned 無符號(全是正數)
  • zerofill 填充至多寬,適合用於學號、編碼等固定數字的,可以用 0 填充至固定寬度。默認帶 unsigned,前面的例如 int(5) 代表填充長度爲5

浮點型:

name 解釋
float(M,D) M:精度,總位數
D:標度,小數點後位數
double(M,D) 比 float 範圍更大

定點型:
decimal

浮點型與定點型的區別:
浮點型有精度損失,定點型更精確
比如:

creat table t4 (
a float(9,2),
b decimal(9,2)
)
insert into t4(1234567.23, 1234567.23)

得到的結果是:
a:1234567.25
b:1234567.23
所以定點型更精確,因爲定點型小數點前後是用不同的數字存儲的,而 float 就比較複雜,專門有協會定的規則。

字符串

char,varchar,text,blob,enum

name 意思 寬度 實際存字符(i<M) 實際佔空間 利用率
char(M) 定長 M i M i/M <=100%
varchar(M) 變長 M i i字符 + (1-2)字節 i/(i+1-2) <100%

註釋:
char(M) 不足 M個字符給字符右側加空格,取出時刪掉空格,這就意味着,如果存的數據右側本身有空格,則取出會丟失,varchar 則不會
varchar(M) 第一個字符會有專門的字符長度說明
舉例:
char(10),最多存 10 個字符,如果存一個字符,還是佔了 10 個字符的空間,但是儘量用 char,尋址快,varchar 比較麻煩

text 一般存大段文本,還有更大的 mediumtext

blob 二進制,其實也是大段文本,但是不會因爲字符集過濾掉而丟失信息,比如:一張圖片有 0xFF 個字節,在 ASCII 字符集認爲非法,會被過濾掉

enum 枚舉

create table t3 (
gender enum ('男', '女')
);

set 集合,和枚舉差不多,可以選其中的多個

時間型

year 年:95/1995
date 日期:1998-12-27
time 時間:13:56:23
datetime日期時間:1998-12-27 13:56:23
timestamp 時間戳:1970-1-1 0:0:0 到當前時間的秒數,一般存註冊時間、發佈時間都用這個,容易計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章