zoukankan      html  css  js  c++  java
  • MySQL 数据库字段类型使用说明

    简介

    MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。

    数值类型

    下列用于描述的代码字母中:

    M表示最大的显示尺寸。最大的合法的显示尺寸是 255 。(注意是显示尺寸是存储数字的位数,不是存储空间大小,数值列创建时,MySQL将为存储数据分配合适大小的空间,从1个字节到8个字节不等)

    D适用于浮点类型并且指出跟随在十进制小数点后的数的位数。最大可能的值是30,但是应该不大于M-2。

    方括号(“[”和“]”)指出可选的类型修饰符的部分。

    注意,如果你指定一个ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。UNSIGNED 表示向服务器指明该列存储的数据>=0。

    tinyint

    格式:TINYINT[(M)] [UNSIGNED] [ZEROFILL]

    占1字节,一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。

    smallint

    格式:SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

    占2字节,一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。

    mediumint

    格式:MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

    占3字节,一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

    int

    格式:INT[(M)] [UNSIGNED] [ZEROFILL]

    占4字节,一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

    同义词:integer

    bigint

    格式:BIGINT[(M)] [UNSIGNED] [ZEROFILL]

    占8字节,一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。

    float

    格式:FLOAT[(M,D)] [ZEROFILL]

    占4字节,一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。

    没有参数的FLOAT或有一个参数的FLOAT(X)(X<=24)的表示一个单精密浮点数字。

    double

    格式:DOUBLE[(M,D)] [ZEROFILL]

    占8字节,一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。

    没有一个参数的DOUBLE或有一个参数的 DOUBLE(X)(25 < = X < = 53)代表一个双精密浮点数字。

    同义词:double precision、real

    decimal

    格式:DECIMAL[(M[,D])] [ZEROFILL]

    一个未压缩(unpack)的浮点数字。不能无符号。行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。小数点,并且对于负数,“-”符号不在M中计算。如果D是0,值将没有小数点或小数部分。

    DECIMAL值的最大范围与DOUBLE相同,但是对一个给定的DECIMAL列,实际的范围可以通过M和D的选择被限制。如果D被省略,它被设置为0。如果M被省掉,它被设置为10。注意,在MySQL3.22 里,M参数包括符号和小数点。

    同义词:numeric

    注意:

    (1)所有算术运算中用有符号的BIGINT或DOUBLE值完成,因此你不应该使用大于9223372036854775807(63位)的有符号大整数,除了位函数!

    (2)当两个参数是INTEGER值时,-、+ 和 * 将使用BIGINT运算!这意味着如果你乘2个大整数(或来自于返回整数的函数),如果结果大于9223372036854775807,你会得到一个错误的结果。

    (3)一个浮点数字,不能是无符号的,对一个单精度浮点数,其精度可以是<=24,对一个双精度浮点数,是在25和53之间。

    日期时间类型

    date

    格式:YYYY-MM-DD

    占3字节,表示一个日期。支持的范围是'1000-01-01'到'9999-12-31',MySQL以'YYYY-MM-DD'格式来显示DATE值,但是允许使用字符串或数字把值赋给DATE列。

    time

    格式:HHH:MI:SS

    占3字节,表示一个时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HHH:MI:SS'格式来显示TIME值,但是允许你使用字符串或数字把值赋给TIME列。

    year

    格式:YYYY

    YEAR[(2|4)]

    占1个字节,一个2或4位数字格式的年(默认是4位)。允许的值是1901到2155,和0000(4位年格式),如果你使用2位,则允许的值是1970-2069( 70-69)。MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列。

    datetime

    格式:YYYY-MM-DD HH:MI:SS

    占8个字节,一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MI:SS'格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列。

    timestamp

    格式:TIMESTAMP[(M)]

    占4个字节,一个时间戳记。范围是'1970-01-01 00:00:00'到2037年的某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD 格式来显示TIMESTAMP值,取决于是否M是14(默认值)、12、8或6,但是允许你使用字符串或数字把值赋给TIMESTAMP列。

    一个TIMESTAMP列对于记录一个INSERT或UPDATE操作的日期和时间是有用的,因为如果你不自己给它赋值,它自动地被设置为最近操作的日期和时间。你以可以通过赋给它一个NULL值设置它为当前的日期和时间。

    字符串类型

    char

    格式:CHAR(M) [BINARY]

    一个定长字符串,当值被存储时,总是是用空格填满右边到指定的长度。M的范围是1~255个字节。当值被检索时,空格尾部被删除。

    CHAR值根据缺省字符集以不区分大小写的方式排序和比较,除非给出BINARY关键词。CHAR是CHARACTER的一个缩写。

    varchar

    格式:VARCHAR(M) [BINARY]

    一个可变长字符串。当值被存储时,尾部的空格被删除。M的范围是1~65535个字节。

    VARCHAR值根据缺省字符集以不区分大小写的方式排序和比较,除非给出BINARY关键词值。 VARCHAR是CHARACTER VARYING一个缩写。

    tinytext

    0-255字节,短文本字符串。

    text

    0-65535字节,长文本数据。

    mediumtext

    0-16777215字节,中等长度文本数据。一般存储文档使用。

    longtext

    0-4294967295字节,极大文本数据。一般存储文档使用。

    0-255字节,不超过 255 个字符的二进制字符串。

    blob

    0-65535字节,二进制形式的长文本数据。

    mediumblob

    0-16777215字节,二进制形式的中等长度文本数据。

    longblob

    0-4294967295字节,二进制形式的极大文本数据。

    其他类型

    字段的值只能在给定范围中选择,如单选框,多选框

    enum 单选,只能在给定的范围内选一个值,如性别 sex 男male/女female。

    set 多选,在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)。

    enum

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

    枚举。一个仅有一个值的字符串对象,这个值式选自与值列表'value1'、'value2', ...,或NULL。一个ENUM最多能有65535不同的值。

    CREATE TABLE shirts (
    name VARCHAR(40),
    size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
    );
      
    INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');

    set

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

    一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表'value1', 'value2', ...选出。一个SET最多能有64个成员。

    CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
    
    INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
  • 相关阅读:
    83. Remove Duplicates from Sorted List
    35. Search Insert Position
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    111. Minimum Depth of Binary Tree
    169. Majority Element
    171. Excel Sheet Column Number
    190. Reverse Bits
  • 原文地址:https://www.cnblogs.com/wbxk/p/10384230.html
Copyright © 2011-2022 走看看