MySQL创建表:
CREATE TABLE `user` (
`id` int NOT NULL auto_increment,
`name` varchar(20) NOT NULL,
`age` tinyint NOT NULL,
`sex` char NOT NULL,
`birth_date` date NOT NULL,
`create_time` timestamp NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上述创建表字段所声明的数据类型,除了varchar类型,其他都可以不进行指定,都有默认长度。
如:int 类型的进行存储,需要占用4个字节,一共32位,因此int 类型的最大长度(也是默认长度)为11,int类型有符号范围为:-2147483648~2147483648 ,无符号范围为:0~4294967295,仔细数一下数字会发现只有10个数,为什么长度会是11呢?因为少算了个符号位!
int 类型的值进行存储时,不论你指定的是 int(3),或者是 int(8),都不会影响实际进行存储的长度(占用4个字节),这里的数字只是为了声明最小显示长度,如:int i=10; 在int(3)中显示结果为:010,在int(8)中显示结果为:00000010,如果存储的数字范围超过声明的长度并且小于 int 值最大范围,则按正常显示。
char类型的值进行存储时,指定char(1),则可以存入“一个字符”而非字节,不管这个字符到底有多大,都可以存。当在Windows系统的cmd命令中插入某些汉字时,会报长度过长的异常!这个因为字符编码设置的有问题,用一些SQL工具会好一些。
varchar 类型和 char 类似, varchar 是可变的类型,char 是不可变类型,如何理解这两者之间的区别?当为 varchar 类型设置长度 varchar(10) 代表最多只能存10个字符,若小于10个字符,自动变为输入字符大小,比较灵活!char类型则是固定的,是多少就是多少,比较死板。
MySQL显示创建表的SQL语句:
show create table table_name\G;
MySQL ALTER命令:
alter table table_name drop column_name; 删除表中一个字段
alter table table_name add column_name; 添加一个字段
alter table table_name add column_name int first; 添加字段并设为第一列
alter table table_name add column_name int after other_column_name; 在另一个已存在的字段后添加新字段
alter table table_name modify column_name varchar(10); 修改字段类型
alter table table_name change old_column_name new_column_name varchar(10); 修改字段名和字段类型
alter table table_name alter column_name drop default; 删除指定字段的默认值
alter table table_name engine='MYISAM'; 修改数据库引擎
show table stauts like `table_name`\G; 查看数据表类型
alter table table_name RENAME TO `new_table_name`; 修改数据库表名