# 資料型態 https://www.youtube.com/watch?v=W_v05d_2RTo 1. 、INT:如无特殊需要,存放整型数字使用 UNSIGNED INT 型,整型字段后的数字代表显示长度。比如 id int(11) NOT NULL 2. 、DATETIME:所有需要精确到时间 (时分秒) 的字段均使用 DATETIME, 不要使用 TIMESTAMP 类型。 对于 TIMESTAMP,它把写入的时间从当前时区转化为 UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于 DATETIME,不做任何改变,基本上是原样输入和输出。 另外 DATETIME 存储的范围也比较大: timestamp 所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’。 datetime 所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。 但是特殊情况,对于跨时区的业务,TIMESTAMP 更为合适。 3. VARCHAR:所有动态长度字符串 全部使用 VARCHAR 类型,类似于状态等有限类别的字段,也使用可以比较明显表示出实际意义的字符串,而不应该使用 INT 之类的数字来代替;VARCHAR(N) N 表示的是字符数而不是字节数。比如 VARCHAR(255),可以最大可存储 255 个字符(字符包括英文字母,汉字,特殊字符等)。但 N 应尽可能小,因为 MySQL 一个表中所有的 VARCHAR 字段最大长度是 65535 个字节,且存储字符个数由所选字符集决定。 如 UTF8 存储一个字符最大要 3 个字节,那么 varchar 在存放占用 3 个字节长度的字符时不应超过 21845 个字符。同时,在进行排序和创建临时表一类的内存操作时,会使用 N 的长度申请内存。(如无特殊需要,原则上单个 varchar 型字段不允许超过 255 个字符) 4. 、TEXT:仅仅当字符数量可能超过 20000 个的时候,才可以使用 TEXT 类型来存放字符类数据,因为所有 MySQL 数据库都会使用 UTF8 字符集。 所有使用 TEXT 类型的字段必须和原表进行分拆,与原表主键单独组成另外一个表进行存放,与大文本字段的隔离,目的是。如无特殊需要,不使用 MEDIUMTEXT、TEXT、LONGTEXT 类型 5. 、对于精确浮点型数据存储,需要使用 DECIMAL,严禁使用 FLOAT 和 DOUBLE。 6. 、如无特殊需要,尽量不使用 BLOB 类型 7. 、如无特殊需要,字段建议使用 NOT NULL 属性,可用默认值代替 NULL 8. 、自增字段类型必须是整型且必须为 UNSIGNED,推荐类型为 INT 或 BIGINT,并且自增字段必须是主键或者主键的一部分。 ###### tags: `資料庫相關`