MySQL 笔记 (3) 表的操作

创建表

1
CREATE [TEMPORARY] TABLE[ IF NOT EXISTS] [库名.]表名 ( 表的结构定义 )[ 表选项]
  • 每个字段必须有数据类型
  • 最后一个字段后不能有逗号
  • TEMPORARY 临时表,会话结束时表自动消失

对于字段的定义:

1
字段名 数据类型 [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']

表选项

  • 字符集
    CHARSET = charset_name
    如果表没有设定,则使用数据库字符集
  • 存储引擎
    ENGINE = engine_name
    表在管理数据时采用的不同的数据结构,结构不同会导致处理方式、提供的特性操作等不同
    常见的引擎:InnoDB MyISAM Memory/Heap BDB Merge Example CSV MaxDB Archive
    不同的引擎在保存表的结构和数据时采用不同的方式
    • MyISAM表文件含义:.frm表定义,.MYD表数据,.MYI表索引
    • InnoDB表文件含义:.frm表定义,表空间数据和日志文件
1
2
SHOW ENGINES -- 显示存储引擎的状态信息
SHOW ENGINE 引擎名 {LOGS|STATUS} -- 显示存储引擎的日志或状态信息
  • 自增起始数
    AUTO_INCREMENT = 行数
  • 数据文件目录
    DATA DIRECTORY = '目录'
  • 索引文件目录
    INDEX DIRECTORY = '目录'
  • 表注释
    COMMENT = 'string'
  • 分区选项
    PARTITION BY ... (详细见手册)

查看所有表

1
2
SHOW TABLES[ LIKE 'pattern']
SHOW TABLES FROM 表名

查看表机构

1
2
3
SHOW CREATE TABLE 表名 (信息更详细)
DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 / SHOW COLUMNS FROM 表名 [LIKE 'PATTERN']
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']

修改表

  • 修改表本身的选项
1
ALTER TABLE 表名 表的选项

eg:

1
ALTER TABLE 表名 ENGINE=MYISAM;
  • 对表进行重命名
1
2
RENAME TABLE 原表名 TO 新表名
RENAME TABLE 原表名 TO 库名.表名 (可将表移动到另一个数据库)

RENAME可以交换两个表名

  • 修改表的字段机构(13.1.2. ALTER TABLE语法)

    1
    ALTER TABLE 表名 操作名
    • 操作名
      • ADD[ COLUMN] 字段定义 – 增加字段
        • AFTER 字段名 – 表示增加在该字段名后面
        • FIRST – 表示增加在第一个
      • ADD PRIMARY KEY(字段名) – 创建主键
      • ADD UNIQUE [索引名] (字段名) – 创建唯一索引
      • ADD INDEX [索引名] (字段名) – 创建普通索引
      • DROP[ COLUMN] 字段名 – 删除字段
      • MODIFY[ COLUMN] 字段名 字段属性 – 支持对字段属性进行修改,不能修改字段名(所有原有属性也需写上)
      • CHANGE[ COLUMN] 原字段名 新字段名 字段属性 – 支持对字段名修改
      • DROP PRIMARY KEY – 删除主键(删除主键前需删除其AUTO_INCREMENT属性)
      • DROP INDEX 索引名 – 删除索引
      • DROP FOREIGN KEY 外键 – 删除外键

删除表

1
DROP TABLE[ IF EXISTS] 表名 ...

清空表数据

1
TRUNCATE [TABLE] 表名

复制表结构

1
CREATE TABLE 表名 LIKE 要复制的表名

复制表结构和数据

1
CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名

检查表是否有错误

1
CHECK TABLE tbl_name [, tbl_name] ... [option] ...

优化表

1
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

修复表

1
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]

分析表

1
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2021 朝着牛逼的道路一路狂奔 All Rights Reserved.

访客数 : | 访问量 :