目录
一、表的创建
1、创建语法
sql
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
//charset=字符集 collate=校验规则
说明:
field 表示列名;
datatype 表示列的类型;
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准;
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准;
2、创建案例
sql
create table users (
-> id int,
-> name varchar(20) comment '用户名',
-> password char(32) comment '密码是32位的md5值',
-> birthday date comment '生日'
-> ) character set utf8 engine MyISAM;
说明:
不同的存储引擎,创建表的文件不一样。
users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
users.frm :表结构
users.MYD :表数据
users.MYI :表索引
二、查看表结构
sql
desc 表名;
三、修改表
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
语法:
sql
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);
1、修改表名
sql
alter table users rename to user1;
2、添加记录
sql
insert into person (name,age,gender) values('kevin',19,'male')
,('mei',21,'female');
说明:括号里的列名称可以省略,这是默认添加全部列。
3、修改列属性
sql
alter table person modify home char(32);
这种修改是直接覆盖原来的属性,后面的comment也会被覆盖。
4、添加列(字段)
sql
alter table person add home varchar(32) comment '家乡' after name;
插入新字段后,对原来表中的数据没有影响。
5、删除列(字段)
注意:删除字段一定要小心,删除字段及其对应的列数据都没了。
sql
alter table person drop gender;
6、修改列名字
sql
alter table person change home hometown varchar(32);
//不但要给新名称,而且新字段需要完整定义
四、删除表
sql
drop table user1;
五、修改表结构的风险
1、风险
(1)修改数据库的表可能会导致数据丢失或损坏。例如,如果修改了表的数据类型或长度,可能会造成数据截断或转换错误。如果修改了表的主键或唯一约束,可能会引发数据冲突或重复。如果修改了表的外键或参照完整性约束,可能会破坏数据之间的关联关系。
(2)修改数据库的表可能会影响索引的效率和空间占用。例如,如果修改了表的列名或顺序,可能会导致索引失效或需要重建。如果修改了表的列属性或默认值,可能会导致索引分裂或碎片化。如果修改了表的存储引擎或字符集,可能会导致索引不兼容或需要转换。
(3)修改数据库的表可能会增加数据库的维护成本和复杂度。例如,如果修改了表的结构或功能,可能会导致应用程序需要修改或适配。如果修改了表的分区或分片策略,可能会导致数据迁移或同步问题。如果修改了表的备份或恢复方案,可能会导致数据安全或可用性风险。
2、建议
因此,数据库的表不建议随意修改 ,除非有充分的理由和测试。一般来说,数据库的表应该在设计阶段就做好规划和优化,避免后期频繁变更。如果确实需要修改数据库的表,应该遵循以下原则:
(1)在修改数据库的表之前,应该做好数据备份和恢复计划,以防止数据丢失或损坏。
(2)在修改数据库的表之前,应该评估修改的影响和风险,以及是否有更好的替代方案。
(3)在修改数据库的表之前,应该通知相关的应用程序开发者和维护者,以便做好协调和测试工作。
(4)在修改数据库的表时,应该尽量减少对线上业务的影响和干扰,选择合适的时间和方式进行操作。
(5)在修改数据库的表后,应该及时检查数据和索引的完整性和有效性,以及监控数据库的性能和稳定性。