4. 修改表
修改表指的是修改数据库中已经存在的数据表的结构。使用 ALTER TABLE 语句可以实现:
- 向已有的表中添加列
- 修改现有表中的列
- 删除现有表中的列
- 重命名现有表中的列
4.1 追加一个列
语法格式如下:
SHOW CREATE TABLE 表名\G ALTER TABLE 表名 ADD 【COLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;
举例:
ALTER TABLE dept80 ADD job_id varchar(15);
4.2 修改一个列
可以修改列的数据类型,长度、默认值和位置。
语法格式如下:
ALTER TABLE 表名 MODIFY 【COLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名 2】;
举例:
ALTER TABLE dept80 MODIFY last_name VARCHAR(30);
ALTER TABLE dept80 MODIFY salary double(9,2) default 1000;
- 对默认值的修改只影响今后对表的修改
- 此外,还可以通过此种方式修改列的约束。
4.3 重命名一个列
使用 CHANGE old_column new_column dataType子句重命名列。
语法格式如下:
ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;
举例:
ALTER TABLE dept80 CHANGE department_name dept_name varchar(15);
4.4 删除一个列
删除表中某个字段的语法格式如下:
ALTER TABLE 表名 DROP 【COLUMN】字段名
举例:
ALTER TABLE dept80
方式一:使用RENAME
RENAME TABLE emp TO myemp;
方式二:
ALTER table dept RENAME [TO] detail_dept; -- [TO]可以省略
- 必须是对象的拥有者
6. 删除表
在删除数据表时:
- 在MySQL中,当一张数据表没有与其他任何数据表形成关联关系时,可以将当前数据表直接删除。
- 数据和结构都被删除
- 所有正在运行的相关事务被提交
- 所有相关索引被删除
语法格式:
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];
IF EXISTS的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。
举例:
DROP TABLE dept80;
- DROP TABLE 语句不能回滚
7. 清空表
TRUNCATE TABLE语句:
- 删除表中所有的数据
- 释放表的存储空间
举例:
TRUNCATE TABLE detail_dept;
TRUNCATE语句不能回滚,而使用 DELETE 语句删除数据,可以回滚。
对比:
DELETE FROM emp2; #TRUNCATE TABLE emp2; SELECT * FROM emp2; ROLLBACK; SELECT * FROM emp2
;