数据表的基本操作


这一章节紧跟在 数据库基本操作 之后,是对数据库中表相关操作的说明,如下会一一进行说明。

创建表

MySQL创建表存在大量的可选项,本文不会一一列举说明,感兴趣的可看源文档说明,本文只列举说明常用的选项,下文的说明部分并未100%展示源文档,同样只选择展示了部分内容,如下的 create_difinition 的说明只选择了常用的部分,源文档链接如下

mysql源文档-创建表


语法:
create table [if not exists] tb_name {create_definition} [table_options] [partition_options]

说明:

  • create_definition
    • 表字段定义
      
      create_definition:
      col_name column_definition
      | {index|key} [index_name] [index_type] (key_part,...]) [index_option] ...
      | {fulltext|spatial} [index|key] [index_name] (key_part,...) [index_option]     ...
  • column_definition:

    data_type [not null | null] [auto_increment] [unique [key]] [[primary] key] [comment 'string']

  • table_options
    • 表参数设置,如制定该表字符编码等
  • partion_options
    • 表分区设置

实例:

#使用默认设置创建 user 表,包括 name,age 字段
create table if not exists user(
    name char(25),
    age int(9)
);

#使用一些 column_definition 设置来创建 user 表
create table if not exists user(
    id int(9) not null auto_increment primary comment '主键',
    name char(25) unique
);

#使用一些 table_option 来创建表
create table if not exists user(
    name char(25),
    age tinyint(3)
) charset = utf8 comment '用户表';

删除表

mysql源文档-删除表


语法:
drop [temporary] table [if exists] tbl_name [,tbl_name] ... [restrict | cascade]

说明:
* tbl_name [,tbl_name]
* 单次删除多张表
* temporary关键词
* 只删除 temporary table
* 命令并不会自动提交
* 不进行权限检查,temporary table 只有创建它的 session 才能看见
* restrict | cascade
* 无意义,仅仅只是为了方便迁移到其他的数据库系统

实例:

    #删除表
    drop table user;

    #删除 temporary 表
    drop temporary table user;# error,unknown table database_name.uesr

编辑表

mysql源文档-编辑表


编辑表包括 add,change,drop,modify,rename 三种类型的操作。

  • add 用来新增列,包括字段名和字段配置
  • change 变更字段名,字段配置以及字段位置
  • drop 删除列
  • modify 用来修改已有列的相关配置,如字段的数据类型,注释等
  • rename 仅仅变更字段名

语法:
alter table tbl_name [alter_specification [,alter_specification]...] [partition_options]

说明:
* alter_specification
* 变更说明
alter_specification:
table_options
| add [column] col_name column_definition [first|after col_name]
| add {index|key} [index_name] [index_type] (key_part,..) [index_option]..
| change [column] old_col_name new_col_name column_definition [first|after col_name]
| drop [column] col_name
| modify [column] col_name column_definition [first|after col_name]
| rename column old_col_name to new_col_name
| ...

* partition_options
* 分区设置

实例:

    # 新增字段 c2,数据类型为 int
    create table t1(c1 int);
    alter table t1 add column c2 int;

    # 要求新增字段在指定字段之前或之后
    create table t1(c1 int,c2 int,c3 int);
    alter table t1 add c4 int first c1;
    alter table t1 add c5 int after c3;

    # 变更字段
    create table t1(c1 int);
    alter table t1 change c1 c2 char(20);

    #删除字段
    create table t1(c1 int);
    alter table drop c1;

    # 修改字段设置
    create table t1(c1 int);
    alter table t1 modify c1 char;

Leave a comment

邮箱地址不会被公开。 必填项已用*标注