Skip to content

创建表

CREATE TABLE [IF NOT EXISTS] 表名 ( 字段1, 数据类型 [约束条件] [默认值], 字段2, 数据类型 [约束条件] [默认值], ...,
[表约束条件] );

  • 方式一

    sql
    CREATE TABLE IF NOT EXISTS mytable (
      id INT,
      # 数据类型 VARCHAR 必须指明长度
      emp_name VARCHAR(15),
      hire_data DATE
    );
  • 方式二

    sql
    # 基于现有表创建新的表,同时导入查询的数据。
    CREATE TABLE mytable2
    AS
    # 查询语句中字段的别名会作为新创建的表的字段的名称
    SELECT last_name, salary sal
    # FROM 数据库.表明
    FROM employees;
    
    # 复制表结构及其数据
    CREATE TABLE employees_copy
    AS
    SELECT *
    FROM employees;
    
    # 复制表结构
    CREATE TABLE employees_copy2
    AS
    SELECT *
    FROM employees
    WHERE NULL;

查看表

sql
DESC mytable;
SHOW CREATE TABLE mytable;
SELECT * FROM mytable;

修改表

  • 添加一个字段

    sql
    # 默认添加到最后一个字段
    ALTER TABLE mytable
    # 一共有 10 位,小数位 2 位,整数位 8 位。
    # 必须指定数据类型
    ADD salary DOUBLE(10, 2);
    
    ALTER TABLE mytable
    ADD phone_number VARCHAR(20)
    # 添加到最前面
    FIRST;
    
    ALTER TABLE mytable
    ADD email VARCHAR(45)
    # 添加到 emp_name 后面
    AFTER emp_name;
  • 修改一个字段(数据类型、长度、默认值、位置)

    sql
    # 修改长度
    ALTER TABLE mytable
    MODIFY emp_name VARCHAR(20);
    
    # 修改长度和默认值
    ALTER TABLE mytable
    MODIFY emp_name VARCHAR(20) DEFAULT 'foo';
    
    # 修改位置
    ALTER TABLE mytable
    MODIFY emp_name VARCHAR(20)
    AFTER salary;
  • 重命名一个字段

    sql
    ALTER TABLE mytable
    # 必须指定数据类型
    CHANGE salary monthly_salary DOUBLE(10, 2);
  • 删除一个字段

    sql
    ALTER TABLE mytable
    DROP COLUMN email;

重命名表

  • 方式一

    sql
    RENAME TABLE mytable
    TO my;
  • 方式二

    sql
    ALTER TABLE mytable
    RENAME TO my;

删除表

表结构和数据都被清空

sql
DROP TABLE mytable;
# 或
DROP TABLE IF EXISTS mytable;

清空表

表结构还存在,数据被清空。

sql
TRUNCATE TABLE mytable;