您好,登錄后才能下訂單哦!
不知道大家之前對類似什么是MySQL的數據類型的文章有無了解,今天我在這里給大家再簡單的講講。感興趣的話就一起來看看正文部分吧,相信看完什么是MySQL的數據類型你一定會有所收獲的。
一、概述:
MySQL數據庫中的數據大致可以分為以下幾類,從而實現數據庫在操作的時候對不同類型的處理。對數據庫分類的優點主要有以下幾種:
1、使系統能夠根據數據類型來操作數據
2、預防數據運算的時候出錯
通過分類,可以將每個類型不特定的行為聯系在一起執行這些行為時,數據分類將有效避免不同類型數據之間的錯誤,做場見的是字符串數字相加。
3、更見有效的利用空間。
4、定義數據類型實際是定義表中的列
二、數據庫類型的分類
數據庫的分類可以分為數值類型,字符型,日期型、文本型TEXT及復合型。
2.1 數值型
2.1.1 整型
tinyint(-127~128之間的整數)
smallint(短整型:(-32768~32767)數值占用2字節, 用帶符號的二進制整數形式存儲)
mediumint
auto_increment(自增長類型)
row num
int (整型默認為11個字節)
bigint(大整型)
Population
舉例:
創建表包含以上類型,且每個字段中均輸入99999999數值,并查看
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及以上版本之后各個字段類型數字超出長度限制則均不能創建成功;
mysql> insert into mydata(id1) values('NIHAO'); ERROR 1366 (HY000): Incorrect integer value: 'NIHAO' for column 'id1' at row 1
類型不同的數據也限制執行插入操作
類型直接均可使用int(n)這里的n則是對整型數據的長度進行限制,n的最大值為255
2.2 整型修飾符:
unsigned 無符號整數,修飾符:規定字段只能保存正的數據。其可以增大這個字段正整數的支持范圍。
zerofill 規定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 浮點型數值
float(單精度),double(雙精度),decimal(精度確定)
float和dobule是浮點數,數值越大與不精確
Decimal是定點數,常用來存儲財務工資方面,具備高精度
float(5,2):表示字段有限長度是5位,其中整數部分為3位,小數部分為2位,小數點超出部分則執行四舍五入,其占用4個字節
double:8個字節村粗
decimal:用來存儲精度的小數,消耗空間,運算較慢。可以使用bigint替代。
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:存儲變長,在括號內指定最大長度其最大值為255,如果大于255則需要使用TEXT類型
TEXT
TEXT類型存放最大長度為65535個字符串。
3.2 三種類型優缺點:
char較varchar占用空間,但效率高
char:固定長度,插入數據必須小于指定的長度否則自動截斷(適用于mysql版本低于5.5的版本,大等于該版本的將不能插入數據)。
varchar:長度動態,會導致數據遷移增加IO壓力
字符串類型修飾符:
binary:區分字符大小寫。
舉例:
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表:由于其數據內部存儲格式對固定長度的數據行和可變長度的數據行不加區分,素有使用varchar可以減少磁盤空間用量和尖山磁盤I/O。
TEXT類型:
TEXT類型及其子類型用于存儲比較長的非二進制字符串:
TEXT不區分大小寫
四、復合類型
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:轉為2000-2069 70-79轉為: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的整數中,與時區無關,使用8個字節的存儲空間
timestamp類型保存了從1970年1月1日午夜(格林尼治時間) 以來的秒數
它和linux時間戳相同,timestamp只使用了4個字節的存儲空間,因此它的范圍比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的數據類型這篇文章,大家覺得怎么樣?如果想要了解更多相關,可以繼續關注我們的行業資訊板塊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。