《MySQL必知必会》第二十一章:创建和操纵表

@author: Tobin
@date: 2019/11/6 18:25:04

创建表

CREATE TABLE IF NOT EXISTS 表名
(
    cust_id int NOT NULL AUTO_INCREMENT,
    cust_address char(50) NOT NULL,
    PRIMARY KEY(cust_id)
)ENGINE=InnoDB;

每个列要么NULL,要么NOT NULL,空串不等于NULL。
主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识。
每一个表只允许一个AUTO_INCREMENT列。SELECT last_insert_id()获得最后一个AUTO_INCREMENT值。
使用DEFAULT xx,放在NOT NULL后,提示默认值。
引擎。

  • InnoDB:可靠的事务处理引擎,不支持全文本搜索
  • MEMORY:数据存储在内存,不是磁盘,速度快,适合临时表
  • MyISAM:性能极高,支持全文本搜索,不支持事务处理

外键不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键。

更新表

# 添加一个列,明确其数据类型
ALTER TABLE vendors
ADD vend_phone CHAR(20);

# 删除列
ALTER TABLE vendors
DROP COLUMN vend_phone;

复杂的表结构更改过程。

  • 用新的表布局创建一个新表
  • 使用INSERT SELECT语句,从旧表复制数据到新表,可使用转换函数和计算字段
  • 检验包含所需数据的新表
  • 重命名旧表,可以删除
  • 用旧表原来的名字重命名新表
  • 根据需要,重新创建触发器,存储过程,索引和外键

删除表

DROP TABLE customer2; # 永久删除,不可撤销

重命名表

RENAME TABLE customer2 TO customers,
                            backup_products TO products;
原文地址:https://www.cnblogs.com/zuotongbin/p/11814175.html