MySQL基础知识02数据类型(二)数值相关类型

1.INT

MySQL支持5中整数类型,每个整数类型又可以分为有符号整数和无符号整数。


类型


字节数


TINYINT


1


SMALLINT


2


MEDIUMINT


3


INT


4


BIGINT


8

1.1.2. DECIMAL(NUMERIC)

MySQL使用DECIMAL表示定点数,NUMERIC是DECIMAL的一个别名。

DECIMAL(5,2)表示这个定点数类型的整数和小数部分总共5位,其中3位是整数,2位是小数。

DECIMAL的总位数最多65位,超出65则报错。

mysql> create table n3 ( id numeric(66) primary key);

ERROR 1426 (42000): Too-big precision 66 specified for ‘id‘. Maximum is 65.

创建一个包含62位整数加3位小数的定点数类型的列的数据表。

mysql> create table n2 ( id numeric(65,3) primary key);

Query OK, 0 rows affected (0.02 sec)

mysql> show create table n2;

+-------+----------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                   |

+-------+----------------------------------------------------------------------------------------------------------------+

| n2    | CREATE TABLE `n2` (

`id` decimal(65,3) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+-------+----------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

在DECIMAL(65,3)类型中,小数部分超出3位时则自动截取为3位小数。

mysql> insert into n2 values (12345678901234567890123456789012345678901234567890123456789012.345);

Query OK, 1 row affected (0.05 sec)

mysql> insert into n2 values (12345678901234567890123456789012345678901234567890123456789012.12345);

Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> insert into n2 values (12345678901234567890123456789012345678901234567890123456789012);

Query OK, 1 row affected (0.01 sec)

mysql> select * from n2;

+--------------------------------------------------------------------+

| id                                                                 |

+--------------------------------------------------------------------+

| 12345678901234567890123456789012345678901234567890123456789012.000 |

| 12345678901234567890123456789012345678901234567890123456789012.123 |

| 12345678901234567890123456789012345678901234567890123456789012.345 |

+--------------------------------------------------------------------+

3 rows in set (0.00 sec)

在DECIMAL(65,3)类型中,整数部分不允许超过62位。

mysql> insert into n2 values (12345678901234567890123456789012345678901234567890123456789012345);

ERROR 1264 (22003): Out of range value for column ‘id‘ at row 1

在使用DECIMAL类型时,如果不指定精度,则默认为DECIMAL(10,0)。

mysql> create table n7  ( id decimal primary key);

Query OK, 0 rows affected (0.03 sec)

mysql> show create table n7;

+-------+----------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                   |

+-------+----------------------------------------------------------------------------------------------------------------+

| n7    | CREATE TABLE `n7` (

`id` decimal(10,0) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+-------+----------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

定点数的运算:

mysql> select cast( 123456789012345678901234567890.1234567890 as decimal(40,10) ) + cast(1.1111111111 as decimal(40,10) );

+-------------------------------------------------------------------------------------------------------------+

| cast( 123456789012345678901234567890.1234567890 as decimal(40,10) ) + cast(1.1111111111 as decimal(40,10) ) |

+-------------------------------------------------------------------------------------------------------------+

|                                                                   123456789012345678901234567891.2345679001 |

+-------------------------------------------------------------------------------------------------------------+

1 row in set (0.01 sec)

2.FLOAT/DOUBLE

MySQL提供了浮点数FLOAT和DOUBLE类型,其中FLOAT占用4个字节,DOUBLE占用8个字节。

FLOAT(5,2)表示有3位整数加上2位小数的浮点数。

浮点数的查询不能简单的相等比较:

mysql> create table n8 ( id float(10,3) primary key);

Query OK, 0 rows affected (0.03 sec)

mysql> show create table n8;

+-------+--------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                 |

+-------+--------------------------------------------------------------------------------------------------------------+

| n8    | CREATE TABLE `n8` (

`id` float(10,3) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+-------+--------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

mysql> insert into n8 values ( 1234567.123);

Query OK, 1 row affected (0.01 sec)

mysql> select * from n8;

+-------------+

| id          |

+-------------+

| 1234567.125 |

+-------------+

1 row in set (0.00 sec)

mysql> select * from n8 where id=1234567.123;

Empty set (0.00 sec)

mysql> select * from n8 where id=1234567.125;

+-------------+

| id          |

+-------------+

| 1234567.125 |

+-------------+

1 row in set (0.00 sec)

mysql> select * from n8 where id=1234567.126;

Empty set (0.00 sec)

上述查询中,插入的原始数据是1234567.123,而查询到的实际是1234567.125。

时间: 2024-10-24 23:17:27

MySQL基础知识02数据类型(二)数值相关类型的相关文章

MySQL基础知识01数据类型(一)字符串相关类型

1. CHAR 语法: CHAR (length) 其中length的取值范围为1到255. 超过255则报错: mysql> create table s3 ( value char(1023) primary key); ERROR 1074 (42000): Column length too big for column 'value' (max = 255); use BLOB or TEXT instead 例如:CHAR(20)表示最多包含20个字符的字符串.存储时,不足20个字符

MySQL基础知识03数据类型(三)日期时间相关类型

1. DATE DATE类型只包含日期,格式:'YYYY-MM-DD'.范围从'0000-01-01'到'9999-12-31'.其中年月日只能输入有效的年月日. mysql> create table d1 ( id  date primary key); Query OK, 0 rows affected (0.02 sec) mysql> show create table d1; +-------+--------------------------------------------

Mysql基础知识:数据类型

Mysql基础数据类型 1. 整数类型 2. 浮点数类型和定点数类型 DECIMAL型的取值范围与DOUBLE相同,但是DECIMAL的有效范围由M.D决定.而且DECIMAL的字节数为M+2,即定点数的存储空间是根据其精度决定的. M:精度,是数据的总长度,小数点不占位置: D:标度,小数点后的长度 eg:FLOAT(6,2):数据长度为6,小数点后保留2位的FLOAT数据类型.按照该定义,1234.56符合要求. 3. 日期和时间类型 YEAR类型:(使用1个字节表示) 可以用4位字符串或数

MySQL基础知识04数据类型(四)日期时间的格式转换

1. UNIX_TIMESTAMP MySQL提供了UNIX_TIMESTAMP()函数,用于计算自从1970-01-01 08:00:00以来所经过的秒数.此处开始时间是1970-01-01 08:00:00,而不是1970-01-01 00:00:00.对于早于1970-01-01 08:00:00的时间,返回值都为0.这个相对时间单位为秒,支持小数. mysql> select unix_timestamp(); +------------------+ | unix_timestamp(

mysql基础知识之增删查改使用介绍

 mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的student表中的数据如下: mysql> SELECT * FROM student; 一.SELECT语句的使用 1.单表查询 语法格式: SELECT culom1,culom2,culom3 FROM TABLE_NAME; 可以改变字段显示顺序 2.WHERE子句查询 语法格式: SE

C#基础知识篇(二)-----------C#笔记

1.关系运算符(比较运算符) 1.关系运算符有哪些? >,< ==,!= >=,<= 2.关系运算符的作用? 用于比较两个事物之间的关系. 3.什么叫关系表达式? 由关系运算符连接起来的式子叫关系表达式. 注意:所有的关系表达式最终都能计算成一个bool类型的值. 2.逻辑运算符 1.逻辑表达式有哪些? 逻辑与:&& ,逻辑或:||  ,逻辑非:!(又叫取反) 2.逻辑运算 语法:表达式1 逻辑运算符  表达式2 逻辑运算符连接的两个表达式,要最终能求解成一个boo

MySQL基础知识

MySQL基础知识: 一. 知识点:        1. SQL分类:按照其功能不同,分为3中类别           DDL(Data Defintion Language):数据定义语句,用于定义不同的数据段.数据库.表.列.索引等.常用的语句关键字包括create.drop.alter等;             DML(Data Manipulation Language):数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据的完整性.常用的语句关键字主要包括insert.de

mysql基础之基本数据类型

原文:mysql基础之基本数据类型 列类型学习 mysql三大列类型 整型 Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill 字符串型 Char(M) Varchar(M) Text 文本类型 日期时间类型 Date 日期 Time 时间 Datetime 时间时间类型 Year 年类型 整形: 整型系列所占字节与存储范围的关系. 定性: 占字节越多,存储范围越大. 下图: 是具体的数字分析 Tinyint 1个字节 8个

javascript 基础知识1 数据类型

首先javascript是一种具有面向对象能力的,解释型程序设计语言. js对大小写敏感,一定要采取一致的字符大小写形式,在js中的结束分号(:)是可选的,为了避免JS语句错误,我们还是要注意添加,养成良好的编写习惯. 下面看看数据类型和值. JS有7种数据类型:字符串.数字.布尔.数组.对象.Null.Undefined 字符串类型:由Unicode字符,数字,标点符号组成的序列,可以为多个字符,也可以为0个字符. 1 <script> 2 // var用于声明一个变量 3 var stri