您的位置:首页 > 汽车 > 新车 > 【Mysql】第四章 数据类型(数值+字符串+日期+enum+set)

【Mysql】第四章 数据类型(数值+字符串+日期+enum+set)

2024/11/19 18:09:17 来源:https://blog.csdn.net/YQ20210216/article/details/140961840  浏览:    关键词:【Mysql】第四章 数据类型(数值+字符串+日期+enum+set)

文章目录

  • 一、数值类型
    • 1.tinyint
    • 2.bit
    • 3.float
    • 4.decimal
  • 二、字符串类型
    • 1.char
    • 2.varchar
  • 三、时间类型
  • 四、enum和set
    • 插入-insert into
    • 查找-直接查-find_in_set


一、数值类型

1.tinyint

占用一个字节,取值范围为-128~127。

列名 tinyint
num tinyint //一个列为num的用tinyint类型

无符号tinyint,占用1字节,取值范围为0~255。

列名 tinyint unsigned
num tinyint unsigned//一个列为num的用tinyint的无符号类型

2.bit

占用1-64位数

列名 bit[(M)] //M为比特位数,范围1-64,M可以被省略,默认为1
num bit(8)//一个列num的用8个比特位

3.float

列名 float[(m, d)]//m指定显示总长度,d指定小数点位数,占4个字节
num float(4,2)//长度为-99.99~99.99总共四位数,小数点占两位

无符号float

列名 float[(m, d)] unsigned
num float(4, 2) unsigned//长度为0~99.99

4.decimal

decimal比float精度更高

列名 decimal(m, d) [unsigned]//m指定显示总长度,d指定小数点位数

注意范围不能省略

二、字符串类型

1.char

列名 char(L)//L单位是字符,最大255
num char(2)//最多插入两个字符比如'ab',但是不能插入'abc'

注意:mysql中的字符就是一个字符,一个字符可以是一个字母a也可以是一个汉字

2.varchar

列名 varchar(L)//L单位是字符,最大65535
num varchar(6)//最多插入6个字符比如'abcdef',或者6个汉字一二三四五六,但是不能插入'abcdefg',也不能插入一二三四五六七

char和varchar区别

  • char类型的数据是定长的,效率高(直接访问定长的空间)。
  • varchar类型的数据是变长的,效率低(需要先读取存储字符串的长度,再访问指定长度的空间)。

三、时间类型

列名 date//日期格式为'YYYY-MM-DD','2024-1-1',占用三字节。
列名 datetime//时间日期格式为'YYYY-MM-DD HH:MM:SS','2024-1-1 12:15:24',占用八字节。
列名 timestamp//时间戳,格式为'YYYY-MM-DD HH:MM:SS',占用四字节,插入不写的话会自动插入当前时间。

四、enum和set

设置enum值时只允许选取其中的一个值,设置set值时可以选取其中的一个或多个值

列名 enum('选项一','选项二')
列名 set('选项一','选项二')
gender enum('男','女')//设置列为gender,选项有男 女
name set('张三','李四', '王五')//name,选项有张三 李四 王五

插入-insert into

//下列表名是student
insert into student value('男', '张三');//用汉字插入一个
insert into student value('男', '张三, 李四');//用汉字插入两个,插入多个中间要用英文逗号隔开insert into student value('1', '张三');//用数字设置,提供1,2,3...insert into student value('男', 1);//用汉字插入男张三
insert into student value('男', 2);//用汉字插入男李四
insert into student value('男', 3);//用汉字插入男张三 李四

注意:set用的是用数字表示是位图,1对应0001是第一个,2对应0010是第二个,3对应0011是第一和第二个,4对应0100是第三个,以此类推。

查找-直接查-find_in_set

//下列表名是student 列名是gender 筛选是'男'或者数字1
select * from student where gender='男';  或者  select * from student where gender=1; 
select * from 表名 where 列名='描述';

find_in_set(str,strlist)函数

  • 查找strlist列中是否有str字符串
  • 查找strlist字符串中是否有str字符,返回位置,例如select find_in_set(‘a’,‘a,b,c’);//返回1
//下列表名是student 列name
select * from student where find_in_set('张三'name);//在表student中,列name中。查找'张三'
select * from 表名 where find_in_set('str',strlist);

find_in_set和直接查找区别:

  • find_in_set查找包括str的值,如查找’代码’,那么’代码’,'代码,游泳’都算
  • 直接查找只查找对应值,如查找’代码’,那么’代码’算,'代码,游泳’不算,因为多了游泳

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com