【MySQL資料型別1之--數值型別】
MySQL基本數值型別大致可以分成:
整數型別:TINYINT、SAMLLINT、MEDIUMINT、INT、BIGINT--1位元組、2、3.、4、8
浮點數型別:FLOAT(m,d)、DOUBLE(m,d)==REAL-4位元組、8
定點數型別:DECIMAL(m,d)、NUMERIC-m+2位元組、8
位型別:BIT(m)-1-8位元組
各個型別的詳細範圍可以參考mysql文件
資料型別小例:
1.整數型別
create table t1
(
id int,
id2 int(4)
);
insert t1 select 1,2;
select * from t1;
+------+------+
| id | id2 |
+------+------+
| 1 | 2 |
+------+------+
alter table t1 modify id int zerofill;
alter table t1 modify id2(4) int zerofill;
select * from t1;
+------------+------------+
| id | id2 |
+------------+------------+
| 0000000001 | 0002 |
+------------+------------+
insert t1 select 1,11111;
Select * from t1;
+------------+------------+
| id | id2 |
+------------+------------+
| 0000000001 | 0002 |
| 0000000001 | 11111 |
+------------+------------+
insert t1 select -1,-2;
+-------+------+---------------------------------------------+
| Level | Code | Message |
+-------+------+---------------------------------------------+
| Error | 1264 | Out of range value for column 'id' at row 1 |
+-------+------+---------------------------------------------+
結論:
1. INT型別預設寬度11
2上面的zerofill屬性可以在int指定寬度不足時候在前面補上0
3.在插入的數值實際長度超過INT型別指定寬度時,忽略寬度,插入正確數值;
4.在擁有zerofill屬性後的int欄位自動加上屬性UNSIGNED,範圍從0開始
2.小數型別
小數分成浮點數和定點數。浮點數包括單精度的FLOAT和雙精度的DOUBLE;定點數則在內部以字串形式存放,比較是和貨幣等高精度資料。
小數型別後面的(m,d)前者表示數字共有m個數字(整數+小數位),小數點後面有d個數字位。
create table t2
(
col1 float(5,2),
col2 decimal(5,2)
);
insert t2 select 1.11,1.11;
select * from t2;
+------+------+
| col1 | col2 |
+------+------+
| 1.11 | 1.11 |
+------+------+
insert t2 select 1.225,1.225;
select * from t2;
+------+------+
| col1 | col2 |
+------+------+
| 1.11 | 1.11 |
| 1.23 | 1.23 |
+------+------+
alter table t2 modify col1 float;
alter table t2 modify col2 decimal;
select * from t2;
+------+------+
| col1 | col2 |
+------+------+
| 1.11 | 1 |
| 1.23 | 1 |
| 1.11 | 1 |
+------+------+
insert t2 select 1.611111,1.6111111;
select * from t2;
+---------+------+
| col1 | col2 |
+---------+------+
| 1.11 | 1 |
| 1.23 | 1 |
| 1.11 | 1 |
| 1.61111 | 2 |
+---------+------+
結論:
1.指定了小數位數後,如果插入的數的小數位數超過,會自動截斷,並且四捨五入;
2.修改小數位數後,decima會對現有資料進行自動截斷,以符合現在的資料型別;
3.預設的decimal的m,d分別為10和0 也就是預設整形;
3.bit數值型別
Bit(m)中m的範圍從1-64 預設為1。
create table t3
(
col bit(1)
);
insert t3 select 2;
+-------+------+-----------------------------------------+
| Level | Code | Message |
+-------+------+-----------------------------------------+
| Error | 1406 | Data too long for column 'col' at row 1 |
+-------+------+-----------------------------------------+
alter table t3 modify col bit(6);
insert t3 select 2;
select * from t3;
+------+
| col |
+------+
| |
+------+
select BIN(col),hex(col) from t3 ;
+----------+----------+
| BIN(col) | hex(col) |
+----------+----------+
| 10 | 2 |
+----------+----------+
結論:
1.插入bit欄位數值時,首先會把值轉成2進位制;如果位數比自定的長度大,插入失敗;
2.直接顯示bit型別資料,結果為null;需要使用 bin()或者hex()等函式轉化後顯示;
參考:MySQL5權威指南+深入淺出MySQL(網易)
相關文章
- Mysql 資料型別之整數型別MySQL 資料型別
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- XSD 數值資料型別資料型別
- MySQL基礎之----資料型別篇(常用資料型別)MySql資料型別
- 區別值型別資料和引用型別資料型別
- 0-4 Python 基礎資料型別-數值型別Python資料型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- [Mysql]資料型別MySql資料型別
- MySQL資料型別MySql資料型別
- MYSQL 資料型別MySQL 資料型別
- MySql資料庫 數值型別的顯示寬度MySql資料庫型別
- mysql中數值型資料有哪兩個類別?MySql
- Solidity-變數和資料型別[複合型別_1]Solid變數資料型別
- sql學習(mysql)(1)資料型別MySql資料型別
- mysql整數資料型別深入解析MySql資料型別
- FLOAT:浮點數值資料的大致數值資料型別資料型別
- MySQL 數值型別溢位處理MySql型別
- JavaScript學習之資料型別(1)JavaScript資料型別
- MySQL 的資料型別MySql資料型別
- MySQL基本資料型別MySql資料型別
- mysql 資料型別TIMESTAMPMySQL 資料型別
- TypeScript 數值型別TypeScript型別
- Python數值型別Python型別
- 1-02:MySQL中的資料型別MySql資料型別
- Python之資料型別Python資料型別
- NumPy之:資料型別資料型別
- 資料型別,變數資料型別變數
- 值型別和引用型別型別
- 1、變數和簡單資料型別變數資料型別
- Java 資料型別和 MySql 資料型別對應一覽表JavaMySQL 資料型別
- MySQL JSON資料型別操作MySqlJSON資料型別
- 詳解MySQL資料型別MySql資料型別
- MySQL資料型別筆記MySql資料型別筆記
- mysql常見資料型別MySql資料型別
- MySQL資料型別DECIMAL用法MySql資料型別Decimal
- MySQL入門--資料型別MySql資料型別
- mysql 常用的資料型別MySql資料型別
- MySQL 資料型別詳解MySQL 資料型別
- PHP 資料型別之檢視和判斷資料型別PHP資料型別