1. 创建数据表
【注】:使用前需要先用use选择数据库。
(1)语法格式
create [temporary] table [if not exists] table_name [( [column_definition], ... | [index_definition] )] [table_option] [select_statement] [ENGINE=存储引擎类型] [DEFAULT CHARSET=字符集类型] [PACK_KEYS=压缩类型]
(2)参数说明
参数 | 说明 |
---|---|
temporary | 使用此关键字表示创建临时表 |
index_definition | 为表的相关字段指定索引 |
column_definition | 字段的定义,如下 |
col_name type [NOT NULL | NULL] [DEFAULT default_value] [auto_increment] [UNIQUE[key]] | [PRIMARY[key]] [comment 'String'] [reference_definition]
其中,
- auto_increment:设置自增,type需为整形类型
- UNIQUE、PRIMARY:指定主键、唯一性约束
- reference_definition:指定字段外键约束
(3)表文件名
存储引擎类型 | 表文件 |
---|---|
InnoDB | 表名.frm |
MyISAM | 表名.myd[数据文件]、表名.myi[索引文件] |
(4)例子
2. 查看数据表
(1)显示表名称
show tables;
(2)显示表结构
[describe | desc] table_name;
show create table table_name;
show full columns from table_name;
(3)例子
3. 修改数据表
(1)修改数据表名
alter table old_table_name rename [to] new_table_name;
例子:将student表名修改为pupil
(2)修改字段数据类型
alter table table_name modify col_name type;
例子:将sname的数据类型从varchar(15)修改为varchar(30)
(3)修改字段名
alter table table_name change old_col_name new_col_name type;
例子:将sbirth(date)修改为sdate(date),数据类型不修改。
(4)添加字段
alter table table_name add new_col_name type [约束条件] [ [FIRST] | [AFTER col_name] ];
- 参数说明:FIRST表示将字段设置为第一个字段;AFTER表示将字段添加到col_name后面。
例子:无完整性性约束anoid、有完整性性约束mark、使用FIRSTtestid、使用AFTERmarkid。
(5)删除字段
alter table table_name drop col_name;
(6)修改字段排序
alter table table_name modify col_name01 type [ [FIRST] | [AFTER col_name02] ];
例子:markid字段移到sclass字段后面。
(7)修改存储引擎
alter table table_name engine=新搜索引擎;
(8)删除数据表的外键约束
alter table table_name drop foreign key 外键约束名;
例子:删除外键zno
4. 复制数据表
(1)语法格式
create [temporary] table [if not exists] table_name [ [LIKE old_table_name] | [AS (select_statement)] ];
(2)参数说明
使用LIKE则将old_table_name表的字段结构和索引全部复制到table_name。
使用AS则选择old_table_name表的特定字段复制到table_name。
(3)注意
复制表时都不会复制权限设置。
(4)例子
5. 删除数据表
(1)语法格式
drop table [if exists] table_name1[, table_name2, ...]
(2)注意
- 当数据表之间不存在关联时,可以同时删除多个表。
- 当数据表之间存在外键关联时:如果必须要删除,可以先删除与他关联的子表,再删除父表;如果只想删除父表,保留子表,只需将关联的表的外键约束条件取消。
(3)例子
6. 注意事项
(1)列的标志属性
任何表都可以创建一个包含系统所生成序号值的标志列。
该序号值唯一标志表中的一列,且可以作为键值。
每个表中只能有一个列设置为标志属性,并且该列只能是decimal、numeric、int、smallint、bigint、tinyint数据类型。
(2)列类型的隐含改变
在MySQL中,存在一下情况之一时,系统会隐含地改变列的数据类型。
- 1)长度小于4的varchar类型会被改变为char类型。
- 2)当一张表中含有可变长列时,表中所有大于3个字符的char类型列都会被改变为varchar类型。