MySQL学习第六天 学习MySQL基本数据类型

2019-01-03 23:05:53于丽

1)、CHAR(n)和VARCHAR(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可插入m个中文,但是实际会占用m*3个字节。

2)、同时CHAR和VARCHAR最大的区别就在于CHAR不管实际VALUE都会占用n个字符的空间,而VARCHAR只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。

3)、超过CHAR和VARCHAR的n设置后,字符串会被截断。

4)、CHAR在存储的时候会截断尾部的空格,VARCHAR和TEXT不会。

5)、VARCHAR会使用1-3个字节来存储长度,TEXT不会。

6)、CHAR类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围从 0-255。比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。

       例如我们存储登录用户的用户名就是使用VARCHAR(20):

CREATE TABLE tb1( username VARCHAR(20) );

实例:

       我们现在来验证上述四个字段是否能创建成功:

CREATE TABLE tb1 ( username VARCHAR(20), age TINYINT UNSIGNED, salary FLOAT(8,2) UNSIGNED, brithday DATE );

       创建数据表tb1和查看数据表结构的结果为:


       我们向数据表tb1中插入记录:INSERT tb1 VALUES('Tom',22,5555.55,'1994-10-01'); 

       执行的结果显示为:


四、复合类型

  MySQL还支持两种复合数据类型ENUM和SET,它们扩展了SQL规范。虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。一个ENUM类型只允许从一个集合中取得一个值;而SET类型允许从一个集合中取得任意多个值。

(1)ENUM类型       

ENUM(“member1″, "member2″, … “member65535″)

ENUM数据类型就是定义了一种枚举,最多包含65535个不同的成员。当定义了一个ENUM的列时,该列的值限制为列定义中声明的值。如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值。

ENUM类型因为只允许在集合中取得一个值,有点类似于单选项。在处理相互排拆的数据时容易让人理解,比如人类的性别。ENUM类型字段可以从集合中取得一个值或使用NULL值,除此之外的输入将会使MySQ在这个字段中插入一个空字符串。另外如果插入值的大小写与集合中值的大小写不匹配,MySQL会自动使用插入值的大小写转换成与集合中大小写一致的值。