day 17 课堂笔记 MySQL

1. 启动与关闭MySQL的服务端与客户端

1.1 启动与关闭方式一

从cmd通过命令的方式启动与关闭MySQL服务端与客户端。

  • 启动服务端

    在这里插入图片描述

  • 启动客户端

    • 本机测试模式

      当安装完毕MySQL第一次使用客户端,使用root账号,登录连接MySQL的服务端,无需填写密码(还没有设置密码)

在这里插入图片描述

  • 工作中启动客户端连接服务端

    工作中,相关人员会给你数据库的IP地址和端口以及你使用的账号密码
    mysql -h ip地址 -P 端口号 -u 账号 -p 密码
    
  • 服务端关闭,客户端报错

在这里插入图片描述

  • 关闭服务端有:

    • 直接关闭服务端的cmd命令窗口

    • 任务管理器关闭服务端的进程任务

在这里插入图片描述

  • 通过cmd指令关闭MySQL服务器

在这里插入图片描述

  • 关闭客户端

    在客户端的终端:exit/quit;
    

1.2 启动与关闭的方式二

由于方式一想要一直运行服务端就需要常开cmd那个窗口,很麻烦,我们可以将mysql这个软件加到系统服务中,可以一直开启服务端,比较方便。

  • 通过命令将mysql加到系统服务中

在这里插入图片描述

  • 从服务可以控制mysql服务器的状态

在这里插入图片描述

  • 添加到系统服务中,还可以通过命令去启动或者关闭服务器

    添加利系统服务以后,以管理员的身份打开cmd终端,我们在启动和关闭这个mysql服务,就可以在cmd窗口下使用两个指令搞定了:
    启动:net start mysql
    关闭:net stop mysql
    

在这里插入图片描述

注意:在终端输入mysqld这个命令就失效了。

  • 将mysqld从系统服务中删除:

    以管理员的身份打开cmd终端:
    cmd下一除服务命令为:mysqld remove
    

2. MySQL安装目录

在这里插入图片描述

进入data目录:

在这里插入图片描述

其中mysql:

这个是mysql整个服务的核型数据库,类似于SQL server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用控制和管理信息。不可以删除,如果对mysql不是很了解,也不要轻易修改这个数据库里面的表信息。

总结:其实这些库就是我们电脑上对应的文件夹,在mysql中显示为对应的库,来方便我们管理数据,而文件或者文件夹这种与硬盘打交道的事情就交给mysql了,我们只需要对mysql库中的数据进行操作就可以了,你可以看到,我们刚才简单使用的时候创建的一个crm库,也就是在data目录下的生成了一个crm文件夹。

3.更改root用户的密码

3.1 方式一

方法1:用set password命令
	首先登陆Mysql,使用MySQL自带的那个客户端连接上MySQL。
	格式:set password for 用户名@localhost = password('新密码')

在这里插入图片描述

3.2 方式二

用mysqladmin(因为我们将bin已将添加到环境变量了,这个MySQLadmin也在彬目录下,所以可以直接使用这个MySQLadmin功能,使用它来修改密码)

关于MySQLadmin的介绍:是一个执行管理操作的客户端程序。他可以用来检查服务器的配置和当前状态、创建和删除数据库、修改用户密码等等的功能,虽然MySQLadmin的很多功能通过使用MySQL自带的mysql客户端可以搞定,但是有时候使用MySQLadmin操作会比较简单。

格式:mysqladmin -u 用户名 -p 旧密码 password 新密码

只用MySQLadmin的时候,会出现一个warning警告信息:Warning: Using a password on the command line interface can be insecure,这个没关系,是提示你,你直接在cmd下使用明文设置密码的时候,是不安全的,因为别人可以通过翻看你输入指令的历史记录开查看到你设置的密码,所以提示你一下,按上下键,可以看到自己之前输入的命令,或者输入下面这个指令也可以看到:

img

所以我们最好连接进入到mysql里面之后,在进行密码的修改和设置。

所以,我们最好是选择方式1.

4. 忘记密码的解决方式

利用root权限,可以给任何的用户(忘记密码的前提下)设置新密码。

首先登录MySQL,连接上mysql服务端。

use mysql 解释:切换到mysql这个库,这个库是所有的用户表和权限相关的表都在这个库里面,我们进入到这个库才能修改这个库里面的表。

