存储引擎

举报
xcc-2022 发表于 2022/11/28 19:06:52 2022/11/28
【摘要】 14.5  、增加/删除/修改表约束 14.5.1    、删除约束 将 t_student 14.5.2    、添加约束 将 t_student 中的约束·                  添加外键约束:alter table 从表 add constraint     约束名称 foreign key 从表(外键字段) references 主表(主键字段); alter table...

14.5  、增加/删除/修改表约束

 

14.5.1    、删除约束

 


t_student

 

14.5.2    、添加约束

 

将 t_student 中的约束

·                  添加外键约束:alter table 从表 add constraint     约束名称 foreign key (外键字段) references 主表(主键字段);

 

alter table t_student add constraint fk_classes_id_1 foreign key(classes_id) references t_classes(classes_id);

·                  添加主键约束:alter table add constraint    约束名称 primary key    (主键字段);

alter table t_student add constraint pk primary key(student_id);

·                  添加唯一性约束:alter table add constraint    约束名称 unique    (字段);

 


 

alter table t_student add constraint uk unique(email);

 

14.5.3    、修改约束,其实就是修改字段

 

alter table t_student modify student_name varchar(30) unique;

 

mysql 对有些约束的修改时不支持,所以我们可以先删除,再添加

 

15、存储引擎

 

15.1  、存储引擎的使用

 

•       数据库中的各表均被(在创建表时)指定的存储引擎来处理。

•       服务器可用的引擎依赖于以下因素:

•       MySQL 的版本

•       服务器在开发时如何被配置

•       启动选项

•       为了解当前服务器中有哪些存储引擎可用,可使用SHOW ENGINES 语句:

mysql> SHOW ENGINES\G


 


 

•       在创建表时,可使用ENGINE 选项为 CREATE TABLE 语句显式指定存储引擎。

CREATE TABLE TABLENAME (NO INT) ENGINE = MyISAM;

•       如果在创建表时没有显式指定存储引擎,则该表使用当前默认的存储引擎

•       默认的存储引擎可在my.ini 配置文件中使用default-storage-engine 选项指定。

•       现有表的存储引擎可使用ALTER TABLE 语句来改变:ALTER TABLE TABLENAMEENGINE = INNODB;

•       为确定某表所使用的存储引擎,可以使用SHOW CREATE TABLE 或 SHOW TABLE STATUS 语句:

mysql> SHOW CREATE TABLE emp\G mysql> SHOW TABLE STATUS LIKE 'emp' \G


 

15.2  、常用的存储引擎

 

15.2.1    、MyISAM 存储引擎

 

•       MyISAM 存储引擎是MySQL 最常用的引擎。

•       它管理的表具有以下特征:

–       使用三个文件表示每个表:

•       格式文件 — 存储表结构的定义(mytable.frm)

•       数据文件 — 存储表行的内容(mytable.MYD)

•       索引文件 — 存储表上索引(mytable.MYI)

–       灵活的 AUTO_INCREMENT 字段处理

–       可被转换为压缩、只读表来节省空间

 

15.2.2    、InnoDB 存储引擎

 

•       InnoDB 存储引擎是MySQL 的缺省引擎。

•       它管理的表具有下列主要特征:

–       每个 InnoDB 表在数据库目录中以.frm 格式文件表示

–       InnoDB 表空间 tablespace 被用于存储表的内容

–       提供一组用来记录事务性活动的日志文件

–       用 COMMIT(提交)、SAVEPOINT 及ROLLBACK(回滚)支持事务处理

–       提供全 ACID 兼容

–       在 MySQL 服务器崩溃后提供自动恢复

–       多版本(MVCC)和行级锁定

–       支持外键及引用的完整性,包括级联删除和更新

 

15.2.3    、MEMORY 存储引擎

 

•       使用 MEMORY 存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得 MEMORY 存储引擎非常快。

•       MEMORY 存储引擎管理的表具有下列特征:

–       在数据库目录内,每个表均以.frm 格式的文件表示。

–       表数据及索引被存储在内存中。

–       表级锁机制。

–       不能包含 TEXT 或 BLOB 字段。

•       MEMORY 存储引擎以前被称为HEAP 引擎。


 

  • 、选择合适的存储引擎

 

  • MyISAM 表最适合于大量的数据读而少量数据更新的混合操作。MyISAM 表的另一种适用情形是使用压缩的只读表。
  • 如果查询中包含较多的数据更新操作,应使用 InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并发机制。
  • 可使用 MEMORY 存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据。

 

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。