MySQL-06-表结构修改

1、表结构修改-新增表字段

-- 新增表字段
ALTER TABLE tb_test ADD u_name varchar(10) not null;
ALTER TABLE tb_test ADD regTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP();
ALTER TABLE tb_test ADD type TINYINT DEFAULT 1 AFTER u_name;
ALTER TABLE tb_test ADD  u_age varchar(10) not null,ADD u_sex varchar(2) not null;

2、表结构修改-删除表字段

-- 删除表字段
ALTER TABLE tb_test DROP u_age,DROP u_sex;

-- 删除表字段并新增表字段
ALTER TABLE tb_test DROP type,ADD u_age varchar(10) not null;

3、表结构修改-修改表字段

-- 修改表字段
-- type TINYINT 默认是1
-- 现将 tpye 类型改为 int ;默认改为2
-- UNSIGNED:表示无符号的
-- FIRST:将该字段放在第一列
ALTER TABLE tb_test MODIFY type INT UNSIGNED DEFAULT 2;
ALTER TABLE tb_test MODIFY type tinyint UNSIGNED DEFAULT 1 FIRST;

-- 修改默认值
ALTER TABLE tb_test MODIFY type tinyint UNSIGNED DEFAULT 1;
ALTER TABLE tb_test ALTER type SET DEFAULT 2;

-- 去掉默认值
ALTER TABLE tb_test ALTER type DROP DEFAULT;

-- 修改字段名
ALTER TABLE tb_test CHANGE COLUMN regTime createTime TIMESTAMP;

-- 修改表名
ALTER TABLE tb_test RENAME tb_test1;
RENAME TABLE tb_test1 to tb_test;


4、表结构修改-删除数据库或表

-- 删除数据库
DROP DATABASE IF EXISTS aaa;

-- 删除表
DROP TABLE IF EXISTS test3;

-- 清空表数据
TRUNCATE TABLE  test1;

5、表结构修改-添加约束

-- 增加主键约束 
ALTER TABLE test1 ADD CONSTRAINT zjys PRIMARY KEY(a);

-- 添加唯一约束
ALTER TABLE	test1 ADD UNIQUE KEY(b);
或者
ALTER TABLE	test1 ADD UNIQUE(b);

-- 添加外键约束

CREATE TABLE `test1` (
  `a` varchar(255) PRIMARY KEY,
  `b` varchar(255) 
) ;

CREATE TABLE `test2` (
  `a` varchar(255) ,
  `b` varchar(255) 
) ;

ALTER TABLE	test2 ADD  FOREIGN KEY(a) REFERENCES test1(a);

6、表结构修改-删除约束

  • 删除主键约束
ALTER TABLE table_name DROP PRIMARY KEY;
  • 删除唯一约束
SHOW INDEXES FROM table_name; --查看唯一约束
ALTER TABLE table_name  DROP index id;
  • 删除外键约束
SHOW create FROM table_name; --查看起的别名
ALTER TABLE table_name  DROP FOREIGN KEY cid;
  • 删除默认约束
ALTER TABLE table_name  ALTER type DROP DEFAULT;

附录

-- 创建tb_test表
CREATE TABLE `tb_test` (
  `id` varchar(20) COLLATE utf8mb4_bin NOT NULL,
  `u_name` varchar(10) COLLATE utf8mb4_bin NOT NULL,
  `type` tinyint DEFAULT '1',
  `regTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `u_age` varchar(10) COLLATE utf8mb4_bin NOT NULL,
  `u_sex` varchar(2) COLLATE utf8mb4_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
原文地址:https://www.cnblogs.com/Mr-Wei/p/15423487.html