SQL基础之数据类型

目录

1,数值类型

2,字符串类型

3,日期时间类型

4,案例-根据需求创建表(设置合理的数据类型、长度)


        MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。下面通过三张表来主要介绍一下这三类数据类型。

1,数值类型

分类类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
数值类型TINYINT1 byte(-128,127)(0,255)小整数值
SMALLINT2 bytes(-32768,32767)(0,65535)大整数值
MEDIUMINT3 bytes(-8388608,8388607)(0,16777215)大整数值
INT或INTEGER4 bytes(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT8 bytes(-2^63, 2^63-1)(0,2^64-1)极大整数值
FLOAT

4 bytes

(-3.402823466 E+38,3.402823466351 E+38)0和(1.175494351 E-38,3.40282346 E+38)单精度浮点数
DOUBLE8 bytes(-1.7976931348623157 E+308,1.7976931348623157 E+308)0和(2.22507385072014 E-308,1.7976931348623157 E+308)双精度浮点数
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确点数)

        那么精度和标度又代表着什么意思呢?举个栗子,123.45,精度就是5,标度就是2。

        当我们在常见表结构时,例如,定义age 字段,使用int类型当然可以,但是int类型占用四个字节,这时候我们就可以用tinyint,又年龄都是正的,我们还可以加个unsigned,即age tinyint unsigned。再比如当我们定义一个学生的成绩字段,我们就可以score double(4,1)。4代表成绩显示的最大长度,例100.0。1代表小数点后位数。

2,字符串类型

分类类型大小描述
字符串类型char0-255 bytes定长字符串
varchar0-65535 bytes变长字符串
tinyblob0-255 bytes不超过255个字符的二进制数据
tinytext0-255 bytes短文本字符串
blob0-65535 bytes二进制形式的长文本数据
text0-65535 bytes长文本数据
mediumblob0-16777215 bytes二进制形式的中等长度文本数据
mediumtext0-16777215 bytes中等长度文本数据
longblob0-4294967295 bytes二进制形式的极大文本数据
longtext0-4294967295 bytes极大文本数据

 注:char和varchar的区别

        首先,无论是char还是varchar后面都会跟一个参数,这个参数代表着当前字符串可以存储的最大长度,如果超出50个字符将会报错。例:name varchar(50),代表name字段最大可以存储50个字符。

        其次,使用char时,这里还用上面的例子,name char(50),当用户输入的字符少于50个字符时,系统会默认补空格,以达到50个字符。而使用varchar时,当用户输入多少字符,那么这个字段的长度就占用多少个字符。

        最后,char的性能好,而varchar相比于char,性能就较差一些。这是因为varchar在使用的时候需要根据用户输入的字符来计算字段所占用的空间。

        这里提几个问题,当定义姓名字段时,我们使用哪种类型好呢?其实varchar更好一些,因为我们的名字是不定长的。当定义性别字段时,使用哪种类型好呢?char好一些,因为性别只占一个字符,要么男要么女,况且char本身性能就比varchar好。

3,日期时间类型

分类类型大小范围格式描述
日期类型date31000-01-01 至 9999-12-31YYYY-MM-DD日期值
time3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
year11901 至 2155YYYY年份值
datetime81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
timestamp41970-01-01 00:00:00 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳

        假如要描述一个同事的生日,这里定义一个brithday字段,最好是使用date类型。

4,案例-根据需求创建表(设置合理的数据类型、长度)

--设计一张员工信息表,要求如下
--1,编号(纯数字)
--2,员工工号(字符串类型,长度不超过10位)
--3,员工姓名(字符串类型,长度不超过10位)
--4,性别(男/女,存储一个汉字)
--5,年龄(正常人年龄,不可能存储复数)
--6,身份证号(二代身份证号均为18位,身份证中有X这样的字符)
--7入职时间(取值年月日即可)

--根据上述要求,创建表的语句如下
create table emp(
    id int comment '编号',
    workno varchar(10) comment '工号',
    name varchar(10) comment '姓名',
    gender char(1) comment '性别',
    age tinyint unsigned comment '年龄',
    idcard char(18) comment '身份证号',
    entrydata date comment '入职时间'
) comment '员工表';

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值