數(shù)據(jù)類型

數(shù)據(jù)類型

01整型

類型 字節(jié) 范圍(有符號(hào)) 范圍(無符號(hào))
TINYINT 1 -27~27-1 0~28-1
SMALLINT 2 -215~215-1 0~216-1
MEDIUMINT 3 -223~223-1 0~224-1
INT 4 -231~231-1 0~232-1
BIGINT 8 -263~263-1 0~264-1

關(guān)于范圍的計(jì)算方法:比如tinyint,有1個(gè)字節(jié),一個(gè)字節(jié)是8位号胚。計(jì)算有符號(hào)的范圍,8位有一個(gè)是符號(hào)位浸遗,剩下的7位每一位有0和1兩種取值猫胁,代表2的7次方128個(gè)數(shù),正數(shù)128跛锌,負(fù)數(shù)128個(gè)弃秆。但是為了取出一個(gè)0,正數(shù)就少了1髓帽。所以是127個(gè)正數(shù)和一個(gè)零菠赚。無符號(hào)計(jì)算,1字節(jié)有8位郑藏,代表2的8次方256個(gè)數(shù)衡查,就是從0~255。其他同理必盖。

小知識(shí):

  1. 如果你定義一個(gè)字段的數(shù)據(jù)類型是int(3)那么是不是說拌牲,插入的數(shù)據(jù)最大不能超過三位數(shù)呢?

    其實(shí)不是的歌粥,你仍然可以插入更大的數(shù)塌忽,最大范圍仍是上表中int的范圍沒有變。int(3)中的3是顯示位數(shù)失驶,意思是查詢時(shí)土居,顯示3位數(shù),不足三位補(bǔ)零突勇,若想最前面的零也顯示装盯,要配合關(guān)鍵詞zerofill的使用。

    例如:定義score時(shí) score int(3) zerofill甲馋。

  2. 無符號(hào)數(shù)據(jù)類型怎么定義埂奈?

    比如聲明score時(shí) score int unsigned

02浮點(diǎn)型

浮點(diǎn)型 占用字節(jié) 范圍
float(單精度) 4 -3.4E+38~3.4E+38
double(雙精度) 8 -1.8E+308~1.8E+308

浮點(diǎn)數(shù)聲明:

float(M,D)

double(M,D)

? M:總位數(shù)。插入的值總位數(shù)超過M會(huì)報(bào)錯(cuò)定躏。

? D:小數(shù)位數(shù)账磺,插入的值小數(shù)位數(shù)超過D不會(huì)報(bào)錯(cuò)芹敌,四舍五入處理。

注意點(diǎn):浮點(diǎn)型存的是近似值垮抗,精度有可能會(huì)丟失氏捞。例:

create table nu(
num double(20,19)
);

insert into values (1.1234567890123456789);

select * from nu ;#你會(huì)發(fā)現(xiàn)數(shù)變了,最后幾個(gè)變成了0

03定點(diǎn)數(shù)

decimal(M,D)

說明:

  1. 定點(diǎn)數(shù)用于保存你要嚴(yán)格保存的數(shù)據(jù)冒版,精度不會(huì)丟失液茎,例如存款。
  2. 定點(diǎn)數(shù)是變長(zhǎng)的辞嗡,大概每9個(gè)數(shù)字用4個(gè)字節(jié)來存儲(chǔ)捆等,定點(diǎn)之所以能保存精確的小數(shù),是因?yàn)檎麛?shù)和小數(shù)是分開儲(chǔ)存的续室,占用資源要比浮點(diǎn)數(shù)多栋烤。
  3. 整型、定點(diǎn)數(shù)和浮點(diǎn)數(shù)都支持顯示寬度(zerofill)和無符號(hào)數(shù)(unsigned)挺狰。

04字符型

數(shù)據(jù)庫(kù)中明郭,所有字符型只能用單引號(hào)。

