MySQL 管理表和索引的相關語句

2021-12-30 12:23:35 字數 3133 閱讀 7453

[mysql]管理表和索引的相關語句

1. 建立表

mysql中建立表是通過create table語句實現的,語法這裡就不介紹了,非常複雜,可以去官網上查詢,所幸的是,我們並不需要記住所有的選項,因為大部分都採用預設即可,下面介紹幾個比較常用的選項。

1)指定儲存引擎

預設的儲存引擎由default-storage-engine指定,如果沒有指定,則為myisam,如果建表時,你不想使用預設的儲存引擎,可以通過如下語句實現:

[sql] 

create table table_name ( ... ) engine=engine_name;  

2)只有當表不存在時才建立

[sql] 

create table if not exist table_name ... ;  

上述語句表示:如果表已存在,則跳過;否則建立新錶。

3)建立臨時表

mysql的臨時表有如下特性:

- 臨時表只在建立該錶的會話裡是可見的,對其它會話是隱藏的,會話斷開後,臨時表自動被刪除。

- 當臨時表的表名和普通表一樣時,當前會話將會優先訪問臨時表。

臨時表的語法如下:

[sql] 

create temporary table temp_table_name ... ;  

4)從其它表中建立新錶

mysql提供兩種方式從其它表中建立新錶:

- create table ... like:建立乙個新錶為原表的空白副本,也就是說,新錶是乙個空表,但它擁有原表所有的屬性、索引、約束等(這個語法很有用,oracle就沒有類似的功能),其用法如下:

[sql] 

create table new_table_name like old_table_name;  

insert into new_table_name select * from old_table_name;  

- create table ... select:  不會複製所有的資料列屬性(保留下來的屬性有:字符集、noll or not null,預設值,注釋),不帶索引,不包含約束。

2. 刪除表

相比於建立表,刪除表就簡單多了。

1)刪除普通表

[sql] 

drop table table_name;  

2)刪除臨時表

[sql] 

drop temporary table table_name;  

3)表存在才刪除

[sql] 

drop table if exists table_name;  

3. 建立索引

你可以使用和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可省略,一般不建議省略,如果省略,系統會自動取個名字。

該語句支援在乙個alter table語句新增多個索引,這樣更靈活。

在建立表時,也可以同時建立索引,如:

[sql] 

create table tbl_name  

(    ...  

index index_name (index_cols),  

primary key (index_cols),  

unique (index_cols),  

...  

);  

4. 刪除索引

和建立索引類似,刪除索引可以用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. 改變表結構

1)改變列的資料型別

如果你想改變列的資料型別,可以使用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功能更強大,它不但能夠改變列的資料型別,還可以重新命名列,但是它比較麻煩的一點是即時不想重新命名,也要把列名寫兩遍。

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;  

如果在表名前加上字首,可以把乙個表從乙個資料庫遷移到另乙個資料庫。

mysql表索引 MySQL表及索引相關知識

1.表 1.1 建表 create table student id int 4 not null,name char 20 not null,age tinyint 2 not null default 0 dept varchar 16 default null show create tabl...

mysql 索引語法 MySQL索引的基本語法

索引是排好序的資料結構!可以用在 where 條件查詢的字段,和order by 排序的字段,有了索引,便可以快速地定位資料所在的實體地址並找出來。索引的分類 1.普通索引 normal 沒有任何約束,主要用於提高查詢效率 2.唯一索引 unique 在普通索引的基礎上增加了資料唯一性的約束,可以有...

mysql索引語法 MySQL建立索引的語法

建立表時建立索引 語法 create table 表名 屬性名 資料型別 完整性約束條件 unique fulltext spatial index key 別名 屬性名 1 長度 asc desc 1 建立普通索引 create table index1 id int,name varchar 2...