思维导图
导学
在之前的章节中,其实我们主要学习了如何去创建一张表,那在本节课程中,我们将要学习如何去管理一张表。
表结构相关操作
添加删除表字段
语法:
添加字段
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重新启动时丢失
ACID指的是:原子性(Atomiocity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。这也是MySQL数据库的特性