首页 > 数据库 >MySQL的字段类型(数据类型)

MySQL的字段类型(数据类型)

时间:2022-11-23 19:12:23浏览次数:64  
标签:insert 存储 into 数据类型 values MySQL 类型 table create

MySQL的字段类型

创建表的完整语法

create table 表名(
	字段名 字段类型(数字) 约束条件,
	字段名 字段类型(数字) 约束条件,
 	字段名 字段类型(数字) 约束条件
);
  1. 字段名字段类型是必须的

  2. 数字约束条件是可选的

  3. 约束条件也可以写多个,空格隔开即可

  4. 最后一行结尾不能加逗号

在创建表的完整语法中,我们可以看见有很多概念,像python中的数据类型一样,表的每个字段也要有存储的形式,被称为字段类型,它决定了该字段下数据的数据类型。

字段类型之整型

整型类型关键字 字节数 可表示范围 可加装约束条件
tinyint 1bytes 默认-128~127(正负号占1bit) unsigned,zerofill
smallint 2bytes 默认-215~215-1 unsigned,zerofill
int 4bytes 默认-231~231-1 unsigned,zerofill
bigint 8bytes 默认-263~263-1 unsigned,zerofill

每种整型都是存储整数数字的,只是表示的数据范围不一样,但是用法都一样。

整型后不用跟(数字),MySQL会默认帮我们加,加不加都是一样的,这个数字指的是限制存储长度

create database field_type_test;  # 创建一个测试字段类型的库
use field_type_test;
create table t1(id tinyint);
insert into t1 values(-129),(128);  # 报错
create table t2(id tinyint unsigned);  # 创建无符号数的字段
insert into t2 values(-1);  # 报错
insert into t2 values(255);
select id from t2;  # 显示有一个255的值
严格模式

所有版本的MySQL都会有严格模式,包括这里演示使用的5.6版本,但是在我们配置my.ini时可能会将严格模式的配置给覆盖掉,详细请看:https://www.cnblogs.com/Leethon-lizhilog/p/16915231.html 的最后小节。

严格模式的作用是:如果一个数据超出了我们存储的范围,那么就应该不做数据存储。而如果不加严格模式,上述的代码向tinyint插入一条128这样一个整数,那么MySQL也会存储这个数据,但是做了处理存储为127。显然这样的数据就没有意义了,所以严格模式很有必要。

字段类型之浮点型

浮点型类型关键字 精确度 描述
float(size,d) 日常够用 带有浮动小数点的小数字
double(size,d) 精确度更高 带有浮动小数点的大数字
decimal(size,d) 十分精确 精度更高的浮点数,允许固定的定点数

size指最大存储位数,d指小数位最大位数

create table t3(id float(65,20));
create table t4(id double(65,20));
create table t5(id decimal(65,20));
insert into t3 values(1.11111111111111111111);
insert into t4 values(1.11111111111111111111);
insert into t5 values(1.11111111111111111111);

运行结果如下,每种浮点型就是数据精度不一样,日常用float存储就够了:

image

字段类型之字符类型

字符类型关键字 存储方式 优点 缺点
char(size) 定长存储,空格填充 整存整取需要更少的IO,存取快 数据存储不够灵活,一些场景很浪费空间
varchar(size) 变长存储,有几位存几位 面对长度不一的数据存储更灵活,节省存储空间 取出需要先读报头再根据报头取数据,两次IO,存取慢

size指存储字符最大长度,超出这个范围存储会报错(严格模式下)

针对定长存储和边长存储我们要权衡存储空间和存取速度之间选择更加合适的方案。

如存储中文姓名,大部分都是两个字或三个字,但是也有四个字的和少数民族很长的名字,这种就要采取变长存储。而如果存储学号,则所有的学号都是一个格式,就可以采取定长存储来达到更快的存取。

create table t6(name varchar(16), stu_number char(10));
insert into t6 values('leethon','12345');
insert into t6 values('jj','00001');

image

字段类型之枚举与集合

关键字 含义
enum(数据1,数据2,。。) 枚举,从多个选一个
set(数据1,数据2,。。) 集合,从多个选多个

