2.1 MySQL数据库

一: MySQL基础&SQL入门


在这里插入图片描述

  • 数据库(DataBase) 就是存储和管理数据的仓库,其本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上。【数据可以永久保存,方便存储和管理数据,使用统一的方式操作数据库(SQL)】
  • 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理维护数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一的管理。MySQL就是一个 数据库管理系统软件, 安装了Mysql的电脑,我们叫它数据库服务器。
  • 数据库管理系统、数据库和表之间的关系:MySQL中管理着很多数据库,在实际开发环境中 一个数据库一般对应了一个的应用,数据库当中保存着多张表,每一张表对应着不同的业务,表中保存着对应业务的数据。
    在这里插入图片描述

在这里插入图片描述

数据库中以表为组织单位存储数据,表类似我们Java中的类,每个字段都有对应的数据类型
在这里插入图片描述

  • 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
  • SQL的作用:是所有关系型数据库的统一查询规范,不同的关系型数据库都支持SQL,所有的关系型数据库都可以使用SQL,不同数据库之间的SQL有一些区别(方言),MySql中使用SQL不区分大小写,一般关键字大写,数据库名、表名列名小写。
    在这里插入图片描述
  • 数据定义语言DDL(Data Definition Language):用来定义数据库对象:数据库,表,列等。
  • 数据操作语言DML(Data Manipulation Language),用来对数据库中表的记录进行更新。
  • 数据查询语言DQL(Data Query Language),用来查询数据库中表的记录。
  • 数据控制语言DCL(Date Control Language),用来定义数据库的访问权限和安全级别,及创建用户。
  • 注: 我们重点学习 DML 与 DQL!
  • MySql中常见的数据类型:
  • 	int 整型
    
  • 	double 浮点型
    
  • 	varchar 字符串
    
  • 	date 日期类型 年月日 没有时分秒 yyyy-MM-dd
    
  • 	datetime 日期时间类型 yyyy-MM-dd HH:mm:ss
    

在这里插入图片描述

二:MySql单表、约束和事务


在这里插入图片描述

  • 事务 是一个整体,由一条或者多条SQL 语句组成,这些SQL语句要么都执行成功,要么都执行失败, 只要有一条SQL出现异常,整个操作就会回滚,整个业务执行失败

比如: 银行的转账业务,张三给李四转账500元 , 至少要操作两次数据库, 张三 -500, 李四 + 500,这中 间任何一步出现问题,整个操作就必须全部回滚, 这样才能保证用户和银行都没有损失

  • 回滚 即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,滚回到事务开始时的状态。(在提交之前执行)
MYSQL 中可以有两种方式进行事务的操作

1. 手动提交事务

  • 开启事务: start transaction; 或者 begin; 
    
  • 提交事务:commit;
    
  • 回滚事务:rollback;
    

START TRANSACTION : 这个语句显式地标记一个事务的起始点。
COMMIT:表示提交事务,即提交事务的所有操作,具体地说,就是将事务中所有对数据库的更新都写到磁盘上的物理数据库中,事务正常结束。
ROLLBACK:表示撤销事务,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。
:如果事务中 SQL 语句没有问题,commit 提交事务,会对数据库数据的数据进行改变。如果事务中 SQL 语句有问题,rollback 回滚事务,会回退到开启事务时的状态。

  • 手动提交事务流程
    • 执行成功的情况: 开启事务 -执行多条 SQL 语句 -成功提交事务
    • 执行失败的情况: 开启事务 -执行多条 SQL 语句 -事务的回滚

2. 自动提交事务( MySql默认的提交方式 )

  • MySQL 默认每一条 DML(增删改)语句都是一个单独的事务,每条语句都会自动开启一个事务,语句执行完毕 自动提交事务,MySQL 默认开始自动提交事务
- 查看autocommit状态,autocommit:on--自动提交,off--手动提交
- SHOW VARIABLES LIKE 'autocommit';
- 修改自动提交为手动提交:把 autocommit 改成 off;
- SET @@autocommit=off;
事务的四大特性

