NoteOfMySQL-04-数据表的使用

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

将student表名修改为pupil

(2)修改字段数据类型

alter table table_name modify col_name type;

例子:将sname的数据类型从varchar(15)修改为varchar(30)

将sname的数据类型从varchar(15)修改为varchar(30)

(3)修改字段名

alter table table_name change old_col_name new_col_name type;

例子:将sbirth(date)修改为sdate(date),数据类型不修改。

将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字段后面。

markid字段移到sclass字段后面

(7)修改存储引擎

alter table table_name engine=新搜索引擎;

(8)删除数据表的外键约束

alter table table_name drop foreign key 外键约束名;

例子:删除外键zno

删除外键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类型。
posted @ 2020-11-29 23:03  步平凡  阅读(122)  评论(0编辑  收藏  举报