枚举

create table t7(name varchar(16), gender enum('male','female','others'));  # 性别只有一个,用枚举
insert into t7 values('leethon','male');
insert into t7 values('zhonger','猛男');  # 报错,必须输入枚举中的一个
insert into t7 values('renyao','others');

查看结果:

image

集合

create table t8(name varchar(16),hobbies set('二次元','三次元','四次元'));  # 爱好可以有多个,用集合
insert into t8 values('糖豆人','异次元');  # 报错
insert into t8 values('chunai','二次元');  
insert into t8 values('leethon','二次元,三次元,四次元');  # 可以一次添加多个,引号中逗号隔开

查看结果:

image

字段类型之日期类型

日期类型关键字 描述
datetime 年月日时分秒
date 年月日
time 时分秒
year
create table t9(
	id int,
  	name varchar(32),
 	register_time datetime,
 	birthday date,
 	study_time time,
 	work_time year
);
insert into t9 values(1,'jason','2000-11-11 11:11:11','1998-01-21','11:11:11','2000');

ps:涉及到日期相关字段一般都是系统自动获取,无需我们手动操作,这里仅作演示。

image

标签:insert,存储,into,数据类型,values,MySQL,类型,table,create
From: https://www.cnblogs.com/Leethon-lizhilog/p/16919477.html

相关文章

  • MySQL数据库基础2
    今日内容概要字符编码与配置文件数据库存储引擎创建表的完整语法MySQL字段基本数据类型今日内容详细字符编码与配置文件1.\s查看MySQL相关信息 当前用户版本编......
  • 初识MYSQL
    目录:1、表2、数据库2.1数据库管理系统2.2数据库系统2.3DBMS的工作流程3、关系型数据库4、非关系型数据库5、关系型数据与非数据库的区别6、mysql7、......
  • 字段类型
    字段类型整型MySQL数据库中整型的字段类型有多个,但是我们只需要了解其中几个即可tinyint 1bytes 正负号(占1bit)smallint 2bytes 正负号(占1bit)int 4by......
  • 数据库的基本数据类型
    字符编码与配置文件数据库引擎操作创建表的完整语法MySQL字段基本数据类型MySQL字段常见约束条件今日内容详细字符编码与配置文件1.\s查看MySQL相关信息 当前用......
  • MySQL字符编码、存储引擎、严格模式、字段类型之浮点 字符串 枚举与集合 日期类型
    目录字符编码与配置文件数据路储存引擎创建表的完整语法字段类型之整型严格模式字段类型之浮点型字段类型之字符串类型数字的含义字段类型之枚举与集合字段类型之日期类型......
  • sap-mm-移动类型不能用mbst的问题
    新建了一对移动类型,zs1/zs2,为了使业务简明,我把其它不要的事物码都从这两个移动类型中踢除了。正常业务用zs1没有问题,但当用mbst做冲销时,就报错zs2不可用,我将mb......
  • mysql隔离级别参数和会话动态设置--笔记
    1、参数设置可选参数有:READ-UNCOMMITTED,READ-COMMITTED,REPEATABLE-READ,SERIALIZABLE.如:transaction_isolation=REPEATABLE-READ或transaction-isolation=READ-CO......
  • 字符编码,存储引擎及MySQL字段类型相关知识点
    字符编码,存储引擎及MySQL字段类型相关知识点一、字符编码1.在终端输入\s,查看数据库的基本信息(当前用户,版本,编码,端口号)2.默认的配置文件是my-default.ini拷贝上述的文......
  • python四十期--mysql
    昨日内容回顾存取数据演变史1.文本文件2.目录规范3.数据库ps:数据处理统一数据库应用史1.本地存储2.网络存储ps:数据库集群数据库本质数据库在不同的场......
  • 配置文件 数据库存储引擎 严格模式 MySQL字段基本数据类型
    目录字符编码与配置文件\s查看MySQL相关信息修改配置文件my-default.ini解决5.6版本字符编码问题配置文件什么时候加载?偷懒操作:输入mysql直接登录root账户数据库存储引擎存......