在MySQL中,常见的数据类型字段包括以下几种:
整数类型:
TINYINT:一个很小的整数,有符号范围是-128到127,无符号范围是0到255。
SMALLINT:较小的整数,有符号范围是-32768到32767,无符号范围是0到65535。
MEDIUMINT:中等大小的整数,有符号范围是-8388608到8388607,无符号范围是0到16777215。
INT:普通大小的整数,有符号范围是-2147483648到2147483647,无符号范围是0到4294967295。
BIGINT:大整数,有符号范围是-9223372036854775808到9223372036854775807,无符号范围是0到18446744073709551615。
小数类型:
FLOAT:单精度浮点数,存储范围较大,但精度相对较低。
DOUBLE:双精度浮点数,存储范围更大,精度更高。
定点类型:
DECIMAL:用于精确存储小数,可以指定精度和范围。
字符串类型:
CHAR:固定长度的字符串,最多 255 个字符。
VARCHAR:可变长度的字符串,最多 65535 个字符。
TEXT:用于存储大量文本数据。
日期和时间类型:
DATE:存储日期,格式为 'YYYY-MM-DD'。
TIME:存储时间,格式为 'HH:MM:SS'。
DATETIME:存储日期和时间,格式为 'YYYY-MM-DD HH:MM:SS'。
数据精度控制方法如下:
## 1、四舍五入 ##
要对数据进行四舍五入,通常可以使用ROUND函数。其语法如下:
SELECT ROUND(number, decimals);
number为待处理数字,decimals为保留小数点位数
在SQL中,对时间进行四舍五入可以使用类似于对数字进行四舍五入的技术。你可以使用ROUND函数来对时间进行四舍五入,不过需要先将时间转换为秒数,然后再进行四舍五入操作。
以下是一个示例,假设有一个时间字段time_field,你可以使用如下SQL语句对其进行四舍五入:
SELECT TIME_FORMAT(SEC_TO_TIME(ROUND(TIME_TO_SEC(time_field), 0)), '%H:%i:%s') AS rounded_time
FROM your_table;
在这个示例中,TIME_TO_SEC(time_field)将时间字段转换为秒数,然后使用ROUND函数对秒数进行四舍五入,最后再通过
SEC_TO_TIME和TIME_FORMAT函数将秒数转换回时间格式,并保留所需的精度。
## 2、向上取整 ##
要对数据进行向上取整(进一法),可以使用CEIL函数。其语法如下:
SELECT CEIL(number);
在SQL中,对时间进行向上取整(进一法)可以使用类似于对数字进行向上取整的方法。你可以使用CEIL函数来对时间进行向上
取整,不过同样需要先将时间转换为秒数,然后再进行向上取整操作。
以下是一个示例,假设有一个时间字段time_field,你可以使用如下SQL语句对其进行向上取整
SELECT TIME_FORMAT(SEC_TO_TIME(CEIL(TIME_TO_SEC(time_field) / 60) * 60), '%H:%i:%s') AS rounded_time
FROM your_table;
在这个示例中,首先使用TIME_TO_SEC(time_field)将时间字段转换为秒数,然后使用CEIL函数对秒数除以60后向上取整,再
乘以60得到最接近的整分钟的秒数,最后通过SEC_TO_TIME和TIME_FORMAT函数将秒数转换回时间格式,并保留所需的精度。
**为什么要对秒数先除以60后乘以60???****
这个步骤是为了实现对时间向上取整到最接近的整分钟。
首先,我们将时间转换为秒数,然后将其除以60,这样可以得到相应时间的分钟数。而向上取整操作保证了无论原始秒数是多少,它都会被向上舍入到最接近的整分钟。例如,如果原始秒数是30秒,向上取整后就会成为1分钟;如果原始秒数是59秒,向上取整后同样会成为1分钟。
接着,我们再将这个向上取整后的分钟数乘以60,这样就得到了最接近的整分钟所对应的秒数。这一步是为了将分钟数转换回秒数,并且确保结果是整分钟的整数秒数,而不是原始秒数的小数部分。
最后,我们将这个整分钟的秒数转换回时间格式,这样就完成了对时间的向上取整操作,使其最接近的整分钟。
## 3、向下取整 ##
FLOOR() 函数:该函数可以向下取整,返回小于或等于指定数字的最大整数。
SELECT FLOOR(number);
## 4、截断数字到指定的小数位数 ##
TRUNCATE()函数:该函数可以截取数字到指定的小数位数。
SELECT TRUNCATE(number, decimals);
## 5、格式化数字并添加千位分隔符 ##
FORMAT() 函数:该函数可以格式化数字并添加千位分隔符。
SELECT FORMAT(number, decimals);
注:小数后添加千位分隔符会按照四舍五入的方式
## 6、向左或向右填充字符串##
LPAD() 和 RPAD() 函数:这两个函数分别用于向左或向右填充字符串,可以用来控制字符串的长度和精度。
SELECT LPAD(number, 字符串总长度,'填充')
SELECT LPAD(number, 10, '0');
SELECT RPAD(number, 10, ' ');
注:要补充空格需要加空格' ',如果不加会显示NULL
## 7、 从左或从右截取字符串 ##
1、LEFT()函数
语法:LEFT(character,integer)
注释:参数1:要截取的字符串,参数2:截取字符个数
说明:返回从字符串左边开始指定个数的字符
select LEFT('SqlServer_2023',3)
结果:Sql
2、RIGHT()函数
语法:RIGHT(character,integer)
注释:参数1:要截取的字符串,参数2:截取字符个数
说明:返回从字符串右边开始指定个数的字符
select RIGHT('SqlServer_2023',4)
结果:2023
##写出对应的语句,验证相关函数的结果 ##
1 SELECT ROUND(123.456, 2); -----123.46
2 SELECT CEIL(123.456); ----- 124
3 SELECR FLOOR(123.456); ----- 123
4 SELECT TRUNCATE(123.45678, 3); -----123.456
5.1 SELECT FORMAT(12345678, 4); -----12345678.0000
5.2 SELECT FORMAT(123.45678, 3); -----123.457
6.1 SELECT LPAD(123456, 10, '0'); -----0000123456
6.2 SELECT RPAD(123456, 10, '0'); -----1234560000
6.3 SELECT LPAD(123456, 10, ' '); -----123456
6.4 SELECT LPAD(123, 10, ' '); ----- 123
6.5 SELECT LPAD(123456, 10, '');-----NULL
7.1 SELECT LEFT ('HELLOWORLD',5);-----HELLO
7.2 SELECT RIGHT ('HELLOWORLD',5);-----WORLD