数据库学习:MySQL的数据类型

一、MySQL的数据类型

1.字符串数据类型

最常用的数据类型是串数据类型。它们存储串,如名字、地址、电话号码、邮政编码等。
不管使用何种形式的串数据类型,串值都必须括在引号内。
有两种基本的串类型,分别为定长串和变长串。

- 定长串:char
1.接受长度固定的字符串,其长度是在创建表时指定的。
定长列不允许存储多于指定长度字符的数据。
2.指定长度后,就会分配固定的存储空间用于存放数据。
char(7)不管实际插入多少字符,它都会占用7个字符位置。

- 变长串:varchar
存储可变长度的字符串。
varchar(7)如果实际插入4个字符,那么它只占用4个字符位置,当然插入的数据长度不能超过7个字符

注意
既然变长数据类型这样灵活,为什么还要使用定长数据类型?
因为性能:MySQL处理定长列远比处理变长列快得多。

2.数值类型

数值数据类型存储数值。取值范围越大,存储空间越大。
decimal(5,2)
表示数值总共5位,小数占2位。
float
小数后面不限制长度
tinyint
1字节(8位)0-255。-128,127
int
4字节。0-2亿。-21亿,21亿。
有符号或无符号
所有数值数据类型都可以有符号和无符号

  • 有符号数值列可以存储正或负的数值
  • 无符号数值列只能存储正数
  • 默认情况为有符号,但如果你知道自己不需要存储负值,可以使用UNSIGNED关键字变成无符号。
    注意
    如果将邮政编码类似于01234存储为数值类型,则保持的数值是1234
    此时需要使用字符串类型。

3.日期和时间类型

MySQL使用专门的数据类型来存储日期和时间值。
DATE
表示1000-01-01~9999-12-31的日期,格式为YYYY-MM-DD
TIME
格式为HH:MM:SS
DATETIME
DATE和TIME的组合
datetime
8字节1000-01-01 00:00:00~9999-12-31 23:59:59

4.二进制数据类型

二进制数据类型可存储任何数据,如图像、多媒体、字处理文档等
通常情况下不会使用数据库二进制存储图像等信息。

二、表的字段约束

  • unsigned无符号(给数值类型使用,表示为正数,不写可以表示正负数都可以)。
  • 字段类型后面加括号限制宽度
    1.char(5).varchar(7)在字符类型后面加限制 表示字符串的长度
    2.int(4)没有意义,默认无符号的int为int(11),有符号的int(10)
    3.int(4) unsigned zerofill只有当给int类型设置有前导零时,设置int的宽度才有意义。
  • not null不能为空,在操作数据库时如果输入该字段的数据为NULL,就会报错
  • default设置默认值
  • primary key主键不能为空,且唯一。一般和自动递增一起配合使用。
  • auto_increment定义列为自增属性,一般用于主键,数值会自动+1。
  • unique唯一索引(数值不能重复:用户名)可以增加查询速度,但是会降低插入和更新速度。

三、MySQL的运算符

  • 算数运算符:+、-、*、/、%
  • 比较运算符:=、>、<、>=、<=、!=
  • 数据库特有的比较:in、not in、is null、is not null、like、between、and
  • 逻辑运算符:and、or、not
  • like:支持特殊符号(通配符)%和_
  • 其中%表示任意数量的任意字符,_表示任意一位的字符。

四、主键

  • 表中每一行都应该有可以唯一标识自己的一列,用于记录两条记录不能重复,任意两行都不具有相同的主键值。
  • 应该总是定义主键 虽然并不总是需要主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主键,以便于以后的数据操作和管理。
    要求
  • 记录一旦插入到表中,主键最好不要再修改
  • 不允许NULL
  • 不在主键列中使用可能会更改的值
  • 自增数据类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键
  • 联合主键,不常用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值