🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# MySQL表的管理 [TOC] ## 导学 在之前的章节中,其实我们主要学习了如何去创建一张表,那在本节课程中,我们将要学习如何去管理一张表。 ## 表结构相关操作 ### 添加删除表字段 语法: ~~~ 添加字段 ALTER TABLE tb_name ADD 字段名称 字段属性 [完整性约束条件][FIRST(将某个字段加到起始位置)|AFTER 字段名称] 删除字段 ALTER TABLE tb_name DROP 字段名称 ~~~ 示例: ~~~ 添加 alter table user add user_name varchar(60) not null after id 删除 alter table user drop email ~~~ ### 动态添加删除默认值 语法: ~~~ 添加默认值: ALTER TABLE tb_name ALTER 字段名称 SET DEFAULT 默认值; 删除默认值: ALTER TABLE tb_name ALTER 字段名称 DROP DEFAULT ~~~ 示例: ~~~ -- 给email字段添加默认值 0-未填写 alter table user alter email SET DEFAULT '0-未填写'; -- 删除age字段的默认值 alter table user2 alter age drop default ~~~ ### 动态修改字段的属性和类型 语法: ~~~ 修改字段类型,字段属性 ALTER TABLE tb_name MODIFY 字段名称 字段类型 [字段属性] [FIRST | AFTER 字段名称] 修改字段名称,字段类型,字段属性 ALTER TABLE tb_name CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称] ~~~ 示例: ~~~ -- 修改字段类型,字段属性 alter table user modify username varchar20) not null unique -- 修改字段名称,字段类型,字段属性 alter table user change username user_name varchar(20) not null ~~~ ### 动态添加和删除主键 **自学完成** ~~~ 添加主键 ALTER TABLE tb_name ADD PRIMARY KEY(字段名称) 删除主键 ALTER TABLE tb_name DROP PRIMARY KEY; ~~~ 示例: ~~~ -- 添加主键 ALTER TABLE user ADD PRIMARY KEY(id); -- 删除主键 ALTER TABLE user DROP PRIMARY KEY; ~~~ 注意:如果对主键设置自增约束后,是不能直接删除主键的,需要先删除自增约束。 ### 动态添加和删除唯一约束 语法: ~~~ 添加唯一 ALTER TABLE tb_name ADD UNIQUE KEY|INDEX [index_name](字段名称); 删除唯一 ALTER TABLE tb_name DROP INDEX index_name; ~~~ 注意:当我们想要删除唯一约束的时候,需要借助唯一约束的名字,可以通过`show create table tb_name`语句查看表的详细信息。当没有给唯一字段的约束起名字时,系统默认将字段名设置为唯一字段索引名称。 示例: ~~~ -- 添加唯一索引 ALTER TABLE user ADD UNIQUE KEY(username); -- 或 ALTER TABLE user ADD UNIQUE INDEX uni_email(email); --uni_加字段名称 -- 删除时则: ALTER TABLE user DROP UNIQUE INDEX uni_email; ~~~ ### 修改表名称 ~~~ 修改数据表名称: ALTER TABLE tb_name RENAME [TO|AS] new _tb_name 或 RENAME TABLE tb_name TO new_tb_name ~~~ 示例: ~~~ ALTER TABLE user RENAME TO user666; ~~~ ## 存储引擎 MySQL 5.5之后默认使用InnoDB存储引擎。 ### 什么是存储引擎 “存储引擎”从字面理解,“存储”的意思的存储数据。 “引擎”一词来源于发动机,它是发动机中的核心部分。在软件工程领域,相似的称呼有“游戏引擎”、“搜索引擎”,它们都是相应程序或系统的核心组件。 所以从这里可以看出“存储引擎”似乎也是数据库的核心。存储引擎是MySQL有别于其他数据库管理系统的最大特色,比如它的兄弟Oracle中就没有专门的存储引擎的概念,我们知道关系型数据库的数据是存在表里的,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式,每个表格就是一个数据。 表是在存储数据的同时,还要组织数据的存储结构,而这些数据的组织结构就是由存储引擎决定的。 但是,对于用户和应用程序来说同一张表的数据,无论用什么引擎来存储,用户看到的数据都是一样的。不同的引擎存取、引擎功能,占用的空间大小,读取性能等可能有区别。 简单来说,存储引擎就是数据的存储结构,由实际业务决定。 ### 常用引擎 对于日常工作来说,常用的存储引擎只有四种:默认的InnoDB、MyISAM和MEMORY。 * **MyISAM**:拥有较高的插入,查询速度,但不支持事务,多用于数据仓库这样查询多而事务少的情况,速度较快。 * **InnoDB**:5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定(可以提升多并发时的性能)。多用于web网站后台等实时的中小型事务处理后台。 * **MEMORY**:所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失 >[info]ACID指的是:原子性(Atomiocity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。**这也是MySQL数据库的特性**