[MySQL]管理表和索引的相關語句
1. 創(chuàng)建表
MySQL中創(chuàng)建表是通過create table語句實現(xiàn)的,語法這里就不介紹了,非常復雜,可以去官網(wǎng)上查詢,所幸的是,我們并不需要記住所有的選項,因為大部分都采用默認即可,下面介紹幾個比較常用的選項。
1)指定存儲引擎
默認的存儲引擎由default-storage-engine指定,如果沒有指定,則為MyISAM,如果建表時,你不想使用默認的存儲引擎,可以通過如下語句實現(xiàn):
[sql]
create table table_name ( ... ) engine=engine_name;
2)只有當表不存在時才創(chuàng)建
[sql]
create table if not exist table_name ... ;
上述語句表示:如果表已存在,則跳過;否則創(chuàng)建新表。
3)創(chuàng)建臨時表
MySQL的臨時表有如下特性:
- 臨時表只在創(chuàng)建該表的會話里是可見的,對其它會話是隱藏的,會話斷開后,臨時表自動被刪除。
- 當臨時表的表名和普通表一樣時,當前會話將會優(yōu)先訪問臨時表。
臨時表的語法如下:
[sql]
create temporary table temp_table_name ... ;
4)從其它表中創(chuàng)建新表
MySQL提供兩種方式從其它表中創(chuàng)建新表:
- create table ... like:創(chuàng)建一個新表為原表的空白副本,也就是說,新表是一個空表,但它擁有原表所有的屬性、索引、約束等(這個語法很有用,Oracle就沒有類似的功能),其用法如下:
[sql]
create table new_table_name like old_table_name;
insert into new_table_name select * from old_table_name;
- create table ... select: 不會復制所有的數(shù)據(jù)列屬性(保留下來的屬性有:字符集、NOLL or NOT NULL,默認值,注釋),不帶索引,不包含約束。
2. 刪除表
相比于創(chuàng)建表,刪除表就簡單多了。
1)刪除普通表
[sql]
drop table table_name;
2)刪除臨時表
[sql]
drop temporary table table_name;
3)表存在才刪除
[sql]
drop table if exists table_name;
3. 創(chuàng)建索引
你可以使用和Oracle類似的create index語句重建索引,也可以使用MySQL獨有的alter table語句添加索引,在MySQL里,建議用alter table語句,因為它更靈活多能,如:
[sql]
alter table tbl_name add index index_name (index_cols);
alter table tbl_name add unique index_name(index_cols);
alter table tbl_name add primary key(index_cols);
alter table tbl_name add full text index_name(index_cols);
alter table tbl_name add spatial index_name(index_cols);
其中,primary key和spatial索引要求索引列必須為NOT NULL,index_name可省略,一般不建議省略,如果省略,系統(tǒng)會自動取個名字。
該語句支持在一個alter table語句添加多個索引,這樣更靈活。
在創(chuàng)建表時,也可以同時創(chuàng)建索引,如:
[sql]
create table tbl_name
(
...
index index_name (index_cols),
primary key (index_cols),
unique (index_cols),
...
);
4. 刪除索引
和創(chuàng)建索引類似,刪除索引可以用drop index或alter table語句完成,如:
[sql]
drop index index_name on tbl_name;
drop index `primary` on tbl_name;
alter table tbl_name drop index index_name;
alter table tbl_name drop primary index;
5. 改變表結(jié)構(gòu)
1)改變列的數(shù)據(jù)類型
如果你想改變列的數(shù)據(jù)類型,可以使用change或modify字句,如下所示:
[sql]
alter table tbl_name modify col_name mediumint unsigned;
alter table tbl_name change old_col_name new_col_name mediumint unsigned;
從上面可以知道,change功能更強大,它不但能夠改變列的數(shù)據(jù)類型,還可以重命名列,但是它比較麻煩的一點是即時不想重命名,也要把列名寫兩遍。
2)改變表的存儲引擎
[sql]
alter table tbl_name engine=engine_name;
3)重命名表
重命名表可以使用alter table ... rename to 或rename table,如:
[sql]
alter table tbl_name rename to new_tbl_name;
rename table tbl_name to new_tbl_name;
alter table ... rename每次只能重命名一張表,而rename table可以重命名多張表,如:
[sql]
rename table t1 to new_t1, t2 to t1;
如果在表名前加上前綴,可以把一個表從一個數(shù)據(jù)庫遷移到另一個數(shù)據(jù)庫。
bitsCN.com聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com