SQL分类:
DDL(Data Definition Language)语句: 数据定义语言,主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。 CREATE \ ALTER \ DROP \ TRUNCATE
DML(Data Manipulation Language)语句: 数据操纵语言,主要是对数据进行增加、删除、修改、查询操作。 INSERT \ DELETE \ UPDATE \ SELECT
DCL(Data Control Language)语句: 数据控制语言,主要是用来设置/更改数据库用户权限,数据回滚。COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE
数据库操作
创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
查看创建数据库的结构
SHOW CREATE DATABASE 数据库名
使用数据库
-
查看当前所有数据库
SHOW DATABASES; -
查看当前正在使用的数据库
SELECT DATABASE(); -
使用切换数据库
USE 数据库名;
删除数据库
DROP DATABASE 数据库名
表操作
创建表
方式一:
CREATE TABLE IF NOT EXISTS 表名(字段名,数据类型 [约束条件] [默认值]...[约束条件]);
方式二:
-
使用 AS subquery 选项,将创建表和插入数据结合起来
CREATE TABLE table[(column,column...)] AS subquery -
指定的列和子查询中的列要一一对应
-
通过列名和默认值定义列
CREATE TABLE emp1 AS SELECT * FROM employees;
重命名表
RENAME TABLE 旧表名 TO 新表名
查看表的结构
DESC 表名
添加一个列
ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 [FIRST | AFTER 字段名]
删除一个列
ALTER TABLE 表名 DROP [COLUMN] 字段名
修改一个列
ALTER TABLE 表名 MODIFY [COLUMN] 字段名 字段类型 [DEFAULT 默认值] [FIRST|AFTER 字段名]
重命名一个列
ALTER TABLE 表名 CHANGE [COLUMN] 列名 新列名 新数据类型;
删除表
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n]
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操作就可以实现回滚。










