暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL_表维护

lin在路上 2020-08-11
274

常见的表维护包括创建表、更新表、重命名表、删除表

1 创建表

 CREATE TABLE productnotes (
 note_id INT NOT NULL AUTO_INCREMENT,
 prod_id CHAR (10) NOT NULL,
 note_date datetime NOT NULL,
 note_text text NULL,
 note_ip text NULL DEFAULT 1,
 PRIMARY KEY (note_id)
 ) ENGINE = MyISAM
 
 #新表的名字,在关键字CREATE TABLE之后给出。若表名已存在,需要先删除再创建。可表名前加IF NOT EXISTS,确保仅在表名不存在时创建
 #列的名字和定义,用逗号分隔,括圆括号中
 #NOT NULL表示该列不能为空,反之NULL表示该列可以为空
 #PRIMARY KEY指定主键字段,如果单个列为主键则必须唯一,若多个列则组合主键也必须唯一。
 #AUTO_INCREMENT 自动增量,每张表只允许一列AUTO_INCREMENT,且必须被索引
 #DEFAULT指定默认值,默认字只支持常量,不支持函数
 #ENGINE = MyISAM 指定引擎类型。若省略则使用默认引擎(建库时指定),需要注意外键不能跨引擎。引擎类型常见的有如下三种:InnoDB是事务处理引擎,但不支持全文本搜索;MyISAM支持全文本搜索,但不支持事务处理;MEMORY类似MyISAM,但由于数据存储在内存中,速度很快(特别适合于临时表)
复制

2 更新表

 ALTER TABLE vendor
 ADD vend_phone CHAR(20);
 #添加字段
 
 ALTER TABLE vendor
 DROP COLUMN vend_phone;
 #删除字段
 
 ALTER TABLE order_item ADD CONSTRAINT FK_OrderItem_Order FOREIGN KEY (order_num) REFERENCES `order` (order_num);
 #定义外键
 #初始化脚本中已执行
复制

鉴于直接针对表(特别是已保存大量数据的业务表)执行更新操作有风险存在。建议根据如下步骤执行

  • 重命名旧表

  • 创建新表(字段的更新在这一步体现),并使用INSERT SELECT将数据导入

  • 重新创建触发器、存储过程、索引和外键

  • 验证新表是否有问题,之后根据实际情况处理旧表(原地备份、导出备份或者直接删除)

3 重命名表

 RENAME TABLE customer_new TO customer_new1
 #将表名customer_new修改为customer_new1
 
 RENAME TABLE customer_new TO customer_new1,
              order_item TO order_item1;
 #支持同时针对多张表进行重命名
复制


4 删除表

 DROP TABLE customer_new1
 #将永久删除该表,需慎重
复制




文章转载自lin在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论