SQL中常见的数据类型

SQL中常见的数据类型

概述

  1. 数值型
    整数:整型
    小数:定点数、浮点数
  2. 字符型
    较短的文本:char、varchar
    较长的文本:text、blob(用于保存较长的二进制数据,例如图片)
  3. 日期型

一、整型

分类

tinyint(1个字节)、smallint(2个字节)、mediumint(3个字节)、int/integer(4个字节)、bigint(8个字节)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aLSdR2si-1676519414338)(DataType%int.PNG)]
注:它们的区别仅仅在于可保存的数值范围

特点

  1. 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加关键字unsigned
  2. 如果插入的数值超出了范围,会报Out of range异常,并且插入的值是该数值型存储范围的临界值
  3. 如果不设置长度,会有默认的长度
  4. 长度代表了显示的最大宽度,如果数值本身不够的话会用0在左边填充,但必须搭配关键字zerofill来使用
  • 如何设置有符号和无符号

    drop table if exists tab_int;
    create table tab_int(t1 int,t2 int unsigned);#有符号
    desc tab_int;
    insert into tab_int values(-8,-8);
    select * from tab_int;#显示-8 0
    
  • Out of range问题

    insert into tab_int values(2147483648,4294967296);
    select * from tab_int;
    
  • 设置长度
    注:加了关键字zerofill,左边填补的0才会显示出来,并且如果使用了zerofill,则必须是无符号整数(不然报错)

    drop table if exists tab_int;
    create table tab_int(t1 int,t2 int unsigned,t3 int(7),t4 int(7) zerofill);
    select * from tab_int;
    insert into tab_int values(-8,123456,12,12);
    

二、小数

分类

  1. 浮点型
    float(M,D)
    double(M,D)
  2. 定点型
    dec(M,D)
    decimal(M,D)

特点

  • M:整数位数+小数位数
    D:小数位数
    如果超过范围,则插入临界值
  • M和D都可以省略
    如果是decimal,则默认M为10,D为0
    如果是float和double,则会根据插入的数值的精度来决定精度
  • 定点型的精度较高,如果要求插入数值的精度较高如货币运算等则可以考虑使用,否则一般考虑使用float
  • 原则:
    所选择的类型越简单越好,能保存的数值的类型越小越好

测试特点
(1)M与D的含义

create table tab_float(f1 float(5,2),f2 double(5,2),f3 decimal(5,2));
desc tab_float;
select * from tab_float;
insert into tab_float values(123.43,123.43,123.43);

在这里插入图片描述

insert into tab_float values(223.432,223.432,223.432);

在这里插入图片描述

insert into tab_float values(323.4,323.4,323.4);

在这里插入图片描述

insert into tab_float values(4323.4,4323.4,4323.4);#整数位超出了3

在这里插入图片描述

(2)省略M与D

drop table if exists tab_float;
create table tab_float(f1 float,f2 double,f3 decimal);
desc tab_float;

在这里插入图片描述

三、字符型

确切地,应该称为串数据(包含文本型和二进制)

较短的文本(重点介绍):

  1. char 与varchar
    在这里插入图片描述

    特点:

    写法M的意思特点空间的耗费效率
    charchar(M)最大的字符数,可以省略,默认为1固定长度的字符比较耗费稍高
    varcharvarchar(M)最大的字符数,不能省略可变长度的字符比较节省稍低

    例:如果要存储性别字段,建议使用char,如果是家庭住址字段,建议使用varchar。

  2. binary和varbinary类型
    类似于char和varchar可以用于保存较短的二进制字符串

  3. enum枚举类型

  4. set集合类型

较长的文本:
text、blob

案例:枚举类型的设置

create table tab_char(c1 enum('a','b','c'));
desc tab_char;
insert into tab_char values('a');
insert into tab_char values('b');
insert into tab_char values('c');
insert into tab_char values('d');#报错,插入失败
insert into tab_char values('A');#不区分大小写
select * from tab_char;

在这里插入图片描述

create table tab_set(s1 set('a','b','c','d'));
insert into tab_set values('a');
insert into tab_set values('a,b,c');
insert into tab_set values('A,B,B');
insert into tab_set values('a,b,c,d');
drop table if exists tab_set;
select * from tab_set;

在这里插入图片描述

四、日期型

分类

date 只保存日期
time 只保存时间
year 只保存年

datetime 保存日期+时间
timetamp 保存日期+时间

特点

字节范围时区等的影响
datetime81000-9999不受
timestamp41970-2038

timestamp比较容易受时区、语法模式和版本的影响,更能反映当前时区的真实时间

案例:关于datetime与timestamp

create table tab_datetime(d1 datetime,d2 timestamp);
insert into tab_datetime values(now(),now());

在这里插入图片描述

set time_zone='system';
show variables like 'time_zone';
set time_zone='+9:00';#修改一下时区,将东八区修改为东九区 
select * from tab_datetime;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇迹luanluan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值