MySQL数据类型

本文深入探讨MySQL中的各种数据类型,包括数字类型、时间和日期类型、字符串类型等,通过实例演示每种类型的特性和使用场景,是数据库设计和应用的重要参考资料。

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

(参考《MySQL数据库原理、设计与应用》)
一、数字类型
1.整数类型
(1)创建my_int表,选取int和tinyint两种类型测试。
use mydb;
create table my_int(
int_1 int,
int_2 int unsigned,
int_3 tinyint,
int_4 tinyint unsigned
);
(2)插入记录进行测试
insert into my_int values(1000,1000,100,100);
(3)查看my_int表结构
desc my_int;
(4)创建表my_int2为字段设置零填充(zerofill)
create table my_int2(
int_1 int(3) zerofill,
int_2 int(6) zerofill);
(5)插入数据测试
insert into my_int2 values(1234,2);
select * from my_int2;
2.浮点数类型(float类型的精度为6位或7位,超出精度,可能会导致给定数值与实际保存的数值不一致,发生精度损失。)
(1)创建表my_float,选取float类型进行测试
create table my_float(f1 float,f2 float);
(2)插入未超出精度的数字
insert into my_float values(111111,1.11111);
(3)插入超出精度的数字
insert into my_float values(1111111,1.111111);
(4)插入7位数,第7位四舍五入
insert into my_float values(1111114,1.111115);
(5)插入8位数,第7位四舍五入,第8位忽略
insert into my_float values(11111149,1.1111159);
(6)查询结果
select * from my_float;
3.定点数类型
(1)创建表my_decimal,选取decimal类型进行测试
create table my_decimal (d1 decimal(4,2),d2 decimal(4,2));
(2)插入的小数部分超出范围时,会四舍五入并出现警告
insert into my_decimal values(1.234,1.235);
show warnings;
(3)插入的小数部分四舍五入导致整数部分进位时,插入失败
insert into my_decimal values(99.99,99.999);
输出结果为
ERROR 1264 (22003): Out of range value for column ‘d2’ at row 1
(4)查询结果
select * from my_decimal;
4.BIT类型(用于存储二进制数据,语法为BIT(M),M表示位数,范围为1~64。)
(1)获取字符“A”的ASCIIMA码,结果为65
select ascii(‘A’);
(2)将十进制数转换为二进制数,并计算长度,结果分别为1000001、7
select bin(65),length(bin(65));
(3)创建表,然后插入数据
create table my_bit(b BIT(7));
insert into my_bit values(65);
(4)查询数据,查询结果为“A”
select * from my_bit where b=65;
(6)查询数据并转为二进制数字显示,查询结果为“1000001”
select bin(b) from my_bit;
二、时间和日期类型
1.year类型
create table my_year(y year);
insert into my_year values(2020);
2.date类型
设置d字段的数据类型为date
create table my_date(d date);
插入日期数据
insert into my_date values (‘2020-01-21’);
插入当前系统日期
insert into my_date values (current_date);
insert into my_date values (now());
3.time类型
以’HHMMSS’字符串或者HHMMSS数字格式表示;使用CURRENT_TIME或NOW()输入当前系统时间。
4.datetime类型
以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字符串格式表示的日期和时间。
三、字符串类型
1.char和varchar类型
定义方式如下:
char(m)
varchar(m)
2.text类型
用于保存大文本数据,分为四种类型(tinytext mediumtext text longtext)。
3.enum类型(枚举类型)
(1)创建表
create table my_enum(gender enum(‘male’,‘female’));
(2)插入两条测试记录
insert into my_enum values(‘male’),(‘female’);
(3)查询记录,查询结果为“female”
select * from my_enum where gender=‘female’;
(4)插入枚举列表中没有的值
insert into my_enum values(‘m’);
报错:ERROR 1265 (01000): Data truncated for column ‘gender’ at row 1
4.set类型(用于保存字符串对象)
(1)创建表
create table my_set(hobby set(‘book’,‘game’,‘code’));
(2)插入三条测试记录
insert into my_set values(’’),(‘book’),(‘book,code’);
(3)查询记录,查询结果为“book,code”
select *from my_set where hobby=‘book,code’;
5.binary和varbinary类型
(1)创建表,插入测试记录
create table my_binary(b1 binary(4),b2 varbinary(4));
insert into my_binary values(‘abc’,‘xyz’);
(2)查询记录,两次查询结果分别为“abc\0”和“xyz”(\0显示为空格)
select b1 from my_binary where b1=‘abc\0’;
select b2 from my_binary where b2=‘xyz’;
(3)查询记录,由于区分大小写(binary和varbinary都区分大小写),查询结果为空
select b1 from my_binary where b1=‘ABC\0’;
select b2 from my_binary where b2=‘XYZ’;
6.blob类型(blob类型数据是根据二进制编码进行比较和排序)
(1)创建表,插入测试记录
create table my_blob(b blob);
insert into my_blob values(‘data’);
(2)查询记录,查询结果为“data”
select b from my_blob where b=‘data’;
(3)查询记录,由于区分大小写,查询结果为空
select b from my_blob where b=‘Data’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值