数据处理-数据类型
截图来自‘未明学院’
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;