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
操作就可以实现回滚。