原子性: 每个事务都是一个整体,不可再拆分,事务中所有的 SQL 语句要么都执行成功, 要么都失败。
一致性: 事务在执行前数据库的状态与执行后数据库的状态保持一致。如:转账前2个人的 总金额是 2000,转账后 2 个人总金额也是 2000.
隔离性: 事务与事务之间不应该相互影响,执行时保持隔离的状态.
持久性: 一旦事务执行成功,对数据库的修改是持久的。就算关机,数据也是要保存下来的.

MySQL 事务隔离级别
  • 数据并发访问: 一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库. 数据库的相同数据可能被多个事务同时访问,如果不采取隔离措施,就会导致各种问题, 破坏数据的完整性。
  • 并发访问会产生的问题: 事务在操作时的理想状态: 所有的事务之间保持隔离,互不影响。因为并发操作,多个用户同时访问同一个 数据。可能引发并发访问的问题。
  • 脏读: 一个事务读取到了另一个事务中尚未提交的数据
  • 不可重复读: 一个事务中两次读取的数据内容不一致, 要求的是在一个事务中多次读取时数据是一致的. 这是进行 update 操作时引发的问题
  • 幻读: 一个事务中,某一次的select 操作得到的结果所表征的数据状态, 无法支撑后续的业务操作. 查询得到的数据状态不准确,导致幻读.(例如:select 某记录是否存在,不存在,准备插入此记录,但执行 insert 时发现此记录已存在,无法插入,此时就发生了幻读。)

通过设置隔离级别,可以防止上面的三种并发问题,MySQL数据库有四种隔离级别 上面的级别最低,下面的级别最高。

  • 设置隔离级别:
  1. read uncommitted: 读未提交,可以防止哪些问题: 无
  2. read committed: 读已提交 (Oracle和SQLServer默认隔离级别),可以防止: 脏读
  3. repeatable read : 可重复读 (MySql默认的隔离级别),可以防止: 脏读 ,不可重复读.(同一个事务中为了保证多次查询数据一致,必须使用 repeatable read 隔离级别)
  4. serializable : 串行化,可以防止: 脏读 ,不可重复读 ,幻读。(serializable 串行化可以彻底解决幻读,但是 事务只能排队执行,严重影响效率,数据库不会使用这种隔离级别)

注意 : 以上隔离级别 从小到大 安全性是越来越高的,但是效率是越来越低的,根据不同的情况选择对应的隔离级别

隔离级别相关命令:

	查看隔离级别
	select @@tx_isolation;
	
	设置隔离级别
	set global transaction isolation level 级别名称;

	read uncommitted 读未提交
	read committed   读已提交
	repeatable read  可重复读
	serializable     串行化

注:修改隔离级别后,需要重新开一个数据库连接查询,才能看到修改后的隔离级别

三:Mysql多表、外键和数据库设计


  • 单表的问题:冗余, 同一个字段中出现大量的重复数据

  • 解决方案:设计为多张表

  • 外键约束:可以让两张表之间产生有一个对应的关,从而保证了主从表引用的完整性

  • 外键: 指的是在从表中与主表的主键对应的字段

  • 主表和从表:

  • **主表:** 主键id所在的表 ,一的一方
    
  • **从表:** 外键字段所在的表,多的一方
    
添加外键约束的语法格式
1.创建表的时候添加外键
	create table 表名(
		字段...
		[constraint] [外键约束名] foreign key(外键字段名) references 主表(主键字段)
	);
【constraint 外键约束名 可省略,使用默认外键约束名】  

 2.创建表之后添加外键
 语法格式: alter table 从表 add CONSTRAINT 外键约束名 FOREIGN KEY(dept_id) REFERENCES department(id)
【constraint 外键约束名 可省略,使用默认外键约束名】  
   
 删除外键约束
 语法格式: alter table 从表 drop foreign key 外键约束的名称
  • 添加外键约束之后 就会产生一个强制的外键约束检查 保证数据的完整性和一致性

  • 外键约束的注意事项:

    1. 从表的外键类型必须与主表的主键类型一致
    1. 添加数据时,应该先添加主表的数据
    1. 删除数据的时候 要先删除从表中的数据
  • 级联删除: 指的是在删除主表的数据的同时,可以删除与之相关的从表中的数据
  • 级联删除关键字: on delete cascade
