mysql数据库----- 列类型
用于限定指定列上可以保存的数据格式:
1. 数字类型;(存储单位由大到小TB → GB → MB → KB → BYTE → BIT,每一级换算单位1024,1BYTE = 8BIT )
1-1.TINYINT 占用1个字节存储空间,表示范围 -128~127
1-2.SMALLINT 占用2个字节存储空间,表示范围 -32768~32767
1-3.INT 占用4个字节,表示范围 -2147483648~2147483647
1-4.BIGINT 占用8个字节,表示范围 -9223372036854775808~9223372036854775807
1-5.FLOAT[(M,D)] 单精度浮点数,占用4个字节存储空间(M表示总的有效位数;D表示小数点后面允许的有效位数)
1-6.DOUBLE[(M,D)] 双精度浮点数,占用8个字节存储空间
1-7.DECIMAL[(M,D)] 严格定点数,用于保存精确小数
2. 布尔类型;(表示‘真/假’、‘是/否’的类型,)
2-1.BOOL/BOOLEAN 取值只能为TRUE或者FALSE
注意:true和false是关键字,不能用引号括起来
mysql中的布尔类型在底层等价于tinyint(1),即长度为1的整形数字,所以0为false,非0为true
3. 字符串类型;(必须用英文单引号或者双引括起来)
3-1.CHAR(M) 固定长度字符串,长度最大为255个字符
3-2.VARCHAR(M) 长度可变的字符串,长度最大为65535个字符
3-3.TEXT(M) 长度可变的字符串,长度最大可以到232,即4G个字符
固定长度是,输入字符不满足长度时,自动占位补全(存在空间浪费,操作速度快);
长度可变是,输入字符不满足长度是不占位补全(操作速度相对固定长度慢)
4. 日期时间类型;(必须用英文单引号或者双引号括起来)
4-1.DATE 日期类型,支持的范围“1000-01-01”到“9999-12-31”
4-2.TIME 事件类型,支持的范围是“00:00:00”到“23:59:59”
4-3.DATETIME 日期时间类型,支持范围“1000-01-01 00:00:00”到“9999-12-31 23:59:59”
由于不同系统中日期时间类型的表示范围不完全一样,且不同语言区域中的默认日期格式不一样,推荐使用BIGINT来存储日期时间。距离计算机元年毫秒数1970-1-1 0:0:0
mysql数据库----- 列约束
约束指表中特定列上出现的所有数据必须满足特定内容要求,如插入的新数据行中的数据不满足该要求,该记录就无法成功插入。
1. 主键约束 PRIMARY KEY 声明为主键的列,值不能为空,且必须唯一。(如果是编号列可以自动排列数据)
NULL 在mysql中表示空,在插入数据时,表示无法确定的数据,例如商品上架时间....
在插入数据时,建议每次插入一条数据,否则列约束可能无法生效
2. 非空约束 NOT NULL 限定指定列上的值不能为NULL
不等价!
3. 唯一约束 UNIQUE 限定指定列上的值不能出现重复值
4. 检查约束 CHECK 限定指定列上的值不能为NULL(mysql暂不支持此功能)
5. 外键约束 FOREIGN KEY 外键列上出现的值必须在其他参考的表的主键列上出现过
6. 默认值约束 DEFAULT 指定当列上未明确指定值时所使用的默认值
最后一个插入表示只给oid设置指定值,其他使用默认值
7. 自增列 AUTO_INCREMENT 若主键列是整数类型,则同时可以声明此列上的值为“自动增长”
若插入数据时未指定值或者指定为NULL值,则默认就会生成一个在当前最大值基础上+1的下一个整数值。若曾经存在的最大值删除,再次添加不会被占用,还是继续+1增长