MySQL笔记系列MySQL数据类型

Posted Stata与风险管理

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL笔记系列MySQL数据类型相关的知识,希望对你有一定的参考价值。

1 mysql 数据类型(列类型)

首先我们先创建一个表,然后针对其中的内容对数据类型一一进行介绍,其实大都是常见的类型,像整型、浮点型、字符型……(和大部分编程语言介绍类似)

# 命令创建表
CREATE TABLE user1(
    id INT,
    `name` VARCHAR(255),
    `password` VARCHAR(255),
    `birthday` DATE)
    CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;

2 数值类型

2.1 整型

  • tinyint1 个字节
  • smallint2 个字节
  • mediumint3 个字节
  • int4 个字节
  • bigint8 个字节

2.2 小数类型

  • float4 个字节
  • double8 个字节
  • decimal [M,D] 大小不确定

3 文本类型(字符串类型)

  • char:0~255
  • varchar:0~2^16-1
  • text:0~2^16-1
  • longtext:0~2^32-1

4 二进制数据

  • blob:0~2^16-1
  • longblob:0~2^32-1

5 日期类型

  • date【日期 年月日】
  • time【时间 时分秒】
  • datetiem【年月日 时分秒 YYYY-MM-DD HH:mm:ss】
  • timestamp 【时间戳】

6 数据类型演示

# 演示整型的是一个(tinyint演示)
# 如果没有指定unsigned,则tinyint就是有符号,有符号的-128~127.没有符号,0~255
# 1.如果没有指定unsigned,则tinyint就是有符号
# 2.如果有指定unsigned,则tinyint就是无符号
# -129报错,128正常

create table t3(
    id tinyint);
INSERT INTO t3 VALUES(-128)
SELECT * FROM t3
    
create table t4(
    id tinyint unsigned);
INSERT INTO t4 VALUES(255)
SELECT * FROM t4    

# 演示bit类型使用
# 说明
# 1.bit(m) m 在 1-64
# 2.添加数据 范围 按照你给的位数来确定,比如m = 8 表示一个字节 0~255
# 3.显示按照bit
# 4.查询时仍然可以按照数来查询
create table t05 (num bit(8));
Insert into t05 values(3);
INSERT INTO t05 VALUES(255);
select * from t05;
insert into t05 (1,3);
insert into t05 values(2,65)
select * from t05 where num = 1;

# 演示小数类型
create table t06 (
    num1 float,
    num2 double, 
    num3 decimal(30,20));
    
insert into t06 values(88.12345678912345,88.12345678912345,88.12345678912345);
select * from t06;

#decimal可以存放很大的数
create table t07(
    num decimal(65));

insert into t07 values(89999999999999999999999999);

select * from t07;

create table t08(
    num bigint unsigned);
insert into t08 values(89999999999999999999999999); #报错
SELECT * FROM t08; #无法插入次数据

# 演示字符串类型使用
# 注释的快捷键 shift + ctrl + c ,注销注释 shift + Ctrl + r
-- CHAR(size)
-- 固定长度字符串 最大225字符
-- 可变长度字符串 最大65532字节【utf8编码最大21844字符 1-3个字节用于记录大小】
-- 如果表的编码是utf8 varchar(size) size=(65532-3)/3=21844
-- 如果表的编码是gbk varchar(size) size=(65532-3)/2=32766

create table t09(
    `name` char(255));

create table t10(
    `name` varchar(21844));
    
cREATE TABLE t11(
    `name` VARCHAR(32766)) charset gbk;


# 演示字符串使用细节
## char(4) 和 varchar(4) 这个4表示的是字符,而不是字节,不区分字符是汉字还是字母
## 如果数据是定长,推荐使用char,比如密码、身份证号
## 如果字段长度不确定,我们使用varchar,比如留言、文章
## 查询速度:char>varchar


create table t11(
    `name` char(4));
insert into t11 values('吞吞吐吐拖');

select * from t11;

CREATE TABLE t12(
    `name` varCHAR(4));
INSERT INTO t12 VALUES('吞吞吐吐拖jjj');
INSERT INTO t12 VALUES('吞吞吐吐');
INSERT INTO t12 VALUES('北京欢迎');

SELECT * FROM t12;

# 如果varchar不够用,可以考虑使用mediumtext 或者 longtext
# 如果想简单点,可以使用直接使用text
create table t13(content text,content2 mediumtext,content3 longtext);
insert into t13 values('田文涛教育','田文涛教育100''田文涛教育100~~')
select * from t13


# 演示时间相关的类型
# 创建一张表,date,datetime,timestamp
create table t14{
    birthday date , -- 生日
    job_time datetime, -- 记录年月日 时分秒
    login_time timestamp
              not null default current_timestamp
              on update current_timestamp);-- 登录时间,如果希望login_time列自动更新
                
select * from t14;
insert into t14(birthday,job_time)
    values('2022-11-11','2022-11-11 10:00:00);
    
-- 如果我们更新t14表的某条记录,login_time列会自动的以当前时间进行更新

以上命令在 Mysql 中会动转换成大写,大写的均为 MySQL 中的关键字。

好了,今天的分享就先到这了,主要是对数据类型的介绍(简单来讲是数字、字符串(文本)、日期等),很多都可以类似 Excel, 可以对比着体会一下。


以上是关于MySQL笔记系列MySQL数据类型的主要内容,如果未能解决你的问题,请参考以下文章

MySQL系列:kafka停止命令

linux中怎么查看mysql数据库版本

mysql学习笔记--- MySQL数据类型

mysql系列之二数据类型和运算符

Mysql+Mybatis分页查询——数据库系列学习笔记

Mysql+Mybatis分页查询——数据库系列学习笔记