目录
4.2.1 对比一下 TRUNCATE TABLE 和 DELETE FROM
1. 数据库基础知识
1. 从系统架构上来看,MySQL数据库系统从大到小依次是 数据库服务器 - 数据库 - 数据表 - 数据表的行和列
所以在下载完MySQL数据库系统之后,第一步就是创建数据库。所谓数据库就是下面这个:
数据库有一个专业名字,叫标识符
1.1 标识符命名规则
1. 数据库名、表名不得超过30个字符,变量名限制为29个
2. 必须只能包含 A–Z, a–z, 0–9, _共63个字符
3. 数据库名、表名、字段名等对象名中间不要包含空格
4. 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
5. 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用 `(着重号)引起来
6. 保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了
2.创建和管理数据库
2.1 创建数据库
CREATE 之后记得把光标放在 MySQL 处按一下 F5
方式1:创建数据库
CREATE DATABASE 数据库名;
查看数据库目前使用的字符集
SHOW CREATE DATABASE 数据库名;
目前使用的是 utf8 类型
方式2:创建数据库,用指定的字符集(8.0默认utf8,如果是5.7版本默认是拉丁,需要指明一下)
CREATE DATABASE 数据库名 CHARACTER SET '字符集';
方式3:(推荐)
如果要创建的数据库已经存在,则创建不成功,且不会报错;若不存在,则创建成功
CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET '字符集';
2.2 管理数据库的语句们
2.2.1 查看当前连接中的数据库
SHOW DATABASES;
2.2.2 切换当前使用的数据库
USE 数据库名;
2.2.3 查看当前数据库中都有哪些表
SHOW TABLES;
2.2.4 查看当前使用的数据库
SELECT DATABASE() FROM DUAL;
2.2.4 查看指定数据库下的表
SELECT TABLES FROM 数据库名;
2.3 修改数据库
数据库一般不会修改,尤其是当数据库里已经有大量的表的时候
2.3.1 更改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET '字符集名 ';
注意:DATABASE不能改名
2.4 删除数据库
方式1:
DROP DATABASE 数据库名;
方式2:(如果存在则删除成功,不存在就默默结束)
DROP DATABASE IF EXISTS 数据库名;
数据库的删除一般不可恢复...从删库到跑路 ,务必慎重
3. 创建表和管理表
3.1 创建一个表
与创建数据库不同的是,不仅需要创建一个表,还需要明确字段
如果创建表时没有指明字符集,则默认使用表所在的数据库的字符集
方式1:白手起家法
CREATE TABLE IF NOT EXISTS 表名
(
字段1 类型,
字段2 类型,
字段3 类型
);
创建之后 DESC 表名; 查看一下创建结果
使用VARCHAR时必须指明长度,也就是字符最大数;INT就是4个字节
方式2: (借鸡生蛋法) 基于现有的表去创建新的表
就是在子查询上面加个CREATE AS 的帽,其余都不变,就会将查询结果生成一张新表
CREATE TABLE 表名
AS
SELECT 已有字段1,已有字段2
FROM 现有的表;
用列的别名和多表连接生成一个新表表,肥肠好用!
问题:创建一个表,和 employees 结构一样,但是 不包含表的数据
用 WHERE 添加一个永不满足的条件即可:
WHERE 1=2 ;
3.2 修改表 ALTER TABLE
3.2.1 添加一个字段
方法1: 这种写法默认把字段添加到最后
ALTER TABLE 表名
ADD 字段名 字段类型;
方法2:
ALTER TABLE 表名
ADD 字段名 类型 AFTER 已有字段 / FIRST
AFTER 可以选择早某个字段的后面添加;FIRST后面没有参数,自动添加到第一位
3.2.2 修改一个字段 MODIFY
字段类型一般不修改
修改字段长度
3.2.3 重命名一个字段 CHANGE
ALTER TABLE 表名
CHANGE 字段原名 新名 类型(可以是原来的,也可以顺便改了)
3.2.4 删除一个字段 DELETE
ALTER TABLE 表名
DELETE COLUMN 字段;
一次只能删除一个字段
3.3 重命名表
RENAME TABLE 原表名 TO 新名;
3.4 删除表
不光将表结构删除,表中数据也被删除了,释放表空间
DROP TABLE IF EXISTS 表名 ;
3.5 清空表
删除表中数据,但是表结构存在
TRUNCATE TABLE 表名;
4. DCL 之 COMMIT 和 ROLLBACK
4.1 COMMIT 提交
COMMIT :提交数据。一旦执行COMMIT ,数据就被永久保存在数据库中,不能ROLLBACK了,可以理解为不能撤销了
4.2 ROLLBACK 回滚,撤销
可以理解为撤销。回滚到最近的一次 COMMIT 之后
相当于第7行操作被撤销了
4.2.1 对比一下 TRUNCATE TABLE 和 DELETE FROM
相同点:都可以实现对表中所有数据的删除,同时保留表结构
不同点: TRUNCATE 执行之后,数据不可以回滚
DELETE FROM 可以删除所有 / 部分数据(更加灵活),并且数据可以回滚
DDL 和 DML 的说明
TRUNCATE 是 DDL,一旦执行不可以回滚
DELETE FROM 是 DML,默认情况下一旦执行不可回滚,但是如果在执行DML之前,执行:
SET autocommit = FALSE
则执行的DML可以回滚