-- 创建表添加级联操作
CREATE TABLE employee( 
	eid INT PRIMARY KEY AUTO_INCREMENT,
	ename VARCHAR(20), 
	age INT, 
	dept_id INT, 
	CONSTRAINT emp_dept_fk FOREIGN KEY(dept_id) REFERENCES department(id) 
	-添加级联删除
	ON DELETE CASCADE 
);

-- 删除部门编号为2 的记录(员工表中 外键值是2的记录,也被删除了) 
DELETE FROM department WHERE id = 2;
  • 多表关系设计: 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系

  • 表与表之间的三种关系:

  • 一对多关系(1:n 常见): 班级和学生,部门和员工,客户和订单,分类和商品(**一对多建表原则:**在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键)
    在这里插入图片描述
  • 多对多关系(n:n 常见): 老师和学生,学生和课程,用户和角色 **(多对多关系建表原则:**需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。)
    在这里插入图片描述
  • 一对一关系(1:1 了解): 身份证 和 人(在实际的开发中一对一可以创建成一张表。)(一对一建表原则: 外键唯一 主表的主键和从表的外键(唯一),形成主外键关系,外键唯一 UNIQUE)
    在这里插入图片描述
  • 多表查询DQL: 查询多张表,获取到需要的数据(比如 我们要查询家电分类下 都有哪些商品,那么我们就需要查询分类与商品这两张表)

  • 多表查询的交叉连接查询的查询结果会产生 笛卡尔积(集合A * 集合B 的所有组合情况。 即:假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。) 得到的结果有的是不能够使用的.

多表查询的分类
  • 1.内连接查询

    特点: 通过指定的条件 去匹配俩张表中的内容, 匹配不上的就不显示(比如通过: 从表的外键 = 主表的主键 方式去匹配)

      隐式内连接:from子句 后面直接写 多个表名 使用where指定连接条件
      	语法格式: select 字段名... from 左表,右表 where 连接条件
      	
      显式内连接:使用 [inner] join ...on 这种方式
      	语法格式: select 字段名... from 左表 [inner] join 右表 on 连接条件
        【inner 可以省略】
    
  • 2.外连接查询

1. 左外连接:

  • 关键字: left [outer] join

  • 语法格式: select 字段名 from 左表 left join 右表 on 连接条件

  • 特点: 以左表为基准 匹配右表中的数据 如果能匹配上就显示,如果匹配不上, 左表中的数据正常显示,右表数据显示为null

    2. 右外连接:

  • 关键字: right [outer] join

  • 语法格式: select 字段名 from 左表 right join 右表 on 条件

  • 特点: 以右表为基准 匹配左表中的数据 如果能够匹配上就显示,如果匹配不到,右表中的数据就正常显示,左表数据显示null

在这里插入图片描述

  • 内连接: inner join , 只获取两张表中 交集部分的数据.
  • 左外连接: left join , 以左表为基准 ,查询左表的所有数据, 以及与右表有交集的部分
  • 右外连接: right join , 以右表为基准,查询右表的所有的数据,以及与左表有交集的部分
子查询 (SubQuery)
  • 概念: 一条select 查询语句的结果, 作为另一条 select 语句的一部分

  • 特点:

  • 子查询必须放在小括号中
  • 子查询一般作为父查询的查询条件使用(更多的时候)

语法格式:

SELECT 查询字段 FROM 表 WHERE 字段=(子查询);

常见分类:

  • where型 子查询: 将子查询的结果, 作为父查询的比较条件
    语法格式: SELECT 查询字段 FROM 表 WHERE 字段 = (子查询);

  • from型 子查询 : 将子查询的结果, 作为一张表,提供给父层查询使用.( **注意:**子查询的结果作为一张表时,要起一个别名 否则无法访问表中的字段)
    语法格式: SELECT 查询字段 FROM (子查询)表别名 WHERE 条件;

  • exists型 子查询: 查询结果是单列多行的情况,可以将子查询的结果作为父查询的 in函数中的条件使用
    语法格式: SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);

  • 子查询总结:
  1. 子查询如果查出的是一个字段(单列), 那就在where后面作为条件使用.
  2. 子查询如果查询出的是多个字段(多列), 就当做一张表使用(要起别名).
数据库设计
  • 数据库三范式(空间最省): 三范式就是设计数据库的规则
  • 作用: 为了建立冗余较小、结构合理的数据库。
  • 范式: 设计数据库时必须遵循一定的规则。
  • 在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式

