不知道大家之前對類似什么是MySQL的數(shù)據(jù)類型的文章有無了解,今天我在這里給大家再簡單的講講。感興趣的話就一起來看看正文部分吧,相信看完什么是MySQL的數(shù)據(jù)類型你一定會有所收獲的。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了嘉定免費建站歡迎大家使用!
一、概述:
MySQL數(shù)據(jù)庫中的數(shù)據(jù)大致可以分為以下幾類,從而實現(xiàn)數(shù)據(jù)庫在操作的時候?qū)Σ煌愋偷奶幚?。對?shù)據(jù)庫分類的優(yōu)點主要有以下幾種:
1、使系統(tǒng)能夠根據(jù)數(shù)據(jù)類型來操作數(shù)據(jù)
2、預(yù)防數(shù)據(jù)運算的時候出錯
通過分類,可以將每個類型不特定的行為聯(lián)系在一起執(zhí)行這些行為時,數(shù)據(jù)分類將有效避免不同類型數(shù)據(jù)之間的錯誤,做場見的是字符串數(shù)字相加。
3、更見有效的利用空間。
4、定義數(shù)據(jù)類型實際是定義表中的列
二、數(shù)據(jù)庫類型的分類
數(shù)據(jù)庫的分類可以分為數(shù)值類型,字符型,日期型、文本型TEXT及復(fù)合型。
2.1 數(shù)值型
2.1.1 整型
tinyint(-127~128之間的整數(shù))
smallint(短整型:(-32768~32767)數(shù)值占用2字節(jié), 用帶符號的二進制整數(shù)形式存儲)
mediumint
auto_increment(自增長類型)
row num
int (整型默認為11個字節(jié))
bigint(大整型)
Population
舉例:
創(chuàng)建表包含以上類型,且每個字段中均輸入99999999數(shù)值,并查看
mysql> insert into mydata values(99999999,999999999,99999999,999999999,999999999); ERROR 1264 (22003): Out of range value for column 'id1' at row 1 提示id1,報錯 mysql> select * from mydata; +------+--------+--------+-----------+-----------+ | id1 | id2 | id3 | id4 | id5 | +------+--------+--------+-----------+-----------+ | 127 | -32768 | 65535 | 999999999 | 999999999 | | 127 | -32768 | 655356 | 999999999 | 999999999 | +------+--------+--------+-----------+-----------+
在MySQL5.5及以上版本之后各個字段類型數(shù)字超出長度限制則均不能創(chuàng)建成功;
mysql> insert into mydata(id1) values('NIHAO'); ERROR 1366 (HY000): Incorrect integer value: 'NIHAO' for column 'id1' at row 1
類型不同的數(shù)據(jù)也限制執(zhí)行插入操作
類型直接均可使用int(n)這里的n則是對整型數(shù)據(jù)的長度進行限制,n的最大值為255
2.2 整型修飾符:
unsigned 無符號整數(shù),修飾符:規(guī)定字段只能保存正的數(shù)據(jù)。其可以增大這個字段正整數(shù)的支持范圍。
zerofill 規(guī)定0填充(默認是空格)填補輸出的值,使用這個值可以防止MySQL存儲負值。
例如:超時會員卡編號
No 0000000000000001 mysql> create table mydata2(id int(10) unsigned zerofill); Query OK, 0 rows affected (0.14 sec)
mysql> insert into mydata2 values(1); Query OK, 1 row affected (0.01 sec) mysql> select * from mydata2; +------------+ | id | +------------+ | 0000000001 | +------------+ 1 row in set (0.00 sec) mysql>
2.2 浮點型數(shù)值
float(單精度),double(雙精度),decimal(精度確定)
float和dobule是浮點數(shù),數(shù)值越大與不精確
Decimal是定點數(shù),常用來存儲財務(wù)工資方面,具備高精度
float(5,2):表示字段有限長度是5位,其中整數(shù)部分為3位,小數(shù)部分為2位,小數(shù)點超出部分則執(zhí)行四舍五入,其占用4個字節(jié)
double:8個字節(jié)村粗
decimal:用來存儲精度的小數(shù),消耗空間,運算較慢??梢允褂胋igint替代。
8762435.543 mm=x*1000 = 8762435543 select mm/1000 from tb_name; mysql> create table mydata3(tb float(4,1),td double(5,2),tc decimal(5,2)); Query OK, 0 rows affected (0.09 sec) mysql> insert into mydata3 values(45.6789,45.6789,45.6789); Query OK, 1 row affected, 1 warning (0.08 sec) mysql> select * from mydata3; +------+-------+-------+ | tb | td | tc | +------+-------+-------+ | 45.7 | 45.68 | 45.68 | +------+-------+-------+ 1 row in set (0.00 sec) mysql>
三、字符串類型
3.1字符串類型比較
char(n)
n:存儲固定長度,在括號中自定長度其最大值為255;
varchar(n)
n:存儲變長,在括號內(nèi)指定最大長度其最大值為255,如果大于255則需要使用TEXT類型
TEXT
TEXT類型存放最大長度為65535個字符串。
3.2 三種類型優(yōu)缺點:
char較varchar占用空間,但效率高
char:固定長度,插入數(shù)據(jù)必須小于指定的長度否則自動截斷(適用于mysql版本低于5.5的版本,大等于該版本的將不能插入數(shù)據(jù))。
varchar:長度動態(tài),會導(dǎo)致數(shù)據(jù)遷移增加IO壓力
字符串類型修飾符:
binary:區(qū)分字符大小寫。
舉例:
mysql> create table mychar1(ca char(10),va varchar(10)); mysql> insert into mychar1 values('1234567890111','1234567890111'); ERROR 1406 (22001): Data too long for column 'ca' at row 1 字符過長無法插入報錯
不同存儲引擎使用不同用法:
MyISAM表:建議使用char類型
InnoDB表:由于其數(shù)據(jù)內(nèi)部存儲格式對固定長度的數(shù)據(jù)行和可變長度的數(shù)據(jù)行不加區(qū)分,素有使用varchar可以減少磁盤空間用量和尖山磁盤I/O。
TEXT類型:
TEXT類型及其子類型用于存儲比較長的非二進制字符串:
TEXT不區(qū)分大小寫
四、復(fù)合類型
ENUM:枚舉類型,只能取一個
SET:set類型可以取多個
例子:
Query OK, 1 row affected (0.00 sec)
mysql> create table mychar(sex enum('M','W')); Query OK, 0 rows affected (0.11 sec) mysql> insert into mychar values('M'); Query OK, 1 row affected (0.01 sec) mysql> create table mychar2(type set('a','b','c','d')); Query OK, 0 rows affected (0.14 sec) mysql> insert into mychar2 values('a,b,d');
mysql> select * from mychar2; +-------+ | type | +-------+ | a,b,d | +-------+
說明:enmu:最多有65535個元素,從1開始索引為0,表示錯誤值或nouu,
五、時間日期型:
5.1 date類型
格式:YYYY-MM-DD
支持范圍:1000-01-01到9999-12-31
mysql> create table mydate(dd date);
Query OK, 0 rows affected (0.06 sec)
mysql> insert into mydate values('2017-09-10'),(20180910);
5.2 time類型
mysql> create table mydate1(tt time); Query OK, 0 rows affected (0.15 sec) mysql> insert into mydate1 values('100101'); Query OK, 1 row affected (0.01 sec) mysql> select * from mydate1; +----------+ | tt | +----------+ | 10:01:01 | +----------+ 1 row in set (0.00 sec)
5.3 year類型
00-69:轉(zhuǎn)為2000-2069 70-79轉(zhuǎn)為:1970-1999
1970Unix誕生記為計算機元年
例子:
mysql> create table mydate2(yy year); Query OK, 0 rows affected (0.14 sec) mysql> insert into mydate2 values('2015'),(01),(9),(69),(2080); Query OK, 5 rows affected (0.08 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from mydate2; +------+ | yy | +------+ | 2015 | | 2001 | | 2009 | | 2069 | | 2080 | +------+ 5 rows in set (0.00 sec)
5.4 datetime類型和time stamp類型
datetime類型timestamp類型
datetime類型能保存大范圍的值,從1001年到9999年,精度為秒,它把日期和時間封裝到格式為YYYY-MM-DD HH:MM:SS的整數(shù)中,與時區(qū)無關(guān),使用8個字節(jié)的存儲空間
timestamp類型保存了從1970年1月1日午夜(格林尼治時間) 以來的秒數(shù)
它和linux時間戳相同,timestamp只使用了4個字節(jié)的存儲空間,因此它的范圍比datetime小的多,只能表示從1970-2038,通常我們還是用它的,提高空間利用率
舉例:
mysql> create table mydate3(dt datetime); Query OK, 0 rows affected (0.21 sec) mysql> insert into mydate3 values('11111111111111') -> ; Query OK, 1 row affected (0.00 sec) mysql> select * from mydate3; +---------------------+ | dt | +---------------------+ | 1111-11-11 11:11:11 | +---------------------+ 1 row in set (0.00 sec) 插入當前時間 mysql> insert into mydate4 values(now()); Query OK, 1 row affected (0.01 sec)
看完什么是MySQL的數(shù)據(jù)類型這篇文章,大家覺得怎么樣?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。