首先介绍两种类型属性: UNSIGNED和ZEROFILL
UNSIGNED
UNSIGNED属性就是将数字类型无符化。
ZEROFILL
如果宽度小于设定的宽度,子自动填充0,需要注意的是,这只是显示效果,在实际存储中还是原来的值。
a a int(4) unsigned zerofill; #如果插入一个1,则显示0001上面一条语句将sql_model设为了严格模式。在这种模式下,如果一个值不能插入到一个事务表中,则中断当前的操作不影响非事务表。 sql_mode还有很多其他参数值。
各种日期数据类型及其所占用的空间
类型所占空间(字节)范围DATETIME8“1000-01-01 00:00:00” - “9999-12-31 23:59:59”DATE3“1000-01-01" - “9999-12-31”TIMESTAMP4“1970-01-01 00:00:00” - “2038-01-19 03:14:07”YEAR1TIME3“-838:59:59” - “838:59:59”year类型占用1字节,并且在定义时可以指定显示的宽度为year(4)或year(2)。对于year(4),其显示年份的范围为1901-2155;对于year(2),其显示年份的范围为1970-2070,在year(2)的设置下,00-69代表2000-2069年。 time类型不仅可以显示一天中的时间,也可以用来保存时间间隔。
与日期和时间相关的函数
NOW(),CURRENT_TIMESTAMP()和SYSDATE() NOW(),CURRENT_TIMESTAMP()是同义词,两者相等。SYSDATE()函数返回的是执行到当前函数时的时间,而NOW()返回的是执行SQL语句时的时间。 时间加减函数 DATE_ADD或DATE_SUB表示时间加减函数 date_add(now(),interval 1 day)还可以使用的数据类型有year,second,minute,hour,week,month,microsecond.
DATE_FORMAT函数按照用户的需求格式化打印出日期。
select date_format(now(),'%Y%m%d') as datetime;整型
类型占用空间(字节)TINYINT1SMALLINT2MEDIUMINT3INT4BIGINT8每个整型都有unsigned和signed两种类型。
浮点型
MySQL数据库支持两种浮点类型:单精度的FLOAT和双精度的DOUBLE PRECISION类型。MySQL允许使用非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,(M,D)表示该值一共显示M为整数,其中D表示小数点后面的位数。
高精度类型
DECIMAL和NUMERIC类型在MySQL中被视为相同的类型,用于保存必须为确切精度的值。最大位数为6,但具体的实际范围受具体列的精度或标度约束。
位类型
为类型,即BIT数据类型可用来保存位字段的值,BIT(M)类型表示允许存储M位数值。M范围为1到64,占用的空间为(M+7)/8字节。如果BIT(M)列分配的值的长度小于M位,在值的左边用0填充。
通过命令show charset可以查看MySQL数据库支持的字符集。 命令set names可以用来更改当前会话连接的字符集、当前会话的客户端的字符集、以及当前会话返回结果集的字符集。
排序规则
排序规则(Collation)是指对指定字符集下不同字符的比较规则。
两个不同的字符集不能有相同的排序规则。每个字符集有一个默认的排序规则。有一些常用的命名规则。如_ci结尾表示大小写不敏感(case insensitive)。_cs表示大小写敏感,_bin表示二进制的比较。CHAR和VARCHAR
一般来说,CHAR(N)用来保存固定长度的字符串,N的范围0-255;VARCHAR(N)用来保存变长字符类型,N的范围0-65535。这里的N表示字符长度,而非字节长度。
BINARY和VARBINARY
BINARY(N)和VARBINARY(N),这里的N是字节长度,存储的是二进制字符串,而非字符型字符串。BINARY(10)其可存储的字节固定为10。
BLOB和TEXT
BLOB(Binary Large Object)是用来存储二进制大数据类型的。在大多数情况下可以将BLOB类型的列视为足够大的VARBINARY类型的列。同样也可以将TEXT类型的列视为足够大的VARCHAR类型的列。然而,BLOB和TEXT在以下方面又和VARBINARY,VARCHAR不同:
在BLOB和TEXT上创建索引时,必须制定索引前缀长度,而VARBINARY,VARCHAR的长度是可选的。BLOB和TEXT类型的列不能有默认值。 在排序时只使用列的前max_sort_length个字节。ENUM和SET类型
enum和set类型都是集合类型,不同的是enum类型最多可枚举65536个元素,而set类型最多枚举64个元素。