MySQL数据表管理(下)
一、查看表基本结构
1.语法:DESCRIBE/DESC 表名;
2.结果含义:
Field:字段名
Type:字段类型
Null:是否可以为空
Key:是否编制索引(如是否是主键)
Default:默认值
Extra:附加信息,如自增列
二、查看表详细结构
1.语法:SHOW CREATE TABLE 表名;(可以查看创建这张表所使用的语句)
2.格式化显示结果:SHOW CREATE TABLE 表名 \G;
三、修改数据表
1.修改表名
(1)语法:ALTER TABLE 旧表名 RENAME TO 新表名;
(2)示例:alter table user rename to users;
2.修改字段名
(1)语法:ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型;
(2)示例:把玩家表中的user_qq字段改为user_id
alter table users change user_qq user_id int;
3.修改字段数据类型
(1)语法:ALTER TABLE 表名 MODIFY 字段名 字段类型;
(2)示例:把游戏表中的game_uid这列改为int类型
alter table games modify game_uid int;
4.添加和删除字段
(1)添加字段语法:ALTER TABLE 表名 ADD 添加字段的名称 字段类型;
(2)删除字段语法:ALTER TABLE 表名 DROP 要删除的字段名称;
5.添加主键约束
(1)语法:ALTER TABLE 表名 ADD CONSTRAINT CON_NAME(约束名称) PRIMARY KEY (COL_NAME);
(2)示例:给users这张表的user_id这一列添加主键约束
alter table users add constraint pk_users_user_id primary key (user_id);
6.添加外键约束
(1)语法:ALTER TABLE 表名 ADD CONSTRAINT CON_NAME FOREIGN KEY (外键列名称) REFERENCES 引用表名(引用表的列名)
(2)示例:为scores这张表的game_uid这一列添加外键约束,要求它引用的是games这张表的game_uid这一列
alter table scores add constraint fk_scores_games foreign key(game_uid) references games(game_uid);
7.添加检查约束
(1)语法:ALTER TABLE 表名 ADD CONSTRAINT 约束名称 CHECK(检查约束表达式);
(2)示例:为games这张表的game_uid添加检查约束,要求game_uid>0
alter table games add constraint ck_games_game_uid check(game_uid>0);
8.添加默认约束
(1)语法:ALTER TABLE 表名 ALTER 要修改列的名称 SET DEFAULT 默认值;
(2)示例:把users这张表的user_sex这列默认值设为男
alter table users alter user_sex set default '男';
9.添加自增列约束
(1)语法:ALTER TABLE 表名 MODIFY COLUMN 列的名称 列的类型 是否为空 AUTO_INCREMENT PRIMARY KEY;
(2)示例:把games这张表的game_uid这一列变为自增列
alter table games modify column game_uid int not null auto_increment primary key;
10.添加唯一约束
(1)语法:ALTER TABLE 表名 ADD UNIQUE(列名);
(2)示例:alter table users add unique(user_id);
四、删除数据表
1.删除无关联数据表
(1)语法:DROP TABLE [IF EXISTS] 表名1, 表名2...;(其中if exists 为可选项,表示如果表存在就删除,不存在不做任何操作;同时删除多张表,表名用逗号隔开)
(2)示例:删除scores这张表
drop table scores;
2.删除有关联数据表
当两张表有主外键的引用关系,我们应该先删除外键所在的那张表。如果先要删除主键所在的那张表就得先解除关联关系(删除外键约束)。
ALTER TABLE 从表名称 DROP FOREIGN KEY 约束名称;
DROP TABLE 表名;
示例:alter table scores drop foreign key fk_scores_games;
alter table scores drop foreign key fk_scores_users;
drop table scores;