[MySQL] 管理表和索引的相关语句 1. 创建表 MySQL中创建表是通过create table语句实现的,语法这里就不介绍了,非常复杂,可以去官网上查询,所幸的是,我们并不需要记住所有的选项,因为大部分都采用默认即可,下面介绍几个比较常用的选项。 1)指定存储引擎
[MySQL] 管理表和索引的相关语句MySQL中创建表是通过create table语句实现的,语法这里就不介绍了,非常复杂,可以去官网上查询,所幸的是,我们并不需要记住所有的选项,因为大部分都采用默认即可,下面介绍几个比较常用的选项。
1)指定存储引擎
默认的存储引擎由default-storage-engine指定,如果没有指定,则为MyISAM,如果建表时,你不想使用默认的存储引擎,可以通过如下语句实现:
create table table_name ( ... ) engine=engine_name;
create table if not exist table_name ... ;
3)创建临时表
MySQL的临时表有如下特性:
- 临时表只在创建该表的会话里是可见的,对其它会话是隐藏的,会话断开后,临时表自动被删除。
- 当临时表的表名和普通表一样时,当前会话将会优先访问临时表。
临时表的语法如下:
create temporary table temp_table_name ... ;
MySQL提供两种方式从其它表中创建新表:
- create table ... like:创建一个新表为原表的空白副本,也就是说,新表是一个空表,但它拥有原表所有的属性、索引、约束等(这个语法很有用,Oracle就没有类似的功能),其用法如下:
create table new_table_name like old_table_name; insert into new_table_name select * from old_table_name;
相比于创建表,删除表就简单多了。
1)删除普通表
drop table table_name;
drop temporary table table_name;
drop table if exists table_name;
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);
create table tbl_name ( ... index index_name (index_cols), primary key (index_cols), unique (index_cols), ... );
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;
alter table tbl_name modify col_name mediumint unsigned; alter table tbl_name change old_col_name new_col_name mediumint unsigned;
alter table tbl_name engine=engine_name;
alter table tbl_name rename to new_tbl_name; rename table tbl_name to new_tbl_name;
rename table t1 to new_t1, t2 to t1;