表和索引

1.表都有结构以表明和.frm来命名的

   这个MyISAM引擎创建表和索引,如果Country是一个MyISAM表,这个MyISAM存储引擎创建命名为Country.MYD和Country.MYI来存储数据的行和索引

  默认情况下InnoDB引擎共享文件对于多个表,如果Country是一个InnoDB表,有Country.frm被创建

 这个MEMORY引擎不适用任何磁盘存储,它管理表内容在内存中

表的数量由操作系统性能和磁盘的容量都可以决定表的性能,限制表的数量的大小是最大文件的尺寸。一个操作系统可以支持不同类型的文件系统,每个文件系统有最大文件尺寸。

      1.转换可以使用更大表的一个存储引擎。比如转换MyISAM表到一个InnoDB表,这个InnoDB存储引起管理表在一个表空间,能够配置更大。

      2.可以修改操作系统。

8.2 创建表

MySQL提供了集中方式来创建表:

        1.create table table_name(column_definitions);

        2.create table t (id int not null);

      create table if not exists t (i int)

创建表时可以明确的指定数据库的名字如test数据库.mytable

8.2.2 指定存储引擎对于一个表

每个表被创建时可以指定存储引擎的,则MyISAM,MERGE和MEMORY存储引擎总是可以获得

2.这InnoDB存储引擎被包含在所有二进制的分布式中

3.额外的存储引擎被包含在MySQL Max二进制分布式中

为了看哪种存储引擎你的服务器是支持的,使用show engines表达式


为了指定一个存储引擎当你创建一个表是,包括ENGINE=engin_name选项

create table t(i int) engine=InnoDB

如果创建表没有ENGINE选项,MYSQL创建表使用默认的引擎,这由stroage_engein变量指定。内建的默认值是storage_engine是MyISAM。然而,取决于MySQL被安装和配置,storage_engine可能被设置为不同种类的存储引擎。默认的存储引擎自动使用--default-stroage-engine选项

对于正在运行的服务器,超级管理员能够通过 SET globale sorage_engine=engine_name;

如果一个引擎是合法但时无法获得是,当使用storage_engine系统变量。使用不在支持的引擎如ISAM不在被MySQL5支持了,就产生了警告。

8.2.3 创建表基于已经存在的表

1. create table ...select ,拷贝列明和数据类型从原来的表,但是不维持PRIMARY KEY索引信息或者AUTO_INCRMENT列属性信息。这个新表使用默认存储引擎而不是原来表的引擎。

 2. create table....like 这个创建的新创建的空表完全和原来的表一致,但是一些属性还是无法拷贝如下:

  2.1  如果原来的表是MyISAM表对于DATA directory or index directory表选项,无法拷贝到新表

  2.2 外键



你可能感兴趣的:(MYSQL-表和索引)