表和索引
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 外鍵
總結
- 上一篇: 7.5 obtaining datab
- 下一篇: 8.2.4临时表和正式表