Mysql列資料類型,mysql資料類型

來源:互聯網
上載者:User

Mysql列資料類型,mysql資料類型

三大資料類型:數值,時間日期,字串。

數值 整數


是否有符號

create table tab_int(a tinyint unsigned,b tinyint,c SMALLINT,d MEDIUMINT,e INT,f bigint);insert into tab_int values(255,-128,2423,-4323,-14432,4356546);select * from tab_int;

定義資料的顯示寬度
通過規定資料的顯示寬度,達到統一的顯示目的。
類型(m),m表示顯示的最少寬度是多少。

增加欄位alter table tab_int add g tinyint(3);insert into tab_int values(255,-128,2423,-4323,-14432,4356546,123);

需要使用前置字元為零填充達到目的,稱之為zerofill。

alter table tab_int add h int(3) zerofill;insert into tab_int values(255,-128,2423,-4323,-14432,4356546,123,2);insert into tab_int values(255,-128,2423,-4323,-14432,4356546,123,1232);insert into tab_int values(255,-128,2423,-4323,-14432,4356546,123,543);

注意:
1、不影響數的範圍。
2、寬度大的不會受到影響,不會被截取。

也存在布爾bool類型,但是就是tinyint(1)的別名。

小數

浮點數

單精確度 預設是6位左右
雙精確度 預設是16位左右

create table num(a float,b double);insert into num values(1234567890.0123456789,1234567890.0123456789);select * from num;

支援控制數值的範圍
Type(M,D)
M表示所有數值位元(不包括小數點和符號)
D表示允許的小數位元

create table num_1(a float(5,2),b double(8,3));insert into num_1 values(123.01,12345.012);select * from num_1;

不合法

insert into num_1 values(1234567890.0123456789,1234567890.0123456789);insert into num_1 values(12.301,12345.012);

支援科學計演算法

insert into num_1 values(0.23E3,456.7E2);select * from num_1;

定點數(保證不會精度丟失)

decimal(M,D)
M總位元
D小數位元

create table num_2(send_money decimal(10,2));insert into num_2 values( 1234.56);select * from num_2;

多出來的位元會四捨五入

insert into num_2 values( 1234.567);

支援填充

alter table num_2 add money decimal(10,2) zerofill;insert into num_2 values( 1234.567,1234.3234);

支援無符號

日期時間類型

datetime類型

年月日時分秒 datetime 八個位元組
時間戳記 timestamp 儲存時,整型;但是表示時,日期時間。 四個位元組
年月日 data

create table datetime1(a datetime,b timestamp);insert into datetime1 values('2015-04-16 11:50:21','2015-04-16 11:50:33');select * from datetime1;

檢索列時,+0可以檢索時間

select a,b+0 from datetime1;

支援任意格式的分隔字元

insert into datetime1 values('20380119031422','20380119031422');select a,b+0 from datetime1;


但是如果出現歧義,不建議使用特殊的分隔字元,會導致邏輯不清晰。

insert into datetime1 values('20:01:19','2038-01-19 03:14:08');

支援0值

insert into datetime1 values(0,0);

表示當前是沒有規定的
2013-04-0表示4月整個月。(邏輯想法)

insert into datetime1 values('2013-04-0','2038-01-19 03:14:08');

Time類型

表示意義:
1、一天中的時間
2、表示時間間隔,在表示間隔時,可以使用天來表示
格式: D HH:MM:ss

create table t_1(age time);insert into t_1 values('23:12:11');insert into t_1 values('231211');insert into t_1 values('5 23:12:11');select * from t_1;

字串類型


char(M) 固定長度
M表示嚴格限定的長度。

varchar(M) 可變長度
M表示允許的字串長度。

        char(5)     varchar(5)''      5個字元        1個字元    'abc'   5個字元        4個字元'abcde' 5個字元        6個字元

varchar需要一個位元組儲存字串的總長度。

M表示字元數而不是位元組數。
但是總的長度是按照位元組計算。char最大255個位元組。
例如如下會報錯。

create table s_1(a varchar(65535)) character set utf8;create table s_2(a varchar(65535)) character set gbk;


注意:
欄位的最大長度,除了類型本身的限制之外,記錄的總長度也有限制。
真實的varchar的長度:總長度65535
varchar特點:
當類型資料超過255時,採用2個位元組表示長度。
65535-2=65533
整條記錄,需要一個額外的位元組,用於儲存當前欄位的null值。因此,只有65532
如果有設定為not null,則可以有65533個位元組。

create table s_3(a varchar(65531),b tinyint)character set latin1;create table s_4(a varchar(65532) not null,b tinyint not null)character set latin1;

除非所有的欄位都不是null,這個位元組才可以省略。一個記錄,無論有多少個欄位存在null,都是使用統一的一個位元組來表示。而不是每個欄位一個位元組。

text(文本)
text有很多類型。 tinytext,longtext表示字串長度不一樣。

create table s_5(a text,b text)character set latin1;

enum
看上去是字串,內部儲存整型表示欄位值,只能是某一個。最儲存65536個枚舉項。

create table s_6(gender enum('female','male'));insert into s_6 values('male');select gender+0 from s_6;

Set
8個位元組,最多表示64個狀態,一個狀態一個位。
1 10 100

drop table s_7;create table s_7(hobby set('basket','football','pingpang'));insert into s_7 values('basket,football');insert into s_7 values('football,pingpang');select hobby from s_7;select hobby+0 from s_7;

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.