Mysql常用的数据类型(列类型)

Mysql常用的数据类型(列类型)

数值类型

  • BIT(M):位类型,M指定位数,默认值:1,范围1-64
  • TINYINT[UNSIGNED]占一个字节:带符号的范围是-128到127。无符号0到255。默认有符号。
  • SMALLINT[UNSIGNED]占两个字节:带符号的是:负的215到215-1,无符号0到2^16-1
  • MEDIUMINT[UNSIGNED]3个字节:带符号的是:负的223到223-1,无符号0到2^24-1
  • INT[UNSIGNED]四个字节:带符号的是:负的231到231-1,无符号0到2^32-1
  • BIGINT[UNSIGNED]8个字节:带符号的是 负的263到263-1,无符号0到2^64-1
  • FLOAT[UNSIHNED]:占用空间4个字节
  • DOUBLE[UNSIGNED]:表示比float精度更大的小数,占用空间8个字节
  • DECIMAL(M,D)[UNSIGNED]:定点数M指定长度,D表示小数点位数

int例

#演示整型的一个
#使用tinyint来演示范围 -128---127 ,如果没有符号,则是0-255
#表的字符集,校验规则,存储引擎,使用默认的
#如果没有指定unsigned ,tinyint就是有符号的类型
CREATE TABLE t3(
	id TINYINT
);
#INSERT INTO :添加指令
INSERT INTO t3 VALUES(-128);
SELECT*FROM t3;
#定义一个无符号的整数类型
CREATE TABLE T5(
	id TINYINT UNSIGNED);
INSERT INTO t5 VALUES(0);
	
SELECT*FROM t5;

bit例

#演示bit类型的使用
#1. bit(m) m在1-64之间,如果我写了个8,就相当于占一个字节
#2. 添加数据  的范围,按照你给定的位数来确定,比如m=8,那就是1个字节,0-255,
#3. 显示按照 位(bit) 的方式显示

CREATE TABLE t6(num BIT(8));

INSERT INTO t6 VALUES(10);
SELECT *FROM t6;
#4.查询时也可以按照数字来查询
SELECT *FROM t6 WHERE num =255;

DECIMAL(M,D)[UNSIGNED]

#演示decimal类型,float,double的使用

#创建表
CREATE TABLE t07(
	num1 FLOAT,
	num2 DOUBLE,
	num3 DECIMAL(30,20));
#向表中添加数据
INSERT INTO t07 VALUES(88.12345678,88.12345678,88.12345678)
SELECT *FROM t07;

#decimal能存放的数据是非常大的
CREATE TABLE t08(
	num1 DECIMAL(65));
INSERT INTO t08 VALUES(123456789012345678901234567890);
SELECT *FROM t08;
	

字符串char varchar

#演示字符串类型char Varchar
#注释快捷键:shift+ctrl+c
#取消注释快捷键,shift+ctrl+r
-- char (size)
-- 	固定长度字符串,最大255字符
-- 	
-- Varchar (size) (0----65535)
-- 	可变长度字符串,最大65532字节,[utf8编码最大21844字符,1-3个字节记录大小]
-- 如果表的编码是utf-8 varchar(size)  size =65535  , 但要预留1-3个字节,(65535-3)/3=21844
-- 如果表的编码是gbk varchar(size)  size =65535  , 但要预留1-3个字节,(65535-3)/2=32766

CREATE TABLE T09(
	`name`CHAR (255));

CREATE TABLE t11(
	`name` VARCHAR(32766) CHARSET gbk);

字符串的使用细节

#演示字符串类型的使用细节
#细节1
#char(4)
#这个4,表示的是字符数(最大255),而不是字节,不管是中文还是字母,都是放四个,按字符计算
#varchar(4)
#这个4,表示的是字符数,而不是字节,不管是中文还是字母,都是放四个,不管是中文还是字母都是以定义好的编码来存放数据
#utf8 4*3=12 字节  , gbk 4*2=8字节
CREATE TABLE t12(
	`name`CHAR(4));
INSERT INTO t12 VALUES('abcd');
INSERT INTO t12 VALUES('赵钱孙李');
SELECT * FROM t12;
# 细节2
#char(4),是定长的,也就是说,即使你插入aa,也会占用分配的4个字符
#varchar(4),是变长的,也就是说,如果你插入了aa,实际占用的空间并不是四个字符,而是按照实际
#占用的空间来分配,注意:varchar本身还要占用1-3个字节来存储记录存放的长度


# 细节3
#什么时候用char,什么时候用varchar
-- 1.如果数据是定长,如:密码,邮箱,邮编,手机号,身份证号等等
-- 2.如果一个字段的长度是不确定的,如文章 ,留言板等等
#查询速度: char> varchar


#细节4
-- 在存放文本时,也可以使用Text,来代替varchar,
-- 注意:Text不能有默认值,大小:0---2^16
-- 如果希望存放更多的字符可以使用:
-- MEDIUMTEXT  0--2^24
-- 或
-- LONGTEXT   0-2^32 

CREATE TABLE T13(content TEXT,content2 MEDIUMTEXT,content3 LONGTEXT);
INSERT INTO t13 VALUES('lyc学java','lyc学mysql','学习学习mysql10000');
SELECT *FROM t13;

文本,二进制类型

  • CHAR(size)char(20):固定长度字符串 最大255

  • VARCHAR(size) varchar(20):可变长度字符串0-65535[即:2^16-1]

  • BLOB LONGBLOB:二进制数据 BLOB:0~2^16-1 LONGBLOB:0~2^32-1

  • TEXT LONGTEXT :文本 Text:0~2^16 LONGTEXT:0-2^32

时间日期

#演示时间相关类型
#创建一张表,date,datatime,tamestamp
CREATE TABLE t15(
	birthday DATE,#生日
	job_time DATETIME,#记录年月日,时分秒
	login_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
	ON UPDATE CURRENT_TIMESTAMP);
#登录时间,如果希望login_time自动更新,需要设置自动以当前时间更新 
	
INSERT INTO t15(birthday,job_time)
	VALUES('2022-11-11','2021-11-20 10:10:10');
#如果我们更新了t15表的某个字段,我们的login_time会自动的以当前时间进行更新
SELECT * FROM t15;
  • DATA

  • DATATIME:时间戳,它可用于自动记录insert,update操作的时间

  • TimeStamp

    • 日期类型(YYYY-MM-DD,(YYYY-MM-DD HH:MM:SS),
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

玥骋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值