MySQL 数据类型

  • MySQL 数据类型
  • 1.数值类型
  • 2.字符串类型
  • 3.时间日期类型


MySQL 数据类型

1.常见的数据类型

在MySQL数据库管理系统中,可以通过存储引擎来决定表的类型。同时,MySQL数据库管理系统也提供了数据类型决定表存储的数据的类型。MySQL数据库管理系统提供的数据类型;

(1)数值类型 —— 主要用到 tinyitnt、int

整数类型 (tinyint smallint mediumint int bigint)
浮点数类型 (Float double)
定点数类型 (DEC)
位类型 (BIT)

(2)字符串类型 —— 主要用到的是char、varchar、eumn、set

char系列 char Varchar
TXXT系列 tinytext text mediumtext longtext
BLOB系列 tinyblob blob MEDIUMBLOB LONGBLOB
BINARY系列 BINARY VARBINARY
枚举类型: eumn
集合类型: SET

(3)时间和日期类型

Date 2020-03-22
time 12:45:25
dateime 2020-03-22 12:45:25
timestamp 2020-03-22 12:45:25
year 2020


1.数值类型

注意:以下内容目的不是为了求证,已经是规定好的,知道是做什么的就好

一、整数类型测试

作用:用于存储用户年龄、游戏的Level、经验值等

学习目的:了解数据类型对插入的数值有影响

1.tinyint、int

  • tinyint 最小的整形
  • int 常规的整形

数据库类型timestamp 怎么接收 数据库数据类型时间_字符串

插入数值(111,111)

mysql> insert into test1 values(111,111);

数据库类型timestamp 怎么接收 数据库数据类型时间_数据类型_02

tinyint

为tinyint_test插入一个128的值 —— 报错(超出范围), 插入127可以;

数据库类型timestamp 怎么接收 数据库数据类型时间_mysql_03

int

插入数值最大——(2147483647)

数据库类型timestamp 怎么接收 数据库数据类型时间_mysql_04

2.无符号整形测试

约束条件unsigned限定只能存储正直(无符号)

数值加大了,但是不能查复数

数据库类型timestamp 怎么接收 数据库数据类型时间_数据类型_05

tinyint:插入数值:最大255

mysql> insert into test2(tinyint_test) values(255) ;
Query OK, 1 row affected (0.00 sec)

mysql> insert into test2(tinyint_test) values(256);
ERROR 1264 (22003): Out of range value for column ‘tinyint_test’ at row 1

int:

mysql> insert into test2(int_test) values(2147483648);
Query OK, 1 row affected (0.01 sec)

3.整形的宽度

重新创建一个数据库school

mysql> show databases;
mysql> use school;

(1)创建表 t1,id2(宽度8)

mysql> create table t1(id1 int,id2 int(8));

插入宽度为9的值,int(8)只显示宽度 ——没什么用

mysql> insert into t1 values(123456789,123456789);

数据库类型timestamp 怎么接收 数据库数据类型时间_mysql_06

(2)创建t2表 注:zerofill表示0填充

mysql> create table t2(id1 int zerofill,
-> id2 int(8) zerofill
-> );

zerofill表示0填充

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库_07

mysql> insert into t2 values(1,1);

mysql> insert into t2 values(123456789,123456789);

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库类型timestamp 怎么接收_08

结论:

1.tinyint、int:tinyint最大值为127,int最大值为2亿多

2.无符号整形测试:只能存储正值,int最大255

3.整形的宽度:不是限制,只是显示宽度,因此建议整形无需指定宽度,zerofill表示0填充;


二、浮点数类型测试(float、double)

作用:用于存储用户的身高、体重、薪水等

浮点数和定点数都可以用数据类型名称后加(M,D)的方式表示,(M,D)表示一共显示M位数字(···整数位+小数位),其中D位于小数点后面,M和D又称为精度和标度
float和double在不指定精度时,默认会按照实际的精度来显示,而dwcimal在不知道精度时, 默认的整数位为10,默认的小数位为0

mysql> create table t3(
-> float_test float(5,2)
-> );

t3 表:整数位3位、小数位2

注: float(5,2):不是整数位5位,小数位3位;而是整数位3位。小数位2位;

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库类型timestamp 怎么接收_09

(1)插入值(10.2)和(80.123)

整数部分没有超过5位,但80.123小数部分超过2位, —— 不会四舍五入;

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库类型timestamp 怎么接收_10

(2)插入8000.127,会报错(第1行的’float_test’列超出范围值)

mysql> insert into t3 values(8000.127);
ERROR 1264 (22003): Out of range value for column ‘float_test’ at row 1


