0

数据表的基本操作——综合案例2(二十)

步骤7:修改sex字段,数据类型为CHAR(1),非空约束。

修改字段数据类型,需要用到ALTER TABLE语句,输入语句如下:

mysql>ALTER TABLE employees MODIFY sex CHAR(1) NOT NULL;

Query OK, 0 rows affected (0.00 sec)

Records: 0  Duplicates: 0  Warnings: 0

结果显示执行成功,使用DESC查看修改后的结果如下:

mysql>DESC employees;

+----------------------+--------------+--------+-------+---------+--------------------+

| Field           | Type      | Null  | Key | Default | Extra          |

+----------------------+--------------+--------+-------+---------+--------------------+

| employeeNumber | int(11)     | NO   | PRI  | NULL | auto_increment |

| lastName       | varchar(50)  | NO   |     | NULL |              |

| firstName      | varchar(50)  | NO   |      | NULL |              |

| mobile         | varchar(25)  | NO   |     | NULL |              |

| officeCode     | int(10)      | NO   | MUL | NULL |              |

| jobTitle        | varchar(50)  | NO   |     | NULL |              |

| employee _birth | datetime     | YES  |     | NULL |              |

| note           | varchar(255) | YES  |     | NULL |              |

| sex            | char(1)     |  NO  |     | NULL |              |

+--------------------+----------------+--------+-------+---------+--------------------+

9 rows in set (0.00 sec)

执行结果可以看到,sex字段的数据类型由前面的VARCHAR(5)修改为CHAR(1),且其Null列显示为NO,表示该列不允许空值,修改成功。

步骤8:删除字段note

删除字段,需要用到ALTER TABLE语句,输入语句如下:

mysql> ALTER TABLE employees DROP note;

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

结果显示执行语句成功,使用DESC employees;查看语句执行后的结果:

mysql> desc employees;

+----------------------+--------------+--------+-------+---------+--------------------+

| Field           | Type      | Null  | Key | Default | Extra          |

+----------------------+--------------+--------+-------+---------+--------------------+

|employeeNumber | int(11)     | NO   | PRI  | NULL | auto_increment |

| lastName       | varchar(50)  | NO   |     | NULL |              |

| firstName      | varchar(50)  | NO   |      | NULL |              |

| mobile         | varchar(25)  | NO   |     | NULL |              |

| officeCode     | int(10)      | NO   | MUL | NULL |              |

| jobTitle        | varchar(50)  | NO   |     | NULL |              |

| employee _birth | datetime     | YES  |     | NULL |              |

| sex            | char(1)     |  NO  |     | NULL |              |

+--------------------+----------------+--------+-------+---------+--------------------+

8 rows in set (0.00 sec)

可以看到,DESC语句返回了8个列字段,note字段已经不在表结构中,删除字段成功。

步骤9:增加字段名favoriate_activity,数据类型为VARCHAR(100)

增加字段,需要用到ALTER TABLE语句,输入语句如下:

mysql> ALTER TABLE employees ADD favoriate_activity VARCHAR(100);

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

结果显示执行语句成功,使用DESC employees;查看语句执行后的结果:

mysql> desc employees;

+----------------------+--------------+--------+-------+---------+--------------------+

| Field           | Type      | Null  | Key | Default | Extra          |

+----------------------+--------------+--------+-------+---------+--------------------+

|employeeNumber | int(11)      | NO   | PRI  | NULL | auto_increment |

| lastName       | varchar(50)  | NO   |     | NULL |              |

| firstName       | varchar(50)  | NO   |      | NULL |             |

| mobile         | varchar(25)  | NO   |     | NULL |              |

| officeCode      | int(10)      | NO   | MUL | NULL |             |

| jobTitle         | varchar(50)  | NO   |     | NULL |              |

| employee _birth  | datetime     | YES  |     | NULL |              |

| sex             | char(1)     |  NO  |     | NULL |              |

| favoriate_activity | varchar(100) | YES  |     | NULL |              |

+----------------------+-----------------+--------+-------+---------+--------------------+

9 rows in set (0.00 sec)

可以看到,数据表employees中增加了一个新的列favoriate_activity,数据类型为VARCHAR(100),允许空值,添加新字段成功。

步骤10:删除表offices

在创建表employees表时候,设置了表的外键,该表关联了其父表的officeCode主键,如前面所述,删除关联表时,要先删除子表employees的外键约束,才能删除父表,因此,必须先删除employees表的外键约束。

1)删除employees表的外键约束,输入如下语句:

mysql>ALTER TABLE employees DROP FOREIGN KEY office_fk;

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

其中office_fkemployees表的外键约束的名称,即创建外键约束时CONSTRAINT 关键字后面的参数,结果显示语句执行成功,现在可以删除offices父表。

2)删除表offices,输入如下语句:

mysql>DROP TABLE offices;

Query OK, 0 rows affected (0.00 sec)

结果显示执行删除操作成功,使用SHOW TABLES;语句查看数据库中的表,结果如下:

mysql> show tables;

+-----------------------+

| Tables_in_company |

+-----------------------+

| employees       |

+-----------------------+

1 row in set (0.00 sec)

可以看到,数据库中已经没有名称为offices的表了,删除表成功。

步骤11:修改表employees存储引擎为MyISAM

修改表存储引擎,需要用到ALTER TABLE语句,输入语句如下:

mysql>ALTER TABLE employees ENGINE=MyISAM;

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

结果显示执行修改存储引擎操作成功,使用SHOW CREATE TABLE 语句查看表结构,结果如下:

mysql> show CREATE TABLE employees\G;

*************************** 1. row ***************************

       Table: employees

Create Table: CREATE TABLE `employees` (

  `employeeNumber` int(11) NOT NULL AUTO_INCREMENT,

  `lastName` varchar(50) NOT NULL,

  `firstName` varchar(50) NOT NULL,

  `officeCode` int(10) NOT NULL,

  `mobile` varchar(25) DEFAULT NULL,

  `jobTitle` varchar(50) NOT NULL,

  `employee_birth` datetime DEFAULT NULL,

  `sex` char(1) NOT NULL,

  `favoriate_activity` varchar(100) DEFAULT NULL,

  PRIMARY KEY (`employeeNumber`),

  KEY `office_fk` (`officeCode`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

可以看到,倒数第二行中的ENGINE后面的参数已经修改为MyISAM,修改成功。

步骤12:将表employees名称修改为employees_info

修改数据表名,需要用到ALTER TABLE语句,输入语句如下:

mysql>ALTER TABLE employees RENAME employees_info;

Query OK, 0 rows affected (0.00 sec)

结果显示执行语句成功,使用SHOW TABLES;语句查看执行结果:

mysql> show tables;

+-----------------------+

| Tables_in_company |

+-----------------------+

| employees_info   |

+----------------------+

1 rows in set (0.00 sec)

可以看到数据库中已经没有名称为employees的数据表。