@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;