Mysql修改数据表实战

r囧r小猫 2021-07-24 18:03 844阅读 0赞

一 将数据表tb_dept3改名为tb_deptment3

1 使用ALTER TABLE将表tb_dept3改名为tb_deptment3,SQL语句如下:

  1. mysql> ALTER TABLE tb_dept3 RENAME tb_deptment3;
  2. Query OK, 0 rows affected (0.10 sec)

二 将数据表tb_dept1中name字段的数据类型由VARCHAR(22)修改成VARCHAR(30)

1 执行修改表名操作之前,使用DESC查看tb_dept表结构,结果如下:

  1. mysql> DESC tb_dept1;
  2. +----------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +----------+-------------+------+-----+---------+-------+
  5. | id | int(11) | NO | PRI | NULL | |
  6. | name | varchar(22) | NO | | NULL | |
  7. | location | varchar(50) | YES | | NULL | |
  8. +----------+-------------+------+-----+---------+-------+
  9. 3 rows in set (0.00 sec)

可以看到现在name字段的数据类型为VARCHAR(22),下面修改其类型。输入如下SQL语句并执行:

  1. mysql> ALTER TABLE tb_dept1 MODIFY name VARCHAR(30);
  2. Query OK, 0 rows affected (0.33 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

三 将数据表tb_dept1中的location字段名称改为loc,数据类型保持不变,SQL语句如下

  1. mysql> ALTER TABLE tb_dept1 CHANGE location loc VARCHAR(50);
  2. Query OK, 0 rows affected (0.07 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

四 将数据表tb_dept1中的loc字段名称改为location,同时将数据类型变为VARCHAR(60),SQL语句如下

  1. mysql> ALTER TABLE tb_dept1 CHANGE loc location VARCHAR(60);
  2. Query OK, 0 rows affected (0.07 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

五 在数据表tb_dept1中添加一个没有完整性约束的INT类型的字段managerId(部门经理编号),SQL语句如下

  1. mysql> ALTER TABLE tb_dept1 ADD managerId INT(10);
  2. Query OK, 0 rows affected (0.33 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

六 在数据表tb_dept1中添加一个不能为空的VARCHAR(12)类型的字段column1,SQL语句如下

  1. mysql> ALTER TABLE tb_dept1 ADD column1 VARCHAR(12) not null;
  2. Query OK, 0 rows affected (0.31 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

七 在数据表tb_dept1中添加一个INT类型的字段column2,SQL语句如下

  1. mysql> ALTER TABLE tb_dept1 ADD column2 INT(11) FIRST;
  2. Query OK, 0 rows affected (0.37 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

八 在数据表tb_dept1中name列后添加一个INT类型的字段column3,SQL语句如下

  1. mysql> ALTER TABLE tb_dept1 ADD column3 INT(11) AFTER name;
  2. Query OK, 0 rows affected (0.31 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

九 删除数据表tb_dept1表中的column2字段

删除column2字段,SQL语句如下:

  1. mysql> ALTER TABLE tb_dept1 DROP column2;
  2. Query OK, 0 rows affected (0.31 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

十 将数据表tb_dept中的column1字段修改为表的第一个字段,SQL语句如下

  1. mysql> ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) FIRST;
  2. Query OK, 0 rows affected (0.33 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

十一 将数据表tb_dept1中的column1字段插入到location字段后面,SQL语句如下

  1. mysql> ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) AFTER location;
  2. Query OK, 0 rows affected (0.32 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

十二 将数据表tb_deptment3的存储引擎修改为MyISAM

1 在修改存储引擎之前,先使用SHOW CREATE TABLE查看表tb_deptment3当前的存储引擎,结果如下。

  1. mysql> SHOW CREATE TABLE tb_deptment3 \G
  2. *************************** 1. row ***************************
  3. Table: tb_deptment3
  4. Create Table: CREATE TABLE `tb_deptment3` (
  5. `id` int(11) NOT NULL,
  6. `name` varchar(22) DEFAULT NULL,
  7. `location` varchar(50) DEFAULT NULL,
  8. PRIMARY KEY (`id`),
  9. UNIQUE KEY `STH` (`name`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  11. 1 row in set (0.00 sec)

可以看到,表tb_deptment3当前的存储引擎为ENGINE=InnoDB,接下来修改存储引擎类型,输入如下SQL语句并执行:

  1. mysql> ALTER TABLE tb_deptment3 ENGINE=MyISAM;
  2. Query OK, 0 rows affected (0.29 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

使用SHOW CREATE TABLE再次查看表tb_deptment3的存储引擎,发现表tb_dept的存储引擎变成了“MyISAM”,结果如下:

  1. mysql> SHOW CREATE TABLE tb_deptment3 \G
  2. *************************** 1. row ***************************
  3. Table: tb_deptment3
  4. Create Table: CREATE TABLE `tb_deptment3` (
  5. `id` int(11) NOT NULL,
  6. `name` varchar(22) DEFAULT NULL,
  7. `location` varchar(50) DEFAULT NULL,
  8. PRIMARY KEY (`id`),
  9. UNIQUE KEY `STH` (`name`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8
  11. 1 row in set (0.00 sec)

十三 删除数据表tb_emp9中的外键约束

首先创建表tb_emp9,创建外键deptId关联tb_dept1表的主键id,SQL语句如下:

  1. CREATE TABLE tb_emp9
  2. (
  3. id INT(11) PRIMARY KEY,
  4. name VARCHAR(25),
  5. deptId INT(11),
  6. salary FLOAT,
  7. CONSTRAINT fk_emp_dept FOREIGN KEY (deptId) REFERENCES tb_dept1(id)
  8. );

使用SHOW CREATE TABLE查看表tb_emp9的结构,结果如下:

  1. mysql> SHOW CREATE TABLE tb_emp9 \G
  2. *************************** 1. row ***************************
  3. Table: tb_emp9
  4. Create Table: CREATE TABLE `tb_emp9` (
  5. `id` int(11) NOT NULL,
  6. `name` varchar(25) DEFAULT NULL,
  7. `deptId` int(11) DEFAULT NULL,
  8. `salary` float DEFAULT NULL,
  9. PRIMARY KEY (`id`),
  10. KEY `fk_emp_dept` (`deptId`),
  11. CONSTRAINT `fk_emp_dept` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  13. 1 row in set (0.00 sec)

可以看到,已经成功添加了表的外键,下面删除外键约束,SQL语句如下:

  1. mysql> ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;
  2. Query OK, 0 rows affected (0.06 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

执行完毕之后,将删除表tb_emp的外键约束,使用SHOW CREATE TABLE再次查看表tb_emp9结构,结果如下:

  1. mysql> SHOW CREATE TABLE tb_emp9 \G
  2. *************************** 1. row ***************************
  3. Table: tb_emp9
  4. Create Table: CREATE TABLE `tb_emp9` (
  5. `id` int(11) NOT NULL,
  6. `name` varchar(25) DEFAULT NULL,
  7. `deptId` int(11) DEFAULT NULL,
  8. `salary` float DEFAULT NULL,
  9. PRIMARY KEY (`id`),
  10. KEY `fk_emp_dept` (`deptId`)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  12. 1 row in set (0.00 sec)

发表评论

表情:
评论列表 (有 0 条评论,844人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL修改数据表

    MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、创建或取消索引、更改原有列类型、重新命名列或表等。 基本语法 修改表指的是修改