數(shù)據(jù)類型 描述 長(zhǎng)度
char(長(zhǎng)度) 定長(zhǎng) 最大255
varchar(長(zhǎng)度) 變長(zhǎng) 最大65535
tintext 大段文本 28-1=255
text 大段文本 216-1=65535
mediumtext 大段文本 224-1
longtext 大段文本 232-1
  1. char(10)和varchar(10)的區(qū)別丰泊?

    答:相同點(diǎn):他們最多只能保存10個(gè)字符薯定。

    ? 不同點(diǎn):char不回收多余的長(zhǎng)度(定長(zhǎng)),效率高趁耗,浪費(fèi)空間沉唠;

    ? varchar回收對(duì)于的空間(變長(zhǎng)),效率低苛败,節(jié)省空間满葛。

  2. varchar理論最大長(zhǎng)度是65535字節(jié),實(shí)際卻達(dá)不到罢屈,具體長(zhǎng)度與字符編碼有關(guān)嘀韧。

    例gbk編碼 , 一個(gè)字符占用2字節(jié) , 則varchar最大長(zhǎng)度是32767.

    utf8編碼中 , 一個(gè)字符占用3字節(jié) , 則varchar最大長(zhǎng)度是21845

  3. 一條完整數(shù)據(jù)(比如一個(gè)表有id,姓名缠捌,性別锄贷。三者合在一起算一條完整數(shù)據(jù))總長(zhǎng)度不能超過65535字節(jié)。驗(yàn)證:

    create table t7(
    name varchar(21844), #utf8下最多能存21845字符曼月,每個(gè)字符3字節(jié)
    age tinyint 
    ) charset = utf8;
    

    上述例子會(huì)報(bào)錯(cuò)谊却,是因?yàn)閡tf8下,varchar最大存21845字符(65535字節(jié))哑芹,外加tinyint炎辨,字節(jié)總長(zhǎng)度超過了65535,所以會(huì)報(bào)錯(cuò)聪姿。

  4. 保存大塊文本用了text碴萧,總數(shù)據(jù)長(zhǎng)度不就超過了65535字節(jié)了乙嘀?為什么不報(bào)錯(cuò)?

    答:事實(shí)上破喻,大塊文本(text)不計(jì)算在總長(zhǎng)度中虎谢,一個(gè)大塊文本只用10個(gè)字節(jié)保存文本地址,文本另存他處曹质。

05枚舉

enum('A','B')

聲明舉例:sex enum('男 ','女 ')

說明:

  1. 枚舉相當(dāng)于一個(gè)集合婴噩,值只能從集合中選一個(gè),值選非集合內(nèi)的會(huì)報(bào)錯(cuò)咆繁。

  2. 枚舉類型是通過整數(shù)來管理的讳推,第一個(gè)值是1顶籽,第二個(gè)值是2玩般,以此類推。驗(yàn)證與應(yīng)用:

    create table t8(
    name varchar(10),
    sex enum('男','女')
    );
    # --------------------
    insert into t8 values 
    ('Tom','男')礼饱,
    ('Jerry',1)坏为,   # 與第七行等效
    ('Rose','女');
    # --------------------
    #再次表明枚舉是數(shù)字镊绪,只有數(shù)字才能相加匀伏,結(jié)果也是數(shù)字。
    

select sex+0 from t8;
select sex from t8;


3. 枚舉的優(yōu)點(diǎn):

1. 運(yùn)行速度快(數(shù)字比字符串運(yùn)算速度快)蝴韭。
2. 限制數(shù)據(jù)够颠。
3. 節(jié)省空間(一個(gè)數(shù)字就夠了,省空間)榄鉴。

## 06集合

> set 
>
> set('爬山 ','游泳 ','讀書 ')

集合相當(dāng)于多項(xiàng)選擇履磨;**每一個(gè)集合都分配一個(gè)固定的數(shù)字,分配方式從左往右庆尘,按2^0^ , 2^1^ , 2^2^ , 2^3^**……例子中剃诅,爬山是2^0^=1;游泳是2^1^=2驶忌;讀書是2^2^=4矛辕。如果你插入時(shí),選擇了爬山和讀書聊品,那么結(jié)果就是5(4+1)几苍。

例子:

