sql学习记录7-数据类型INTEGER\DECIMAL\FLOAT、CHAR\VARCHAR、DATE\TIME\DATETIME、常用数值函数和文本函数

本文详细介绍了SQL中的数据类型,包括数值型(INTEGER, DECIMAL, FLOAT)、文本型(CHAR, VARCHAR)和日期型(DATE, TIME, DATETIME)。还通过Navicat实操演示了数据类型的使用,如新建表、填数据,并讲解了数值函数(如ABS, SQRT)和文本函数(如CHAR_LENGTH, UPPER)以及日期函数的应用。" 100606206,8328493,PCL点云处理:深度图转换与曲面重建,"['点云处理', '深度图像', 'PCL库', '三维重建', '计算机视觉']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据处理-数据类型

在这里插入图片描述截图来自‘未明学院’

1. 数值型

1.1 整型integer
用法: INTEGER, INTEGER(10)

注:
(1)10为显示宽度(即精度),显示10位数字
(2)一般不写精度

1.2 定点型decimal
定义:固定位数的小数

用法:
(1)Decimal(2,2)。第一个2表示两个数,第二个2表示小数点后两位。这种数不会超过1,比如0.16总共是两位,恰好是在小数点后的两位。

(2) DECIMAL(4,2)。总长度是4位,小数点是后2位,那么小数点前是两位,因为4-2=2。比如10.00

(3)decimal格式用于精确计算,比如金额

(4)多出的位数四舍五入

(5)默认参数为Decimal(10,0),即长度10,小数点后0位,相当于整数啦。

注:一般不填写精度

1.3 浮点型 float\double\real
定义:不固定位数的小数

用法:
(1)不固定位数,直接写。FLOAT / DOUBLE / REAL

(2)固定位数,标出精度。FLOAT(5,3)

(3)多出位数五舍六入。解释:数字是10.0005,FLOAT(5,3),那么结果是10.000

2. 文本型-区分大小写

2.1 CHAR 定长字符串

举例:‘home’、‘SQL’、‘数据类型’
用法:CHAR(10),标定长度为10,即字符个数为10
注:定长字符串,如果定了10个字符,写了4个字符,那么系统自动给补上6个空位.
优势:长度固定,查找方便

2.2 VARCHAR 可变长字符串

用法:VARCHAR(100),标定长度位100,但可以不填满
注:可变长字符串动态分配,不存在不足位,
优势:灵活、省空间

文本型数据的长度单位----字符个数
有些编码语言或DBMS中(sql语言)为字节长度,有些为字符长度。
UTF-8中,1个中文字符占3个字节,1个数字或英文占1个字节。
gbk中,1个中文字符占2个字节

3. 日期型

3.1 DATE

定义:日期型Y-m-d
用法:DATE
举例:‘2018-09-01’

3.2 TIME

定义: 时间型H:i:S
用法:TIME
举例:‘23:08:01’

3.3 DATETIME

定义: 日期型 Y-m-d H-i-s
用法:DATETIME
举例:‘2018-09-01 23:08:01’

注:
(1)会自动调整格式.指的是如果某一列是日期型格式,那么即使没有写成1987-09-07形式,默认的存储也是日期型
(2)可以插入文本或数字,1987年9月7日

Navicat实操–新建表填数据;查看日期型数据

1.新建一个表
在这里插入图片描述2.录入数据
在这里插入图片描述填入‘名、类型、长度‘
点击’添加字段‘,即增加一列

注:
(1)在sql中float、double、real型是没有区别的。
(2)主键的字段名不能为空不能重复。其他可以空(NULL)
在这里插入图片描述确定第一个为主键,点一下即可
在这里插入图片描述
保存,输入表名 test_sjlx
在这里插入图片描述
出现了左侧新表 test_sjlx
在这里插入图片描述在每个列下面可以录入数据了,录入一行后,点左下角“√”,提交这条信息。
在这里插入图片描述提交之后变化:
在这里插入图片描述原来是*,代表活动状态,现在变成三角。

再来增加第二条记录,点击左下角“+”。
在这里插入图片描述在这里插入图片描述在这里插入图片描述解释
因为在建表的时候,设置的id_float、id_float3、id_price小数点位数都是3位,id_float、id_float3是float型,所以超出位数“五舍六入”,id_price时decimal型数据,所以超出位数“四舍五入”

即:
decimal 四舍五入
float 五舍六入