第一范式(1NF): 原子性, 做到列不可拆分。

  • 第一范式是最基本的范式。数据库表里面字段都是单一属性的,不可再分, 如果数据表中每个字段都是不可再分的最小数据单元,则满足第一范式。
    在这里插入图片描述

第二范式(2NF): 在第一范式的基础上更进一步,目标是确保表中的每列都和主键相关。

  • 一张表只能描述一件事.
    在这里插入图片描述

第三范式(3NF): 在第二范式的基础上,消除传递依赖。

  • 表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放。
    在这里插入图片描述

一般说来,数据库只需满足第三范式(3NF)就行了

数据库反三范式
  • 反范式化: 指的是通过增加冗余或重复的数据来提高数据库的读性能,浪费存储空间,节省查询时间 (以空间换时间)

  • 冗余字段: 设计数据库时,某一个字段属于一张表,但它同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。
    在这里插入图片描述

  • 使用场景: 当需要查询“订单表”所有数据并且只需要“用户表”的name字段时, 没有冗余字段 就需要去join连接用户表,假设表中数据量非常的大, 那么会这次连接查询就会非常大的消耗系统的性能.这时候冗余的字段就可以派上用场了, 有冗余字段我们查一张表就可以了.

  • 总结: 创建一个关系型数据库设计,我们有两种选择

  • 1.尽量根据三范式的规则去设计数据库,遵循范式理论的规约,尽可能少的冗余字段,让数据库设计看起来精致、优雅、让人心醉。
  • 2.合理的加入冗余字段这个润滑剂,减少join,让数据库执行性能更高更快。【以空间换时间

四:Mysql索引、存储过程和触发器


MySQL 索引
  • 在数据库表中,对字段建立索引可以大大提高查询速度。通过善用这些索引,可以令MySQL的查询和运行更加高效。

  • 如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字

  • 常见的索引的分类

  • 主键索引 (primary key): 主键是一种唯一性索引,每个表只能有一个主键, 用于标识数据表中的每一条记录
  • 唯一索引 (unique): 索引列的所有数据只能出现一次,必须是唯一
  • 普通索引 (index): 最常见的索引 作用就是提高对数据的访问速度
  • **注:**表对应的索引被保存在一个索引文件中, 如果对数据进行增删改操作,那么mysql就需要对索引进行更新。
    在这里插入图片描述
主键索引的创建:
  1.创建表的时候直接添加主键索引 (最常用)
  CREATE TABLE 表名( -添加主键 (主键是唯一性索引,不能为null,不能重复,) 字段名 类型 PRIMARY KEY, );

  2.创建表之后,使用 DDL修改表结构 添加主键索引
ALTER TABLE 表名 ADD PRIMARY KEY ( 列名 )

唯一索引的创建:
   1.创建表的时候直接添加主键索引
   CREATE TABLE 表名( 
      列名 类型(长度), 
      -- 添加唯一索引 
      UNIQUE [索引名称] (列名)
   );

   2.使用create语句创建: 在已有的表上创建索引
   create unique index 索引名 on 表名(列名(长度))

   3.修改表结构添加索引
   ALTER TABLE 表名 ADD UNIQUE ( 列名 )


普通索引创建:
   1.使用create index 语句创建: 在已有的表上创建索引
   create index 索引名 on 表名(列名[长度])

   2.修改表结构添加索引
   ALTER TABLE 表名 ADD INDEX 索引名 (列名)


删除索引:由于索引会占用一定的磁盘空间,因此,为了避免影响数据库的性能,应该及时删除不再使用的索引
   语法格式:ALTER TABLE table_name DROP INDEX index_name;
  • 索引的总结
  • 创建索引的原则: 添加索引首先应考虑在 where 及 order by 涉及的列上建立索引。
  • 索引的优点
    1. 大大的提高查询速度
    1. 可以显著的减少查询中分组和排序的时间。
  • 3.通过创建唯一索引保证数据的唯一性
  • 索引的缺点
    1. 创建索引和维护索引需要时间,而且数据量越大时间越长
    1. 当对表中的数据进行增删改操作时,索引也要同时进行维护,降低了数据的维护速度
  • 3.索引文件需要占据磁盘空间
