mysql数据类型2

字符串类型

•       CHAR和VARCHAR数据类型

•       BLOB和TEXT类型

•       ENUM类型

•       SET类型   

CHAR和VARCHAR数据类型

          CHAR数据类型用于表示固定长度的字符串,长度可以是1~255之间的任何值。VARCHAR的列中的值是变长字符串,取值范围同CHAR类型相同。

           CHAR和VARCHAR数据类型的区别主要在于存储时所需空间不同。当一个给定列为char类型时,存储时其长度将被修正为创建表时所声明的长度。而VARCHAR值只存储所需的字符,外加一个字节记录长度,值不被填补。如表17-3所示为存储一系列不同的串值到CHAR(4)和VARCHAR(4)列的结果。

   【范例17-7】创建一个表ch_type,含有4个字段分别为ch1、ch2、ch3、ch4,对应类型和长度分别为char(3)、varchar(3)、char(4)、varchar(4)。

BLOB和TEXT类型

           BLOB和TEXT类型通常用来保存较大文本,二者之间的差别是BLOB能用来保存二进制数据,比如图片、声音等。而TEXT只能保存字符数据,比如新闻、日记等,

           一个BLOB可用来保存可变数量的数据的二进制的对象,4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,仅仅在它们保存值的最大长度方面有所不同。

           4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于4个BLOB类型,并且与BLOB有着同样的最大长度和存储需求。

ENUM类型

          ENUM类型是一个字符对象,其值通常从创建表时所明确列举的值中选择。ENUM类型在数据库内部并不是用字符的方式存储的,而是使用一系列的数字,因此其查找更为高效。

         枚举值的数目决定了ENUM列的存储大小。一个字节可表示256个值,两个字节可表示65 536个值,因此,枚举成员的最大数目为65 536。但在ENUM定义中,最多指定65 535个成员,因为MySQL保留了一个错误成员,其是每个枚举的隐含成员。将一个非法值赋给ENUM列时,MySQL自动将其换成错误成员。

SET类型

           SET是可以有0个或多个值的一个字符串对象,其值必须从列举其允许值的表中选择。SET的多个值之间用逗号分开,例如:

           property SET("bag“,"book“,"pen") NOT NULL

           而property可能值为:

               ""

              "bag"

              "book"

              "bag,book"

              "pen"

               "bag,pen"

               "book,pen"

               "bag,book,pen"

            SET列的集合成员不是按顺序编号的,而是每个成员对应SET值中的一个二进制位。第一个集合成员对应于0位,第二个成员对应于1位,依此类推。数值SET值0对应于空串。SET成员以位值保存。每个字节的8个集合值可按此方式存放,因此SET列的存储值大小是由集合成员的数目决定的,最多是64个成员。

           SET定义中的值顺序决定了在显示由多个集合成员组成的SET列值时,子串出现的顺序。例如一个列被设定为SET       color("red","black","green","yellow"),其存放位置顺序如表17-5所示。

           如果给定该列复制9,即二进制数1001,则第1个和第4个SET成员被选中,其结果为“red,yellow”。从上面可以看出,对于大小为1~8、9~16、17~24、25~32、33~64个成员的集合,其SET值分别占用1、2、3、4或8个字节。因此,在给列赋值、检索时,不仅可以使用值表中的字符串,也可以使用数值来表示一个值。例如下列语句是等价的:

            INSERT my_table SET property='bag,book,pen';

            INSERT my_table SET property=7;

            INSERT my_table SET color='red';

            INSERT my_table SET color=1;

 

 

日期和时间值

•       日期时间类型

•       TIMESTAMP数据类型

•       获得当前日期

•       获得当前时间 

日期时间类型

          DATE、TIME和DATETIME是最常使用的三种日期类型,有着各自的格式:DATA的格式为YYYY-MM-DD;TIME的格式为HH:MM:SS;DATETIME的格式为YYYY-MM-DDHH:MM:SS。下面通过实例来查看它们的格式。

TIMESTAMP数据类型

           TIMESTAMP值可以从1970的某时开始一直到2037年,使用数字显示,精确到秒。使用TIMESTAMP类型可以自动地将当前的日期和时间赋给当前字段。如果使用INSERT或UPDATE直接赋值也不会引起冲突。

获得当前日期

          使用CURRENT_DATE()函数可以获得当前日期,以YYYY-MM-DD或YYYYMMDD格式返回今天日期值,其取决于函数是在一个字符串还是数字上下文中被使用。

获得当前时间

          CURRENT_TIME()函数返回当前时间,其后不要求使用圆括号,还可以使用CURTIME()函数获得当前时间。

综合练习

     1.建立一个表,其中一个字段定义为float(4,2)。插入一行数据57.1234,查看插入后的数据的真实值是多少?是否能将100插入此字段?

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值