MySQL003:MySQL字段类型

一,字段类型
1,数字类型
整数类型:
Tinyint:占1个字节 的极小整型 ,范围:-128-127或0-255

CREATE TABLE shu1(
      s1 TINYINT,
      s2 TINYINT UNSIGNED
      )
      INSERT INTO shu1 VALUES(-128,255) 

注意:

UNSIGNED属性就是将数字类型无符号化,与C、C++这些程序语言中的unsigned含义相同。例如,INT的类型范围是-2 147 483 648 ~ 2 147 483 647, INT UNSIGNED的范围类型就是0 ~ 4 294 967 295。

Smallint:所占2个字节的 小整型,范围是 -32768-32767或 0-65535
Mediuint:所占3个字节的 中整型
Int:所占4个字节的 整型
Bigint:所占8个字节的 大整型
小数类型:
Float:有效位数(有效值+估算值) 6位
Double:15位有效数字
Decimal(m,n):定长,m最大是65,n最大 是38,代表整数一共65位,小数最多38位,且小数位数不够的时候,后面会自动补0
Decimal使用经常和金钱打交道,比如1.34345454千亿,用float和double会对小数超出有效位数的进行估读,从而发生精度损失
字符串类型
Char():定长,浪费空间,但是速度快,最大值是255
Varchar(20):变长,节省空间,但是速度慢

它速度慢是因为它没多放一个,都要一个一个的去数,从而给它开一个合适的空间,但是对于定长,他的空间是一定大小的,所以不去一个一个的数,所以char速度快,但是他浪费空间,因为不管你给里面放1个还是多个,它开辟的空间是一定的,多余出来的用空补上

它占的最大数是65535个字节,其中2个字节用来存放该列的长度值,再用一个字节存放null值,剩余65532才做其他的操作。
Gbk编码下一个汉字占2个字节,所以它的最大列宽是65532/2,也就是放这么多汉字
Latin1编码下一个字符就占一个字节,所以最大列宽是65532
Utf8编码下一个汉字占3个字节,所以最大列宽是65532/3
Nchar()定长
Nvarchar():变长
注意他们的区别:
Char和vchar用来存储非汉字的(数字字母,其他字符串),Nchar和Nvarchar 用来存储汉字的

Char(20)放40个字母或20个汉字,也就是按照字符大小放
Nchar(20)就是放20个字母或20个汉字,也就是直接数个数往里面放

查询mysql所支持的编码表:

    SHOW CHARACTER SET

在这里插入图片描述
设置当前会话的编码格式

SET NAMES gbk

注意:MySQL所使用的编码表是gbk,但是海豚客户端使用的编码表是utf8。
好像设置完了之后只支持Latin1编码表

 SET NAMES latin1

在这里插入图片描述
海豚告诉mysql服务器我要用latin1解码,你就用 latin1给我编码
三,枚举类型

设定enum的时候,需要给定“固定的几个选项”;选择存储的时候只能用固定的选项里的值。存储的时候就只存储其中的一个 值。这就是枚举

Enum():说起头就能想起尾就是枚举
比如我说星期一,联想到星期二。。。。。星期天
比如我说1月,联想到2月,3月。。。。12月
比如说男联想到 女

CREATE TABLE shu3(
      s1 TINYINT,
      s2 ENUM('男','女'),
      s3 NCHAR(20)
      )

在非严格模式下,输入男女之外的其他字符串不会报错,但是写进去的时候是null,表示不知道性别。但是进去可以设置。但在严格模式下,会报错。
在这里插入图片描述
Set()设置:
在设置一列爱好,选项有吃喝玩乐

 ALTER TABLE shu3 ADD hobbat SET('吃','喝','玩','乐')

在这里插入图片描述

INSERT INTO shu3 VALUES(3,'男','利拉德','喝,乐')

注意最后喝乐,两个爱好用一个单引号。
在这里插入图片描述
四,日期类型
Date 年月日
Datetime 年月日时分秒
Timestame距离1970年1,1 00:00:00的毫秒数
Time:计时器
日期范围:

datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038
date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31
year 1 bytes YYYY 1901 ~ 2155

去掉日期中的-
日期关键字要用反引号,

SELECT a,b+0 FROM `time`//a,b前后对比发现b去掉了-

猜你喜欢

转载自blog.csdn.net/weixin_44699728/article/details/90177047
今日推荐