• 列类型概述


    数据库中的每个表都是由一个或多个列构成的。可以用 CREATE TABLE 语句创建一个表,创建表时要为每列指定一个类型。列的类型与数据类型相对应,但是比数据类型更为具体,用列类型描述表列可能包含的值的种类以及范围,列的值必须符合规定,不能包含对应的数据类型所允许的所有值。例如,CHAR(16)就规定了存储的字符串值必须是16位。当然不是你必须存储16个字符,而是指列在表中要占16个字符的宽度的。

    MySQL的列类型是一种手段,通过这种手段可以描述一个表列包含什么类型的值,这又决定了 MySQL 怎样处理这些值。例如,数值值既可用数值也可用串的列类型来存放,但是根据存放这些值的类型,MySQL 对它们的处理将会有些不同。每种列类型都有几个特性如下:

    • 其中可以存放什么类型的值。
    • 值要占据多少空间,以及该值是否是定长的(所有值占相同数量的空间)或可变长的(所占空间量依赖于所存储的值)。
    • 该类型的值怎样比较和存储。
    • 此类型是否允许 NULL 值。
    • 此类型是否可以索引。

    下面是创建一个表的例子:

    CREATE TABLE teacher

    (

    id TINYINT UNSIGNED NOT NULL,

    name CHAR(16) NOT NULL,

    tele NUMERIC(8),

    sex ENUM("F","M") DEFAULT "M"

    )

    由上面这个例子可以知道,创建列类型的语法是:

    col_name col_type [col_attributes][general_attributes]

    • col_name 列的名字
    • col_type 列类型,控制存储在列中的数据类型
    • col_attributes 专用属性,只能应用于制定列,例如,我们还不知道的BINARY。如果你使用专用属性,必须在列的类型之后,列的通用属性之前。
    • general_attributes通用属性,可以应用在出少数列的任意列,例如上面提到了NULL、NOT NULL、和DEFAULT。

    我们将简要地考察一下 MySQL列类型以获得一个总的概念,然后更详细地讨论描述每种列类型的属性。

    MySQL的数字类型如表1-3所示,可以包括浮点类型和整数类型:

    表1-3 MySQL的数字列类型

    类型名

    涵义

    TINYINT

    一个很小的整数

    SMALLINT

    一个小整数

    MEDIUMINT

    一个中等大小整数

    INT、INTEGER

    一个正常大小整数

    BIGINT

    一个大整数

    FLOAT

    一个小(单精密)浮点数字

    DOUBLE

    DOUBLE PRECISION

    REAL

    一个正常大小(双精密)浮点数字

    DECIMAL

    NUMERIC

    一个未压缩(unpack)的浮点数字,“未压缩”意味着数字作为一个字符串被存储

    MySQL的字符串类型如表1-4所示,串类型中不仅可以存储字符串,实际上任何二进制数据,例如,图象、音频、视频等,都可以存储在串类型中。

    表1-4 MySQL的字符串列类型

    类型名

    涵义

    CHAR

    一个定长字符串

    VARCHAR

    一个变长字符串

    TINYBLOB

    TINYTEXT

    最大长度为255(2^8-1)个字符的BLOB或TEXT列

    BLOB

    TEXT

    最大长度为65535(2^16-1)个字符的BLOB或TEXT列

    MEDIUMBLOB  

    MEDIUMTEXT  

    最大长度为16777215(2^24-1)个字符的BLOB或TEXT列

    LONGBLOB

    LONGTEXT

    最大长度为4294967295(2^32-1)个字符的BLOB或TEXT列

    ENUM('value1','value2',...)  

    枚举:列只能赋值为某个枚举成员或NULL

    SET('value1','value2',...)  

    集合:列可以赋值为多个集合成员或NULL

    MySQL的日期与时间类型如表1-5所示。MySQL允许你存储某个“不严格地”合法的日期值,例如1999-11-31,原因我们认为它是应用程序的责任来处理日期检查,而不是SQL服务器。为了使日期检查更“快”,MySQL仅检查月份在0-12的范围,天在0-31的范围。

    表1-5 MySQL的时间和日期列类型

    类型名

    涵义

    DATE

    一个日期,以'YYYY-MM-DD'格式来显示

    TIME

    一个日期和时间组合,以'YYYY-MM-DD HH:MM:SS'格式来显示

    DATETIME

    最大长度为255(2^8-1)个字符的BLOB或TEXT列

    TIMESTAMP

    一个时间戳,

    以YYYMMDDHHMMSS格式来显示

  • 相关阅读:
    StackView
    横竖屏
    Html
    UILabel
    NSString
    NSPredicate|谓词
    iphone
    函数
    UIBezierPath
    UICollectionView
  • 原文地址:https://www.cnblogs.com/ryansunyu/p/4209010.html
Copyright © 2020-2023  润新知