MySQL 视图
  • 概念:视图是由查询结果形成的一张虚拟的表.
  1. 视图是一种虚拟表。
  2. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
  3. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
  4. 视图向用户提供基表数据的另一种表现形式
  • 作用:
  • 权限控制时可以使用:
  • 比如,某几个列可以运行用户查询,其他列不允许,可以开通视图 查询特定的列, 起到权限控制的作用
  • 简化复杂的多表查询:
  • 视图 本身就是一条查询SQL,如果某个查询的结果出现的十分频繁,并且查询语法比较复杂.那么这个时候,就可以根据这条查询语句构建一张视图,用户只要查询视图,就可以获取想要得到的信息(不需要再编写复杂的SQL)
  • 视图主要就是为了简化多表的查询
语法格式:
 create view 视图名 [column_list] as select语句;

 view: 表示视图 
 column_list: 可选参数,表示属性清单,指定视图中各个属性的名称,默认情况下,与SELECT语句中查询 的属性相同 
 as : 表示视图要执行的操作 
 select语句: 向视图提供数据内容
  • 视图与表的区别:
  • 视图是建立在表的基础上,表存储数据库中的数据,而视图只是做一个数据的展示(操作视图相当于操作一张只读表)
  • 通过视图不能改变表中数据(一般情况下视图中的数据都是表中的列 经过计算得到的结果,不允许 更新)
  • 删除视图,表不受影响,而删除表,视图不再起作用
MySQL 存储过程(了解)
  • MySQL 5.0 版本开始支持存储过程。

  • 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

  • 存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

  • 简单理解: 存储过程其实就是一堆 SQL 语句的合并。中间加入了一些逻辑控制。

  • 存储过程的优缺点:

  • 优点:
  • 存储过程一旦调试完成后,就可以稳定运行,(前提是,业务需求要相对稳定,没有变化)
  • 存储过程减少业务系统与数据库的交互,降低耦合,数据库交互更加快捷(应用服务器,与数据库服务器不在同一个地区,交互存在延时)
  • 缺点:
  • 在互联网行业中,大量使用MySQL,MySQL的存储过程与Oracle的相比较弱,所以较少使用,并且互联网行业需求变化较快也是原因之一
  • 尽量在简单的逻辑中使用,存储过程移植十分困难,数据库集群环境,保证各个库之间存储过程变更一致也十分困难。
  • 阿里的代码规范里也提出了禁止使用存储过程,存储过程维护起来的确麻烦。难以调试和扩展,更没有移植性。
  • 方式1.创建简单的存储过程
语法格式:
 DELIMITER $$ -声明语句结束符,可以自定义 一般使用$$ 
 CREATE PROCEDURE 过程名称() -声明存储过程
 BEGIN -开始编写存储过程 
    要执行的操作;  
 END $$ -存储过程结束 
  
调用存储过程
 语法格式:call 存储过程名
  • 方式2.创建接收参数的存储过程
语法格式:
 DELIMITER $$ -声明语句结束符,可以自定义 一般使用$$ 
 CREATE PROCEDURE 存储过程名称(IN 参数名 参数类型)
 BEGIN -开始编写存储过程 
     要执行的操作;  
 END $$ -存储过程结束 
 
--IN 输入参数:表示调用者向存储过程传入值
  
调用存储过程
 语法格式:call 存储过程名(参数)
  • 方式3

变量赋值:
SET @变量名=值
OUT 输出参数:
OUT 变量名 数据类型
- OUT 输出参数:表示存储过程向调用者传出值

创建存储过程:(需求: 向订单表 插入一条数据, 返回1,表示插入成功)

  # 创建存储过程 接收参数插入数据, 并返回受影响的行数 
  DELIMITER $$ 
  CREATE PROCEDURE orders_proc(IN o_oid INT , IN o_gid INT ,IN o_price INT, OUT out_num INT)
  BEGIN 
     -- 执行插入操作 
     INSERT INTO orders VALUES(o_oid,o_gid,o_price);  
     -- 设置 num的值为 1 
     SET @out_num = 1; 
     -- 返回 out_num的值 
     SELECT @out_num;
 END $$ 

  
调用存储过程:
  # 调用存储过程插入数据,获取返回值
  CALL orders_proc(1,2,30,@out_num);
