在学完建表知识后,自然会想到该如何操作表的事情了,这就是本文的内容。
引入问题
我们还是按照从问问题的老套路开始,罗列下表操作有哪些。
如何增加与删除表的列(请移步瞄一眼)?数据库中有多少表?如何查看表结构?表名如何修改?字段名如何修改?表的字段顺序是否可以调整?表的字段类型是否可以修改?如何修改?表的存储引擎如何查看与修改?表的主键如何创建?表的外键如何创建与删除?
下面我们就这些问题一一展开。
查看数据库表
连接到数据库之后,我们的第一反应当然是想看看有多少张表,每张表的表名如何。
showtables;
查看表结构
MySQL提供了两种查看方式:一是查看基本表结构,一是查看详细结构。
describestudent_info;--基本表结构showcreatetablestudent_info;--详细表结构
修改表名
--将student_info表改名为student_info2altertablestudent_inforenamestudent_info2;
修改字段名
--将字段grade更名为nianjialtertablestudent_info2changegradenianjivarchar(10);
注:此命令中change关键词不能丢,另外新字段名后面要带上字段类型。
修改字段类型
--将字段nianji类型修改为varchar(32)altertablestudent_info2modifynianjivarchar(32);
字段顺序调整
--将字段nianji调为第一个字段altertablestudent_info2modifynianjivarchar(32)first;
--将字段nianji调为另一个字段后面,当然就能实现放到最后一位altertablestudent_info2modifynianjivarchar(32)afteraddress;
表的存储引擎
如果仔细点我们就能发现在查看表详细结构的时候就看到了该表的存储引擎。
--修改表的存储引擎为MyISAMaltertablestudent_info2ENGINE=MyISAM;
此处我们发现,由于目标表存储一个外键,所以导致引擎修改失败。我们在接下来再解决这个问题。
主键
一般主键是在建表的时候指定。
当然也提供了再建好表之后再建主键的功能,并且可以用多个字段组合创建主键。
--用两个字段做主键ALTERTABLEbbs_userADDCONSTRAINTpk_bbs_user1PRIMARYKEY(uID,userName);
--删除主键(不执行)ALTERTABLEbbs_userdropPRIMARYKEY;
外键
通过核查,我们发现student_info2表的字段sno是表score_info的外键。此时我们尝试删除该外键。
altertablescore_infodropFOREIGNKEYscore_info_ibfk_1;
细心的人可能发现一个问题:删除主键时不用指定主键名,而删除外键时需要指定外键名?那是因为一个表只有一个主键,而可能有多个外键。
接着我们可以尝试再次修改表的存储引擎,看看是否可行。
当然也是可以恢复删除的外键。
altertablescore_infoaddFOREIGNKEYscore_info_ibfk_1(sno)referencesstudent_info2(sno);
总结
本文罗列了表操作的情况,肯定不能覆盖全部的情况,更多地希望起到抛转引玉的效果。