1 数据表的创建

详细情况可以参考创建表CREATE TABLE语法 关于constraint的使用可以参见mysql constraint

语法规范:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] <tbl_name>
(
    col_name type [NOT NULL | NULL] [DEFAULT default_value]
        [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
        [COMMENT 'string'],
    ... 
) [table_options] [select_statement];
实际上使用的时候:
    TEMPORARY一般不需要使用,这个关键字用于创建临时表
    if not exists建议使用
    括号中为实际字段的定义:
        type为数据类型
        NOT NULL | NULL:指定该列是否可以为空,如不指定则默认值为NULL
        DEFAULT:用于指定默认值,如果不指定则mysql自动分配。自动分配的默认值
            1. 默认为NULL
            3. 例外的情形:auto_increment-->下一个值; 表中第一个timestamp类型的列,为当前日期时间的timestamp;
        AUTO_INCREMENT: 从1开始, 必须被索引,一个表中只能有一个自增列
        UNIQUE
        KEY: index的同义词
        PRIMARY KEY: 隐式指定 NOT NULL, UNIQUE, 唯一。
table options通常用于指定engine和[DEFAULT] CHARACTER SET以及COLLATE

例:
    a. 创建普通表
        create table if not exists mytable
        (
            id    INT(11),
            name    VARCHAR(30)
        )ENGINE=MyISAM character set=utf-8;
    b. 设定主键
        i) 直接在列类型后面添加
            create table if not exists mytable
            (
                id    INT(11)    PRIMARY KEY,
                name    VARCHAR(30)
            );
        ii) 单独指定,该方法也可以用于创建多列联合主键
            [CONSTRAINT <主键名>] PRIMARY KEY(列名1 [ ,列名2,…])

            create table if not exists mytable
            (
                id    INT(11),
                name    VARCHAR(30),
                PRIMARY KEY(id)
            );
    c. 外键
        [CONSTRAINT <外键名>] FOREIGN KEY(列名1 [ ,列名2,…]) REFERENCES <主表名>(主键列1 [ ,主键列2,…])
语法规范:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] <tbl_name>
(
    col_name type [NOT NULL | NULL] [DEFAULT default_value]
        [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
        [COMMENT 'string'],
    ... 
) [table_options] [select_statement];
实际上使用的时候:
    TEMPORARY一般不需要使用,这个关键字用于创建临时表
    if not exists建议使用
    括号中为实际字段的定义:
        type为数据类型
        NOT NULL | NULL:指定该列是否可以为空,如不指定则默认值为NULL
        DEFAULT:用于指定默认值,如果不指定则mysql自动分配。自动分配的默认值
            1. 默认为NULL
            3. 例外的情形:auto_increment-->下一个值; 表中第一个timestamp类型的列,为当前日期时间的timestamp;
        AUTO_INCREMENT: 从1开始, 必须被索引,一个表中只能有一个自增列
        UNIQUE
        KEY: index的同义词
        PRIMARY KEY: 隐式指定 NOT NULL, UNIQUE, 唯一。
table options通常用于指定engine和[DEFAULT] CHARACTER SET以及COLLATE

例:
    a. 创建普通表
        create table if not exists mytable
        (
            id    INT(11),
            name    VARCHAR(30)
        )ENGINE=MyISAM character set=utf-8;
    b. 设定主键
        i) 直接在列类型后面添加
            create table if not exists mytable
            (
                id    INT(11)    PRIMARY KEY,
                name    VARCHAR(30)
            );
        ii) 单独指定,该方法也可以用于创建多列联合主键
            [CONSTRAINT <主键名>] PRIMARY KEY(列名1 [ ,列名2,…])

            create table if not exists mytable
            (
                id    INT(11),
                name    VARCHAR(30),
                PRIMARY KEY(id)
            );
    c. 外键
        [CONSTRAINT <外键名>] FOREIGN KEY(列名1 [ ,列名2,…]) REFERENCES <主表名>(主键列1 [ ,主键列2,…])
2 数据表的结构
a desc|describe直接查看表中的字段信息
        desc mytable;
    b show create查看表的创建信息
        show create table mytable;
    a desc|describe直接查看表中的字段信息
        desc mytable;
    b show create查看表的创建信息
        show create table mytable;
3 修改表名
语法规范:
    ALTER TABLE <旧表名> RENAME [TO] <新表名>;
    例:
    alter table mytable rename to new_name;
    语法规范:
    ALTER TABLE <旧表名> RENAME [TO] <新表名>;
    例:
    alter table mytable rename to new_name;
4 修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;    
    例:
    alter table mytable change id myid int(11);
    ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;    
    例:
    alter table mytable change id myid int(11);
5 修改字段信息
ALTER TABLE <表名> MODIFY <字段1> <数据类型> [FIRST|AFTER <字段2>];    
    a 修改字段的数据类型
        alter table mytable modify id int(10);

    b 修改字段的相对位置
        alter table mytable modify id int(10) after name;
    ALTER TABLE <表名> MODIFY <字段1> <数据类型> [FIRST|AFTER <字段2>];    
    a 修改字段的数据类型
        alter table mytable modify id int(10);

    b 修改字段的相对位置
        alter table mytable modify id int(10) after name;
6 添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
    这个方法也可以用来添加表的完整性约束。
    ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
    这个方法也可以用来添加表的完整性约束。
7 删除字段
ALTER TABLE <表名> DROP <字段名>;
    这个方法也可以用来删除PK, FK, Unique等约束
    ALTER TABLE <表名> DROP PRIMARY KEY|FOREIGN KEY|INDEX <字段名>;
    ALTER TABLE <表名> DROP <字段名>;
    这个方法也可以用来删除PK, FK, Unique等约束
    ALTER TABLE <表名> DROP PRIMARY KEY|FOREIGN KEY|INDEX <字段名>;
8 修改存储引擎
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
    ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
9 删除表
独立表可以直接删除:
        DROP TABLE [IF EXISTS]表1, 表2, . . . 表n;
    对于有外键关联的表,需要删除表中或者主表中的外键字段,然后删除该表。
    独立表可以直接删除:
        DROP TABLE [IF EXISTS]表1, 表2, . . . 表n;
    对于有外键关联的表,需要删除表中或者主表中的外键字段,然后删除该表。
10 显示表
show tables;
    show tables;
11 表的完整性约束
a alter table add 添加
        alter table [table_name] add constraint [constraint_name] [unique| primary key|foreign key] ([column_names])
    b alter table drop删除
    a alter table add 添加
        alter table [table_name] add constraint [constraint_name] [unique| primary key|foreign key] ([column_names])
    b alter table drop删除