持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情
前言
上篇我们学习了MySQL的常见数据类型与如何创建表。有兴趣的小伙伴可以阅读(# MySQL学习-数据类型与创建表)。
下面学习MySQL的修改,重命名,删除,清空表。
修改表
上一节创建了数据表myemp1。
CREATE TABLE IF NOT EXISTS myemp1(
id INT,
name VARCHAR(15),
hire_date DATE
);
下面以myemp1为基础修改。
修改表使用ALTER TABLE。
添加一个字段
方式一:
ALTER TABLE myemp1 ADD salary DOUBLE(10, 2);表示小数点2位,共10位。
默认添加到表中的最后一个字段的位置。
方式二:
ALTER TABLE myemp1 ADD phone_number VARCHAR(20) FIRST;
表示添加到表中的第一位置。
方式三:
ALTER TABLE myemp1 ADD email VARCHAR(50) AFTER name;
表示添加到表中字段name的后面。
修改一个字段:数据类型,长度
一般开发中,不常修改数据类型,修改长度比较多。
ALTER TABLE myemp1 MODIFY name VARCHAR(25);
也可以修改默认值。
ALTER TABLE myemp1 MODIFY name VARCHAR(35) DEFAULT 'xxx';
重命名一个字段
ALTER TABLE myemp1 CHANGE salary vag_sal DOUBLE(10, 2);
删除一个字段
ALTER TABLE myemp1 DROP COLUMN email;
重命名表
方式一: RENAME
RENAME TABLE myemp1 TO myemp11;
方式一: ALTER ... RENAME
ALTER TABLE myemp1
RENAME TO myemp11;
删除表
不光将表结构删除掉,同时表中的数据也删除掉,释放表空间。 DROP TABLE IF EXISTS myemp2;
清空表
清空表,表示清空表中的所有数据,但是表结构保留。
TRUNCATE TABLE myemp1;
DCL中的COMMIT和ROLLBACK
COMMIT: 提交数据。一旦执行COMMIT,则数据就被永久的保存在了数据库中,意味着数据不可以回滚。
ROLLBACK: 回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后。
对比TRUNCATE TABLE和DELETE FROM
相同点: 都可以实现对表中所有数据的删除,同时保留表结构。
不同点:
- TRUNCATE TABLE:一旦执行此操作,表数据全部清除。同时,数据是不可以回滚的。
- DELETE FROM:一旦执行此操作,表数据可以全部清除(不带WHERE)。同时,数据是可以实现回滚的。
DDL和DML的说明
- DDL的操作一旦执行,就不可回滚。指令SET autocommit = FALSE对DDL操作失效。(因为在执行完DDL操作之后,一定会执行一次COMMIT。而此COMMIT操作不受SET autocommit = FALSE影响的。)
- DML的操作默认情况,一旦执行,也是不可回滚。但是,如果在执行DML之前,执行了SET autocommit = FALSE,则执行的DML操作就可以实现回滚。
示例一
DELETE FROM
SET autocommit = FALSE;
DELETE FROM myemp3;
这时执行,发现数据没有数据了。
ROLLBACK;
这时执行,再查询数据,可以发现又有数据了。
示例二
TRUNCATE TABLE
SET autocommit = FALSE;
TRUNCATE TABLE myemp3;
这时执行,发现数据没有数据了。
ROLLBACK;
这时执行,再查询数据,可以发现还是没有数据。TRUNCATE TABLE不可以回滚。
今天先学习到这里,明天继续。