表和索引
1.表都有結(jié)構(gòu)以表明和.frm來命名的
? ?這個MyISAM引擎創(chuàng)建表和索引,如果Country是一個MyISAM表,這個MyISAM存儲引擎創(chuàng)建命名為Country.MYD和Country.MYI來存儲數(shù)據(jù)的行和索引
? 默認情況下InnoDB引擎共享文件對于多個表,如果Country是一個InnoDB表,有Country.frm被創(chuàng)建
?這個MEMORY引擎不適用任何磁盤存儲,它管理表內(nèi)容在內(nèi)存中
表的數(shù)量由操作系統(tǒng)性能和磁盤的容量都可以決定表的性能,限制表的數(shù)量的大小是最大文件的尺寸。一個操作系統(tǒng)可以支持不同類型的文件系統(tǒng),每個文件系統(tǒng)有最大文件尺寸。
? ? ? 1.轉(zhuǎn)換可以使用更大表的一個存儲引擎。比如轉(zhuǎn)換MyISAM表到一個InnoDB表,這個InnoDB存儲引起管理表在一個表空間,能夠配置更大。
? ? ? 2.可以修改操作系統(tǒng)。
8.2 創(chuàng)建表
MySQL提供了集中方式來創(chuàng)建表:
? ? ? ? 1.create table table_name(column_definitions);
? ? ? ? 2.create table t (id int not null);
? ? ? create table if not exists t (i int)
創(chuàng)建表時可以明確的指定數(shù)據(jù)庫的名字如test數(shù)據(jù)庫.mytable
8.2.2 指定存儲引擎對于一個表
每個表被創(chuàng)建時可以指定存儲引擎的,則MyISAM,MERGE和MEMORY存儲引擎總是可以獲得
2.這InnoDB存儲引擎被包含在所有二進制的分布式中
3.額外的存儲引擎被包含在MySQL Max二進制分布式中
為了看哪種存儲引擎你的服務器是支持的,使用show engines表達式
為了指定一個存儲引擎當你創(chuàng)建一個表是,包括ENGINE=engin_name選項
create table t(i int) engine=InnoDB
如果創(chuàng)建表沒有ENGINE選項,MYSQL創(chuàng)建表使用默認的引擎,這由stroage_engein變量指定。內(nèi)建的默認值是storage_engine是MyISAM。然而,取決于MySQL被安裝和配置,storage_engine可能被設(shè)置為不同種類的存儲引擎。默認的存儲引擎自動使用--default-stroage-engine選項
對于正在運行的服務器,超級管理員能夠通過 SET globale sorage_engine=engine_name;
如果一個引擎是合法但時無法獲得是,當使用storage_engine系統(tǒng)變量。使用不在支持的引擎如ISAM不在被MySQL5支持了,就產(chǎn)生了警告。
8.2.3 創(chuàng)建表基于已經(jīng)存在的表
1. create table ...select ,拷貝列明和數(shù)據(jù)類型從原來的表,但是不維持PRIMARY KEY索引信息或者AUTO_INCRMENT列屬性信息。這個新表使用默認存儲引擎而不是原來表的引擎。
?2. create table....like 這個創(chuàng)建的新創(chuàng)建的空表完全和原來的表一致,但是一些屬性還是無法拷貝如下:
? 2.1 ?如果原來的表是MyISAM表對于DATA directory or index directory表選項,無法拷貝到新表
? 2.2 外鍵
總結(jié)
- 上一篇: 7.5 obtaining datab
- 下一篇: 8.2.4临时表和正式表