数据类型
1、数值类型
tinyint、smallint、mediumint、int或integer、bigint分别对应1、2、3、4、8个字节的存储空间,以上均为有符号补码表示的整数。
float和double分别为4个字节和8个字节的大小的浮点数
如果在相应类型后面加关键字unsigned,则变为无符号数。
decimal:M>=D,M表示有效数的精度,范围1-65;D表示小数点后的位数
- 整数的位数必须小于等于m-d,不然报错。小数的位数可以大于d位。多出d位时会做四舍五入,截取到d位。
- 以上均不包括小数点、符号的位数。数字的总长度是m位,保存后的小数位最多是d位。如果保存后是整数,小数位不会补0。
2、时间日期类型
date、time、year、datetime分别对应年月日,时分秒,年,年月日时分秒
timestamp:参考
3、字符类型
(1)char和varchar
- 两者都需要指定n值,最大存储字符数不能超过n
- char是定长,无论存储多少内容,都会占据n;varchar是变长,按内容的实际长度占据空间。
- char的最大n值为255,varchar的最大为65535
(2)其它
tinytext、text、mediumtext和longtext用于存储文本数据,分别的最大容量为1、2、4、8个字节表示的整数。
tinyblob、blob、mediumblob和longblob用于存储二进制数据,分别的最大容量为1、2、4、8个字节表示的整数。
是否允许为空
默认的,字段允许为null。如果不允许,则需要特别声明
not null
默认值
用关键字default声明,其后为默认值内容
age int unsinged default 10, name varchar(10) default 'zzzz'
默认值是当插入记录时,只插入部分字段的情况下,未插入字段的值会以默认值填充
自动增长
(1)自动增长的字段必须是整数类型
(2)自动增长的字段不要求一定是无符号数
(3)自动增长字段默认从1开始
(4)在新增记录时,要么插入全部字段,将自动增长字段的值设为null,要么插入部分字段
(5)可以在创建表时声明自动增长的初始值
(6)delete语句并不能清除自动增长记录
(7)自动增长字段在一张表中只能存在一个,且必须声明为主键
主键和外键
(1)只有InnoDB表才支持主键和外键
(2)主键可以为多个列
(3)外键列必须建立索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引
(4)外键关系的两个表的列必须是数据类型相似,也就是可以互相转换类型的列,比如int和tinyin可以,而int和char不行
数据库引擎
innodb:支持事务和主外键
myisam
create table table_name()engine=innodb;
默认编码
(1)在创建数据库时指定
create database database_name charset utf8;
(2)在创建数据表时指定
create table table_name()default charset=utf8;