update user set password=password(‘123’)where user=‘root’ and host=‘localhost’;其中password=password(‘123’)前面的password是变量,后面的password是mysql提供的密码加密用的,我们最好不要明文的存密码,其中user是一个表,存着所有的mysql用户的信息。

flush privileges;刷新权限,让其生效,否则不生效,修改不成功。

在这里插入图片描述

5.数据库·库的操作

数据库的库就是一个文件夹

5.1

create database 库名 charset utf8/gbk;
在默认的数据库编码都是utf8的编码方式,所以可以省略编码方式。
create database 库名;

库名的命名规则

  1. 数字,字母,下划线。
  2. 区分大小写。
  3. 唯一性。
  4. 不能使用单独的数字,最长128位。

5.2 相关操作

查看操作

show databases;查看所有的数据库。
show create database t1;查看指定的数据库的信息。
select database();查看当前使用的数据库。

增加的操作

create database t1 charset utf8;

选择(进入)数据库

use 库名;

删除数据库

drop database t1;

修改数据库

alter database t2 charset utf8;

6.数据库·表的操作

6.1 存储引擎

存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制,存储引擎的介绍:

首先确定一点,存储引擎的概念是MySQL里才有的,不是所有的关系型数据库都有存储引擎的概念,后面我们还会说,但是现在要确定这一点。

讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如MP4,AVI,WMV等,而存在我们电脑磁盘上也会存在与不同类型的文件系统中如Windows里常见的NTFS,fat32,存在与Linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的。直观区别是,占用系统的空间大小与清晰程度可能不一样。那么数据库表里的数据存储在数据库里以及磁盘上和上述的视频格式以及存储磁盘文件的系统格式特征类似,也有很多中存储方式。

但是对于用户和应用程序来说同样一张表的数据,无论用什么引擎来存储,用户能够看到的数据是一样的。不同存储引擎存取,引擎功能,占用空间大小,读取性能等可能有区别。说白了,存储引擎就是在如何存储数据、提取数据、更新数据等技术方法的实现上,底层的实现方式不同,那么就会呈现出不同存储引擎有着一些自己独有的特点和功能,对应着不同的存取机制。

因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即:对表的存储、操作等的实现方法不同),表是什么,表本质上就是磁盘上文件。

其实MySQL支持多种存储引擎,每种引擎有着一些自己独特的功能,用户在使用的时候,可以根据自己的业务场景来使用不同的存储引擎,其中MySQL最常用的存储引擎:MyISAM和InnoDB。

再详细介绍这些存储引擎之前,我们先来看看MySQL的整个工作流程,看一下存储引擎在哪里,MySQL都做了哪些事情。

6.2 MySQL server对SQL语句的执行流程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.3 常见的存储引擎介绍

6.3.1 MyISAM

  1. 不支持事务

    事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全成功要么全失败。

  2. 表级锁定

    数据更新时锁定整个表:其锁定机制是表级锁定,也就是对表中的一个数据进行操作都会将这个表锁定,其他人不能操作这个表,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。

  3. 读写互相阻塞

    不仅会在写入的时候阻塞读取,MylSAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读。

  4. 只会缓存索引

    MylSAM可以通过key_buffer_size的值来提高缓存索引,以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据。

  5. 读取速度较快

    占用资源相对较少

  6. 不支持外键约束,但只是全本索引

  7. MylSAM引擎是MySQL5.5版本之前的默认引擎,是对最初的ISAM引擎优化的产物。

6.3.2 InnoDB

InnoDB 引擎
	介绍:InnoDB引擎是MySQL数据库的另一个重要的存储引擎,正成为目前MySQL AB所发行新版的标准,被包含在所有二进制安装包里。和其他的存储引擎相比,InnoDB引擎的优点是支持兼容ACID的事务(类似于PostGreSQL),以及参数完整性(及对外间的支持)。Oracle公司2005年10月收购了innobase。
	innobase采用双认证授权。他使用GNU发行,也允许其他想将InnoDB结合到商业软件的团体获得授权。
	InnoDB引擎特点:
		1. 支持事务:
			支持四个事务隔离界别,支持多版本读。
		2. 行及锁定(更新时一般是锁定当行):
			通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响。
		3. 读写阻塞与事务隔离级别相关(有多个级别,这就不介绍啦~)。
		4. 具体非常高效的缓存特性:
			能缓存索引,也能缓存数据。
		5. 整个表和主键与Cluster方式存储,组成一颗平衡树。
		6. 所有SecondaryIndex都会保存主键信息。
		7. 支持分区,表空间,类似Oracle数据库。
		8. 支持外键约束,不支持全文索引(5.5之前),以后的都支持了。
		9. 和MyISAM引擎比较,InnoDB对硬件资源要求还是比较高的。
		小结:
			三个重要功能:Supports transactions row-level locking and foreign keys