三、定点数(decimal)

mysql> create table t4(decimal_test decimal(5,2));

数据库类型timestamp 怎么接收 数据库数据类型时间_mysql_11

(1)插入数值(70.254)

  • mysql> insert into t4 values(70.254),(70.156);

定点数:四舍五入

数据库类型timestamp 怎么接收 数据库数据类型时间_数据类型_12


四、位类型测试(BIT)

注:用的不是特别多

BIT(M)可以用来存放多位二进制,M范围1~64,如果不写默认1

位对于位字段可以使用函数读取:

  • bin( )显示为二进制
  • hex( )显示为十进制

mysql> create table test_bit(
-> id bit(4)
-> );

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库_13

(1)插入一个4

  • mysql> insert into test_bit values(4);

注:查看并非select * from test_bit

数据库类型timestamp 怎么接收 数据库数据类型时间_mysql_14


2.字符串类型

字符串类型:主要用到的是char、varchar、eumn、set -

  • char系列 char Varchar
    TXXT系列 tinytext text mediumtext longtext
    BLOB系列 tinyblob blob MEDIUMBLOB LONGBLOB
    BINARY系列 BINARY VARBINARY
    枚举类型: eumn
    集合类型: SET

1.char、varchar

作用:用于存储用户的姓名、爱好、发布的文章等;

char 列的长度固定为创建表时声明的 长度:0~255
varchar 列中的值为可变长字符串, 长度:0~65535

注:在检索的时候,CHAR列表删除了尾部的空格,而VAECHAR则保留空格

mysql> create table t9(
-> c char(5),
-> v varchar(5)
-> );

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库_15

(1)插入字符串‘abcde’

mysql> insert into t9 values(‘abcde’,‘abcde’);

数据库类型timestamp 怎么接收 数据库数据类型时间_字符串_16

插入字符串‘abcdef’ 失败

(2)插入字符串‘ab空格’

mysql> insert into t9 values('ab ','ab ');

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库类型timestamp 怎么接收_17

或者:没多大意义

select concat(c,’=’),concat(v,’=’) from t9;

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库类型timestamp 怎么接收_18


2.ENUM枚举/set集合

enum类型即枚举类型,集合类型set测试

字段的值只能再给定范围中选举,常见的是单选按钮和复选框

enum 单选 只能在给定的范围内选一个值,如性别sex男male/女femaleset
set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1、爱好2、爱好3)

(1)创建表

name(姓名)

sec(性别)

hobby(爱好)

tom

m

book,music

mysql> create table student3(
-> name varchar(50),
-> sec enum(‘m’,‘f’),
-> hobby set(‘book’,‘music’,‘disc’,‘game’)
-> );

数据库类型timestamp 怎么接收 数据库数据类型时间_数据类型_19

(2)插入值

mysql> insert into student3 values(‘tom’,‘m’,‘music,boot’);

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库_20

插入一个hobby中的没有的值,会报错

查看表结构,详细信息

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库类型timestamp 怎么接收_21


3.时间日期类型

时间和日期类型

作用:用于存储用户的注册时间,文章的发布时间,文章的更新时间,员工的入职时间

  • Date 2020-03-22
    time 12:45:25
    dateime 2020-03-22 12:45:25
    timestamp 2020-03-22 12:45:25
    year 2020

(1)创建表(date、time、datetime)

mysql> create table t6(
-> d date,
-> t time,
-> dt datetime);

数据库类型timestamp 怎么接收 数据库数据类型时间_mysql_22

查看当前时间

mysql> select now();

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库类型timestamp 怎么接收_23

插入数据

mysql> insert into t6 values(now(),now(),now());

自动会取前面的一部分

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库类型timestamp 怎么接收_24

(2)创建表t7 --timestamp

  • mysql> create table t7(id timestamp);

数据库类型timestamp 怎么接收 数据库数据类型时间_字符串_25

插入now() 空值 , 没有值默认会取年月时分秒

mysql> insert into t7 values(now());

数据库类型timestamp 怎么接收 数据库数据类型时间_字符串_26

注意事项:其他时间,按要求插入

插入两位年份时,尽量使用4位值

  • <=69,以20开头,比如65,结果2065
  • <=70以19开头,比如82,结果1982

(3)创建表 year

mysql> create table t8(y year);

数据库类型timestamp 怎么接收 数据库数据类型时间_数据库_27

插入数据(year=2020)(yeas =2066) 当前年

mysql> insert into t8 values(2020);
mysql> insert into t8 values(66);
mysql> insert into t8 values(now());

数据库类型timestamp 怎么接收 数据库数据类型时间_字符串_28