MySQL基础篇3

1. 创建和管理库表

1.1 创建和管理数据库

1.1.1 创建数据库

# 如果该数据库不存在则创建数据库,并指定字符集
CREATE DATABASE IF NOT EXISTS 数据库名 CHARSET utf8mb4;
  • DATABASE 不能改名。一些可视化工具可以改名,它是建新库,把所有表复制到新库,再删
    旧库完成的;

1.1.2 使用数据库

  • 使用/切换数据库:
USE 数据库名;
  • 查看当前所有的数据库:
SHOW DATABASES;
  • 查看当前所在数据库:
SELECT DATABASE();
  • 查看指定数据库下的所有表:
SHOW TABLES FROM 数据库名;
  • 查看数据库的创建信息:
SHOW CREATE DATABASE 数据库名;# \G起到类似转置表格的作用
SHOW CREATE DATABASE 数据库名\G
  • 要操作表格和数据之前必须先说明是对哪个数据库进行操作,否则就要对所有对象加上“数
    据库名.”。

1.1.3 修改数据库

  • 一般不会修改数据库;
  • 更改数据库字符集:
ALTER DATABASE 数据库名 CHARACTER SET 字符集;

1.1.4 删除指定数据库

  • 删库有风险,删前慎重考虑;
DROP DATABASE IF EXISTS 数据库名;

1.2 创建和管理数据表

1.2.1 创建数据表

  • 需要有建表权限;
  • 需要有足够的存储空间;
  • 方式一:直接创建表
CREATE TABLE [IF NOT EXISTS] 表名(
字段1, 数据类型 [约束条件] [默认值],
字段2, 数据类型 [约束条件] [默认值],
字段3, 数据类型 [约束条件] [默认值],
……
[表约束条件]
);
  • 方式二:基于已有表结合子查询建表
    在这里插入图片描述

1.2.2 查看数据表相关信息

  • 查看数据表结构:
DESC 表名;DESCRIBE 表名;
  • 查看数据表的创建信息:
SHOW CREATE TABLE 表名;# \G起到类似转置表格的作用
SHOW CREATE TABLE 表名\G

1.2.3 修改数据表

1.2.3.1 新增列

  • 在已有表结构上新增列;
  • 默认新增列在最后面,可通过FIRST指定新增列在表最前端,或者通过AFTER 使新增列在指定字段名后面;
ALTER TABLE 表名 ADD [COLUMN] 新字段名 字段类型 [FIRST|AFTER 指定字段名];

1.2.3.2 修改列

  • 修改已有表中的某列;
  • 可修改指定列的字段类型、长度、默认值、约束、位置;
ALTER TABLE 表名 MODIFY [COLUMN] 字段名 字段类型 [DEFAULT 默认值] [FIRST|AFTER 指定字段名];

1.2.3.3 删除列

ALTER TABLE 表名 DROP [COLUMN] 字段名;

1.2.3.4 重命名列

  • 对列名进行重命名的同时,可以修改其数据类型;
  • 数据类型必填,如果不更新,则与原始数据类型保持一致即可;
ALTER TABLE 表名 CHANGE [COLUMN] 字段名 新字段名 新数据类型;

1.2.4 重命名数据表

  • 方式一:
RENAME TABLE 表名 
TO 新表名;
  • 方式二:
ALTER TABLE 表名 
RENAME [TO] 新表名;

1.2.5 删除数据表

  • 删除表结构、清空数据、释放表存储空间;
  • 该操作无法回滚;
DROP TABLE [IF EXISTS] 表名;

1.2.6 清空数据表

  • 清空数据、释放表存储空间,但保留表结构;
  • 该操作无法回滚;
  • 该操作执行前提是待删除表存在;
TRUNCATE TABLE 表名;
  • COMMIT:提交数据,一旦执行则数据被永久保存在数据库中,此数据无法进行回滚;
  • ROLLBACK:回滚数据,一旦执行则数据库内容回滚到最近一次COMMIT之后的状态;
  • DML语句中的DELETE语句也可以实现清空数据表的功能,但与TRUNCATE的区别在于DELETE删除表数据后可进行回滚,恢复数据,而TRUNCATE不能进行回滚;
  • DDL操作一旦执行就无法进行回滚,因为此操作默认会自动提交,不受autocommit参数的影响;DML操作默认情况会自动提交,所以也是无法进行回滚的,可通过设置set autocommit=false关闭自动提交,此时DML操作是可以进行回滚的;

2. 数据增删改

2.1 插入数据

2.1.1 方式一:通过VALUES方式,进行单条数据插入

  • 情况1,按照声明字段的默认顺序进行插入,此情况下插入value的顺序必须严格按照字段的声明顺序:
INSERT INTO 表名
VALUES
(val1,val2,...,valn);
  • 情况2,根据指定字段的顺序进行插入,此情况下val与字段一一对应:
INSERT INTO 表名(字段1,字段2,...,字段n)
VALUES
(val1,val2,...,valn);
  • 情况3,同时插入多条数据,即插入数据时可同时指定多个value列表:
INSERT INTO 表名(字段1,字段2,...,字段n)
VALUES
(val1,val2,...,valn),
(val1,val2,...,valn),
...
(val1,val2,...,valn);

INSERT INTO 表名
VALUES
(val1,val2,...,valn),
(val1,val2,...,valn),
...
(val1,val2,...,valn);

2.1.2 方式二:将查询结果插入到数据表中

  • 在 INSERT 语句中加入子查询
  • 不必书写 VALUES 子句;
  • 子查询中的值列表应与 INSERT 子句中的列名对应;
  • 需保证目标表与源表中对应字段数据类型一致;
INSERT INTO 目标表名
(tar_column1 [, tar_column2,, tar_columnn])
SELECT
(src_column1 [, src_column2,, src_columnn])
FROM 源表名
[WHERE condition]

2.2 删除数据

  • 可删除满足指定条件的数据,也可直接清空数据表,关键取决于是否指定WHERE条件;
DELETE FROM 表名 [WHERE 删除条件];

2.3 修改数据

  • 可修改满足指定条件的批量数据,也可直接更新整个数据表,关键取决于是否指定WHERE条件;
UPDATE 表名 
SET 字段1=1,字段2=2,...,字段n=值n
[WHERE 更新条件];

执行更新操作时,报错:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
解决方案:set sql_safe_updates=false;

核心内容:

  • 数据增删改

资料来源:

  • 尚硅谷;

猜你喜欢

转载自blog.csdn.net/qq_43665602/article/details/130495204