1,数字型 整形 TINYINT 1字节 (-128,127) (0,255) 小整数值 create table 表名(字段名 TINYINT); create table 表名(字段名 TINYINT UNSIGNED); //创建无符号。 SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值 MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值 INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值 浮点(小数) float(一共几位,保留几位小数) 4字节 create table 表名(字段名 float(5,2)); // 例如输出123.12 double() decimal() 2,字符串类型 char(可自定义长度) 最长255 固定长度 //适用 性别,不管用不用都占用空间,但是运行速度快 varchar(可自定义长度) 最长255 可变长度 //适用文章标题不算长而又变化大的,智能删除末尾的空格节省空间,但降低性能 mediumtext longtext //适用于文章日记。 enum("值1","值2","值3"); //枚举 一个值只能用一次 适用于固定值,例如星期日期,男,女,保密 set("值1","值2","值3"); //集合 一个值能多次 例如 values('a,b','a,b') //枚举只能显示a 集合能显示a,b 3,日期型(创建表时最好不要用这些时间格式,在php程序中最好使用php自带的时间函数) date 0000-00-00 time 00:00:00 datetime 0000-00-00 00:00:00 timestamp 0000-00-00 00:00:00 year 0000 字段附加属性 1, unsigned 无符号 只能用在数值型 2, zerofill 只能用在数值型 例如 (a int(5) zerofill) values(88) //输出是00088 ,会自动加unsigned 3, auto_increment 只能是整数 每增加一天数据 就自动加1 ,即使原来最大值的删除了继续往后面追加,例如100删除如果还要继续加就是101,每个表最好有一个ID自动增长的。 4, null和not null 字段默认是null,如果不设置值字段就显示空;如果设置not null不给只就自动赋值0,(推荐给每个字段设置not null) 5, default 设置默认值,没给字段设置值的时候就显示默认值(推荐和not null配合使用) 例子: create table users( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL DEFAULT '', height DOUBLE(10,2) NOT NULL DEFAULT 0.00, age INT NOT NULL DEFAULT 0, sex CHAR(4) NOT NULL DEFAULT '男' ); 创建索引 1,主键索引 primary key 最好每张表都有一个主键索引,这样能通过主键索引的唯一性找到表里的数据(主键索引的值不能重复) 一张表只能一个主键 主键值不能为空 2,唯一索引 unique 可以在多个字段插入unique,是为了防止数据的重复,例如防止用户名注册的重复。 唯一索引防止数据的重复 3,常规索引 提高查询功能的性能,但是降低了插入,删除,修改的性能,可以在多个字段创建此索引, 需要用于查询的字段才建立此索引. 追加创建例子1, index 索引名(字段名1,字段名2) 单独创建例子2, create index 索引名 on 表名(字段名1,字段名2); //多个字段创建一个索引 删除例子: drop index 索引名 on 表名; //一个字段单独创建索引 4,全文索引 ?用的时候在看 数据库表类型及存储位置 表类型常用的是 MyISAM 和 InnoDB ,创建表默认是 MyISAM类型 事务处理 不支持 支持 数据行锁定 不支持 支持 外键约束 不支持 支持 表空间占用 相对小 相对大 全文索引 支持 不支持 例子 create table 表名(字段名1,字段名2) type = InnoDB; mysql默认字符集 ???没懂 修改表 alter table 表名 add 字段名 varchar(30) not null;// 添加表 alter table 表名 add 字段名1 varchar(30) not null after 字段名2;//在字段名2的后面插入字段名1 alter table 表名 add 字段名 varchar(30) first;//最前面插入 alter table 表名 modify 字段名 char(3); // 修改字段类型为char(3) modify用于改字段类型 alter table 表名 change 原字段名 改字段名 varchar(30); //修改表名 alter table 原表名 rename as 改表名;//修改表名 alter table 表名 drop 删除的字段名; //删除字段名 drop table 表名//删除表名