```mysql
create table t9(
hobby set('爬山','游泳','讀書')
);
# 證明是數(shù)字
insert into t9 values ('爬山','讀書');
select hobby+0 from t9;

無論按照什么順序插入妖胀,其顯示結(jié)果都是按照建表時(shí)的固定順序顯示的爬坑,例如你插入時(shí) insert into t9 values ('讀書','爬山');盾计,但是顯示結(jié)果仍然是你建表時(shí)的順序,先顯示“爬山”哭尝,再顯示“讀書”剖煌。

07日期類型

數(shù)據(jù)類型 占用字節(jié) 描述
datetime 8 日期時(shí)間
date 3 日期
time 3 時(shí)間
timestamp 4 時(shí)間戳
year 1 年份

一般比較常用的也就前兩個(gè)。

datetime的插入格式:

insert into uu values ('2015-10-12 10:00:00');
# 日期與時(shí)間插入尤泽,在上面括號(hào)內(nèi)的基礎(chǔ)上取你所需。

注意點(diǎn):

  1. timestamp類型和datetime類型的形式是一樣的鬼店,區(qū)別是datetime的范圍是1~9999年妇智,而timestamp是從1970-01-01 00:00:00 ~ 2038-1-19 11:14:07
  2. year只占用一個(gè)字節(jié)航徙,所以只能儲(chǔ)存255個(gè)年份杠袱,范圍是1901 ~ 2155楣富。
  3. time表示時(shí)間或時(shí)間間隔纹蝴,范圍是 -838:59:59 ~ 838:59:59。
  4. 其他編程語言的時(shí)間戳與數(shù)據(jù)庫(kù)的時(shí)間戳有區(qū)別兼犯,其他編程語言時(shí)間戳是從1970年1月1日0時(shí)0分0秒到現(xiàn)在的總秒數(shù)或總毫秒數(shù)萝究,是整數(shù)帆竹。但是數(shù)據(jù)庫(kù)時(shí)間戳不是秒數(shù),形式與datatime差不多秒紧,有日期熔恢,時(shí)分秒。

08布爾型

boolean型中true和false對(duì)應(yīng)0和1鹰霍;以數(shù)字的方式儲(chǔ)存。

09數(shù)據(jù)類型小測(cè)試

  1. 手機(jī)號(hào):char
  2. 電話號(hào):varchar
  3. 性別:char enum
  4. 學(xué)生年齡:tinyint unsigned
  5. 薪水:dicimal
  6. 照片:binary督勺,但一般不把照片存數(shù)據(jù)庫(kù)堵未,如果照片幾百兆渗蟹,數(shù)據(jù)庫(kù)才幾百兆,數(shù)據(jù)庫(kù)直接就滿了。一般在數(shù)據(jù)庫(kù)存照片地址。但出題這樣出武花,還是要選binary杈帐。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末体箕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挑童,更是在濱河造成了極大的恐慌累铅,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件站叼,死亡現(xiàn)場(chǎng)離奇詭異娃兽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)尽楔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門投储,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翔试,你說我怎么就攤上這事轻要。” “怎么了垦缅?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵冲泥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)凡恍,這世上最難降的妖魔是什么志秃? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮嚼酝,結(jié)果婚禮上浮还,老公的妹妹穿的比我還像新娘。我一直安慰自己闽巩,他們只是感情好钧舌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涎跨,像睡著了一般洼冻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隅很,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天撞牢,我揣著相機(jī)與錄音,去河邊找鬼叔营。 笑死屋彪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绒尊。 我是一名探鬼主播畜挥,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼垒酬!你這毒婦竟也來了砰嘁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤勘究,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后斟冕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體口糕,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年磕蛇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了景描。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秀撇,死狀恐怖超棺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情呵燕,我是刑警寧澤棠绘,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響氧苍,放射性物質(zhì)發(fā)生泄漏夜矗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一让虐、第九天 我趴在偏房一處隱蔽的房頂上張望紊撕。 院中可真熱鬧,春花似錦赡突、人聲如沸对扶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浪南。三九已至,卻和暖如春从媚,著一層夾襖步出監(jiān)牢的瞬間逞泄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工拜效, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喷众,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓紧憾,卻偏偏與公主長(zhǎng)得像到千,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赴穗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容