mysql数据类型

MySQL的数据类型

数值列类型
mysql提供了五种整型: tinyint、smallint、mediumint、int和bigint。int为integer的缩写。这些类型在可表示的取值范围上是不同的。
整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。各种类型的存储量需求也是不同的。取值范围较大的类型所需的存储量较大。
mysql 提供三种浮点类型: float、double和decimal。
在这里插入图片描述

create table t1() 在当前数据库中表名称不允许重复,如果重复则报错
create table if not exists t1 如果t1表不存在才执行创建操作,如果已存在则不执行任何操作
无符号的写法:

  • create table t13(id tinyint unsigned);

定点的浮点数

  • create table t14(id numeric(8,2)); 表示总位宽为8位,小数为2位,其中的正负号和小数点不进行计算
    小数处理采用的是四舍五入

完整性约束

  • primary key 用于声明主键,非空唯一。一个表只能定义一个主键,但是主键允许使用多个列构成(复合主键) create table
    t17(id int primary key); create table t18(
    id int, name varchar(20),
    primary key(id,name)); 表示id和name的组合不允许为空【任何一个都不允许为null】,不允许重复,不是其中某个列不允许为空,不允许重复

4种用户定义约束

  • null允许为空,默认/not null不允许为空 id int not null表示id列不允许为空,如果插入null值则报错

    default设置默认值,如果试图插入null,则加入null,默认值无效;如果不针对当前列进行操作,则默认值生效 create
    table t1(id int default 1,name varchar(20)); Insert into t1
    values(null,‘yan’); 此时id插入null值。如果insert into t1(name)
    values(‘yan’)则默认值生效

    check检查型约束,可以定义,语法create table t1(id int check(id>5));
    要求插入的数据必须满足条件id>5,但是在mysql中无效

    unique唯一性约束,表示列中的数据不允许重复,否则报错,拒绝操作 create table t1(id int unique);
    允许为null,null表示不确定的值

数值列属性

  • AUTO_INCREMENT以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成。MySQL支持多种数据表,每种数据表的自增属性都有差异
    create table t16(id int primary key auto_increment);
    只有不插入数据或者插入null值时才会自动生成自增的值

字符串列类型

在mysql中使用单引号表示字符串类型,事实上不区分单双引号,但是一般建议使用单引号,允许使用\转义字符
在这里插入图片描述
create table t1(id char(2)); 表示id为字符串类型,允许最大存储2个字符,不区分中英文

char(2)表示存储的字符个数为2,如果实际长度大于2则报错;如果实际存放的字符数不足,则自动末尾补充空格。

varchar(2)表示存储的字符个数最大为2,存放字符数不足时按照实际长度存放

  • 如果存放字符串末尾是空格时,会自动裁剪到满足长度限制为止,注意不能裁剪开头的和中间的空格
  • 等值判定时空格不参与

char与varchar的区别

1、char是定长数据,如果char(10)但里面只保存了1个字符,则它的实际长度仍然是10。Mysql对查询的结果进行了处理 ,所以使用length无法判断它所占用的长度;varchar(10)时,如果里面只保存了1个字符,则它的长度为1,所以varchar被称了可变长字符
2、char的取值范围为0-255;varchar的取值范围为0-65535。如果需要存储的字符串的长度跟所有值的平均长度相差不大,适合用char,如MD5。 对于经常改变的值,char优于varchar,原因是固定长度的行不容易产生碎片。
3、对于很短的列,char优于varchar,原因是varchar需要额外一个或两个字节存储字符串的长度
4、char和varchar后面如果有空格,char会自动去掉空格后存储,varchar虽然不会去掉空格,但在进行字符串比较时,会去掉空格进行比较

大对象类型

在这里插入图片描述
BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求
TINYTEXT可变长度最多 255 个字符;TEXT可变长度最多 65535 个字符;MEDIUMTEXT可变长度最多 16M个字符;LONGTEXT可变长度,最多4G个字符

set和枚举

在这里插入图片描述
enum枚举类型实际上是当作字符串进行处理,设置当前列中所允许的取值,取值只能是枚举值中的任意一个值
create table t1(id enum(‘a’,’b’,’c’));
set集合类型实际上是当作字符串进行处理,设置当前列中所允许的取值,取值可以是集合中的任意多个值
create table t1(id set(‘a’,’b’,’c’));

日期和时间列类型

在这里插入图片描述
在这里插入图片描述
date类型只能存放日期,datetime可以存放日期和时间
在这里插入图片描述
datetime一般供用户使用,而timestamp可以存放1970-2038年的日期和时间,一般供系统使用
默认值的设置问题
在这里插入图片描述
需求:需要当不添加数据时,自动填充服务器的系统当前时
在这里插入图片描述

位类型bit

bit 表示1个二进制的位 bit(8) 表示8个二进制的位,其中n的取值范围为1-64
在这里插入图片描述
注意boolean类型
在这里插入图片描述

总结

定义数据类型就是定义列,数据类型决定数据的特性
数据类型主要分为字符串类型,浮点书类型和定点数类型,日期类型以及二进制类型
数据类型在不同的存储引擎上表现不同
根据所采用的数据类型,需求和数据特性选择数据类型

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值