2.MySql表操作-新增、修改、删除表字段、删除表

0 阅读2分钟

任务:设计一张员工信息表,要求如下:

  1. 编号(纯数字)
  2. 员工工号 (字符串类型,长度不超过10位)
  3. 员工姓名(字符串类型,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)
create table emp(
    id int comment '编号',
    workno varchar(10) comment '工号',
    name varchar(10) comment '姓名',
    gender char(1) comment '性别',
    age tinyint unsigned comment '年龄',
    idcard char(18) comment '身份证号',
    entrydate date comment '入职时间'
) comment '员工表';
mysql> desc emp;
+-----------+------------------+------+-----+---------+-------+
| Field     | Type             | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| id        | int              | YES  |     | NULL    |       |
| workno    | varchar(10)      | YES  |     | NULL    |       |
| name      | varchar(10)      | YES  |     | NULL    |       |
| gender    | char(1)          | YES  |     | NULL    |       |
| age       | tinyint unsigned | YES  |     | NULL    |       |
| idcard    | char(18)         | YES  |     | NULL    |       |
| entrydate | date             | YES  |     | NULL    |       |
+-----------+------------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

1.表操作-修改

1). 添加字段ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

为emp表增加一个新的字段”昵称”为nickname,类型为varchar(20)

alter table emp add nickname varchar(20) comment '昵称';

2). 修改数据类型ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);

将name字段修改为varchar(20)

alter table emp modify name varchar(20);

3). 修改字段名和字段类型ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

将emp表的nickname字段修改为username,类型为varchar(30)

alter table emp change nickname username varchar(30) comment '昵称';

mysql> desc emp;
+-----------+------------------+------+-----+---------+-------+
| Field     | Type             | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| id        | int              | YES  |     | NULL    |       |
| workno    | varchar(10)      | YES  |     | NULL    |       |
| name      | varchar(20)      | YES  |     | NULL    |       |
| gender    | char(1)          | YES  |     | NULL    |       |
| age       | tinyint unsigned | YES  |     | NULL    |       |
| idcard    | char(18)         | YES  |     | NULL    |       |
| entrydate | date             | YES  |     | NULL    |       |
| username  | varchar(30)      | YES  |     | NULL    |       |
+-----------+------------------+------+-----+---------+-------+
8 rows in set (0.00 sec)

4). 删除字段ALTER TABLE 表名 DROP 字段名;

将emp表的字段username删除

alter table emp drop username;

5). 修改表名ALTER TABLE 表名 RENAME TO 新表名;

将emp表的表名修改为 employee

alter table emp rename employee;

mysql> show tables;
+-----------------+
| Tables_in_db_04 |
+-----------------+
| dept            |
| employee        |
+-----------------+
2 rows in set (0.00 sec)

2.表操作-删除

注意: 在删除表的时候,表中的全部数据也都会被删除。

1). 删除表DROP TABLE [ IF EXISTS ] 表名;

drop table if exists dept;

2). 删除指定表, 并重新创建表TRUNCATE TABLE 表名;

truncate table dept;