继续添加第三条记录
在这里插入图片描述提交,报错,原因主键不能同名,id_integer是主键,所以任意两行不相同,那么改成2,提交
在这里插入图片描述
这里的id_float、id_float3、id_price与录入时的内容也不同,原因与前面一样。

同样,char数据类型也有长度的检查,char(10)就只能输入10个字符(10个数字或10个字母、或10个文字)。

3.4 对数据类型的操作–函数使用在这里插入图片描述

1.函数名:决定函数功能
2.参数:列名,作用于该列的每一个单元格

3.常见函数

(1)数值型数据处理函数
参数为数值。

绝对值函数ABS,例,ABS(-3)=3;

平方根函数SQRT,例,SQRT(4)=2;
指数函数EXP,例,EXP(4)=e^4;

四舍五入函数ROUND,例,第二个参数是小数点位数,ROUND(1.234,2) = 1.23

圆周率函数PI,例,PI() = Π

(2)文本型数据处理函数
参数为文本,参数要用英文单引号包住。

常见的:
字符长度CHAR_LENGTH,例,CHAR_LENGTH(‘数据’) = 2

字节数LENGTH, 例,LENGTH(’数据‘)=6;当然不同的编码语言中,中文文字代表的字节数不同。

去除右边空值RTRIM, 例,RTRIM('home ') = ‘home’

去除左边空值LTRIM,例,LTRIM(’ home’) = ‘home’

大写字母转换UPPER,例,UPPER(‘home’) = ‘HOME’

小写字母转换LOWER,例,LOWER(‘HOME’) = ‘home’

注:不同的DBMS中会有一点不同,一般需要测试后使用。

(3)日期型数据处理函数
参数为日期型数据,参数要用英文单引号包住。

常见的日期型处理函数:

获取具体日期段 YEAR、MONTH、DAY,例,
YEAR(‘2019-1-2’) = ‘2019’

获取具体时间段 HOUR、MINUTE、SECOND,例,HOUR(‘14:05:55’) = ‘14’

获取月份名称 MOTHNAME,例,MOTHNAME(‘2019-1-2’) = ‘JAN’

获取当前日期时间 NOW,例,NOW() = systime

获取当前日期 CURDATE,例,CURDATE() = ‘20190501’

获取当前时间 CURTIME,例,CURTIME() = ‘15:10:39’

时间增加 DATE_ADD,例,DATE_ADD(‘20190501’,INTERVAL 1 MONTH)

时间减少 DATE_SUB,例,DATE_SUB(‘20190501’, INTERVAL 1 YEAR)

navicat 实操

1.直接用navicat的’计算器‘模式测试一下

SELECT ABS(-3);
SELECT ABS(3);
SELECT SQRT(25);
SELECT EXP(2);
SELECT PI();

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

SELECT LENGTH('1234');#字节数
SELECT CHAR_LENGTH('1234');#字符数
SELECT LENGTH('数据');
SELECT CHAR_LENGTH('数据');
SELECT LENGTH('ABCD');
SELECT CHAR_LENGTH('ABCD');

在这里插入图片描述在这里插入图片描述在这里插入图片描述

SELECT RTRIM('     1234     ');
SELECT LTRIM('     1234     ');

在这里插入图片描述

SELECT LOWER('ABCD');
SELECT UPPER('abcd');

在这里插入图片描述

#获取当前日期
SELECT NOW(); #得到日期和时间
SELECT MINUTE(NOW()); #得到时间中的分钟
SELECT CURDATE(); #日期
SELECT CURTIME(); #时间

在这里插入图片描述

2. 函数可以嵌套

SELECT UPPER(RTRIM('abcd    '));

在这里插入图片描述

SELECT MINUTE(NOW()); #得到时间中的分钟
SELECT t.id_char, UPPER(t.id_char) FROM test_sjlx AS t; #不改变原表

在这里插入图片描述

SELECT 
t.id_char 
,LENGTH(t.id_char),'个字节'   
,CHAR_LENGTH(T.id_char),'个字符'
FROM test_sjlx AS t;
#与上片代码同样的结果,为了看的清楚一点,再变化一下

SELECT 
t.id_char 
,CONCAT( 
         LENGTH(t.id_char),'个字节'  
				 ) AS LENGTH1	    
,CONCAT(
         CHAR_LENGTH(t.id_char),'个字符'  
				 ) AS CHAR_LENGTH1
FROM 
test_sjlx AS t;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值