6.4 事务

在逻辑上称为一组SQL语句,要么不全成功,要么不全失败。

事务介绍:
简单地说,事务就是指逻辑上的一组SQL语句操作,组成这组操作的各个SQL语句,执行时要么全成功要么全失败。
例如:你给我转账5块钱,流程如下
a.从你银行卡取出5块钱,剩余计算money-5
b.把上面5块钱打入我的账户上,我收到5块,剩余计算money+5.
上述转账的过程,对应的sql语句为:
update 你_account set money=money-5 where name=‘你’;
update 我_account set money=money+5 where name=‘我’;
上述的两条SQL操作,在事务中的操作就是要么都执行,要么都不执行,不然钱就对不上了。
这就是事务的原子性(Atomicity)。
事务的四大特性:
1.原子性(Atomicity)
事务是一个不可分割的单位,事务中的所有SQL等操作要么都发生,要么都不发生。
2.一致性(Consistency)
事务发生前和发生后,数据的完整性必须保持一致。
3.隔离性(Isolation)
当并发访问数据库时,一个正在执行的事务在执行完毕前,对于其他的会话是不可见的,多个并发事务之间的数据是相互隔离的。也就是其他人的操作在这个事务的执行过程中是看不到这个事务的执行结果的,也就是他们拿到的是这个事务执行之前的内容,等这个事务执行完才能拿到新的数据。
4.持久性(Durability)
一个事务一旦被提交,它对数据库中的数据改变就是永久性的。如果出了错误,事务也不允撤销,只能通过’补偿性事务’。

事务的开启:
    数据库默认事务是自动提交的,也就是发一条sql他就执行一条。如果想多条sql放在一个事务中执行,则需要使用事务进行处理。当我们开启一个事务,并且没有提交,mysql会自动回滚事务。或者我们使用rollback命令手动回滚事务。
    数据库开启事务的命令,我们后面会讲到~~~

6.5 其他存储引擎

#NDB 存储引擎
2003 年,MySQL AB 公司从 Sony Ericsson 公司收购了 NDB 存储引擎。 NDB 存储引擎是一个集群存储引擎,类似于 Oracle 的 RAC 集群,不过与 Oracle RAC 的 share everything 结构不同的是,其结构是 share nothing 的集群架构,因此能提供更高级别的 高可用性。NDB 存储引擎的特点是数据全部放在内存中(从 5.1 版本开始,可以将非索引数 据放在磁盘上),因此主键查找(primary key lookups)的速度极快,并且能够在线添加 NDB 数据存储节点(data node)以便线性地提高数据库性能。由此可见,NDB 存储引擎是高可用、 高性能、高可扩展性的数据库集群系统,其面向的也是 OLTP 的数据库应用类型。

#Memory 存储引擎
正如其名,Memory 存储引擎中的数据都存放在内存中,数据库重 启或发生崩溃,表中的数据都将消失。它非常适合于存储 OLTP 数据库应用中临时数据的临时表,也可以作为 OLAP 数据库应用中数据仓库的维度表。Memory 存储引擎默认使用哈希 索引,而不是通常熟悉的 B+ 树索引。

#Infobright 存储引擎
第三方的存储引擎。其特点是存储是按照列而非行的,因此非常 适合 OLAP 的数据库应用。其官方网站是 http://www.infobright.org/,上面有不少成功的数据 仓库案例可供分析。

#NTSE 存储引擎
网易公司开发的面向其内部使用的存储引擎。目前的版本不支持事务, 但提供压缩、行级缓存等特性,不久的将来会实现面向内存的事务支持。

#BLACKHOLE
黑洞存储引擎,可以应用于主备复制中的分发主库。

MySQL 数据库还有很多其他存储引擎,上述只是列举了最为常用的一些引擎。如果 你喜欢,完全可以编写专属于自己的引擎,这就是开源赋予我们的能力,也是开源的魅 力所在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值