MySQL触发器(了解)
  • 触发器(trigger) 是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行。

  • 简单理解: 当我们执行一条sql语句的时候,这条sql语句的执行会自动去触发执行其他的sql语句。

  • 触发器创建的四个要素:

  1. 监视地点(table)
  2. 监视事件(insert/update/delete)
  3. 触发时间(before/after)
  4. 触发事件(insert/update/delete)
  • 创建触发器
delimiter $ -- 将Mysql的结束符号从 ; 改为 $,避免执行出现错误 
CREATE TRIGGER Trigger_Name -- 触发器名,在一个数据库中触发器名是唯一的 
before/after(insert/update/delete) -- 触发的时机 和 监视的事件 
on table_Name -- 触发器所在的表 
for each row -- 固定写法 叫做行触发器, 每一行受影响,触发事件都执行 
begin -- 开始标记
	被触发的事件;
end $ -- 结束标记
DCL(数据控制语言)
  • MySql默认使用的都是 root 用户,超级管理员,拥有全部的权限。除了root用户以外,我们还可以通过DCL语言来定义一些权限较小的用户, 分配不同的权限来管理和维护数据库.
创建用户:
 
 语法格式:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

- 用户名:创建的新用户,登录名称
- 主机名:指定该用户在哪个主机上可以登陆,本地用户可用 localhost,如果想让该用户可以 从任意远程主机登陆,可以使用通配符 %
- 密码:登录密码

用户授权:创建好的用户,需要进行授权
 
 语法格式: GRANT 权限 1, 权限 2... ON 数据库名.表名 TO '用户名'@'主机名';
 - 权限: 授予用户的权限,如 CREATE、ALTER、SELECT、INSERT、UPDATE 等。如果要授 予所有的权限则使用 ALL
 - ON: 用来指定权限针对哪些库和表。
 - TO: 表示将权限赋予某个用户。
 
查看权限:
 语法格式: SHOW GRANTS FOR '用户名'@'主机名';
 
删除用户:
 语法格式: DROP USER '用户名'@'主机名';       
 
查询用户:选择名为 mysql的数据库, 直接查询 user表即可
 SELECT * FROM USER; -- 查询用户
SQLYog 数据库备份&还原
  • 备份的应用场景 在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。比如发生意外停机或存储介质损坏。 这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。

  • SQLYog 数据备份(备份文件有创建数据库语句)

  1. 选中要备份的数据库,右键 备份导出 ---->选择 备份数据库,转存到SQL
  2. 指定文件存储位置,选择导出即可
  • SQLYog 数据恢复
  1. 先删除数据库
  2. 执行SQL脚本,导入之前备份的 SQL 文件

命令行 数据库备份和还原

  • 命令行备份(备份文件没有创建数据库语句)
  • 进入到Mysql安装目录的 bin目录下, 打开DOS命令行
 语法格式: 
     mysqldump -u 用户名 -p 密码 数据库 文件路径
     
 执行备份(备份db2中的数据 到 H盘的 db2.sql 文件中): 
     mysqldump -uroot -p123456 db2 H:/db2.sql
  • 命令行恢复(还原的时候需要先创建一个 数据库)
 1.先删除原数据库
     
 2.恢复数据还原数据库中的数据
    语法格式: source sql文件地址

件有创建数据库语句)**

  1. 选中要备份的数据库,右键 备份导出 ---->选择 备份数据库,转存到SQL
  2. 指定文件存储位置,选择导出即可
  • SQLYog 数据恢复
  1. 先删除数据库
  2. 执行SQL脚本,导入之前备份的 SQL 文件

命令行 数据库备份和还原

  • 命令行备份(备份文件没有创建数据库语句)
  • 进入到Mysql安装目录的 bin目录下, 打开DOS命令行
 语法格式: 
     mysqldump -u 用户名 -p 密码 数据库 文件路径
     
 执行备份(备份db2中的数据 到 H盘的 db2.sql 文件中): 
     mysqldump -uroot -p123456 db2 H:/db2.sql
  • 命令行恢复(还原的时候需要先创建一个 数据库)
 1.先删除原数据库
     
 2.恢复数据还原数据库中的数据
    语法格式: source sql文件地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值