目录
- CREATE TABLE table_name (
- field1 datatype,
- field2 datatype,
- field3 datatype
- ) character set 字符集 collate 校验规则 engine 存储引擎;
- //charset=字符集 collate=校验规则
- create table users (
- -> id int,
- -> name varchar(20) comment '用户名',
- -> password char(32) comment '密码是32位的md5值',
- -> birthday date comment '生日'
- -> ) character set utf8 engine MyISAM;

desc 表名;

语法:
- ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
- datatype]...);//添加一个列
-
- ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
- datatype]...);//修改列属性的语法
-
- ALTER TABLE tablename DROP (column);
alter table users rename to user1;
- insert into person (name,age,gender) values('kevin',19,'male')
- ,('mei',21,'female');

说明:括号里的列名称可以省略,这是默认添加全部列。
alter table person modify home char(32);

这种修改是直接覆盖原来的属性,后面的comment也会被覆盖。
alter table person add home varchar(32) comment '家乡' after name;

alter table person drop gender;

- alter table person change home hometown varchar(32);
- //不但要给新名称,而且新字段需要完整定义

drop table user1;

(1)修改数据库的表可能会导致数据丢失或损坏。例如,如果修改了表的数据类型或长度,可能会造成数据截断或转换错误。如果修改了表的主键或唯一约束,可能会引发数据冲突或重复。如果修改了表的外键或参照完整性约束,可能会破坏数据之间的关联关系。
(2)修改数据库的表可能会影响索引的效率和空间占用。例如,如果修改了表的列名或顺序,可能会导致索引失效或需要重建。如果修改了表的列属性或默认值,可能会导致索引分裂或碎片化。如果修改了表的存储引擎或字符集,可能会导致索引不兼容或需要转换。
(3)修改数据库的表可能会增加数据库的维护成本和复杂度。例如,如果修改了表的结构或功能,可能会导致应用程序需要修改或适配。如果修改了表的分区或分片策略,可能会导致数据迁移或同步问题。如果修改了表的备份或恢复方案,可能会导致数据安全或可用性风险。
因此,数据库的表不建议随意修改,除非有充分的理由和测试。一般来说,数据库的表应该在设计阶段就做好规划和优化,避免后期频繁变更。如果确实需要修改数据库的表,应该遵循以下原则:
(1)在修改数据库的表之前,应该做好数据备份和恢复计划,以防止数据丢失或损坏。
(2)在修改数据库的表之前,应该评估修改的影响和风险,以及是否有更好的替代方案。
(3)在修改数据库的表之前,应该通知相关的应用程序开发者和维护者,以便做好协调和测试工作。
(4)在修改数据库的表时,应该尽量减少对线上业务的影响和干扰,选择合适的时间和方式进行操作。
(5)在修改数据库的表后,应该及时检查数据和索引的完整性和有效性,以及监控数据库的性能和稳定性。