简介:当前阶段的数据库主要以开发为主(操作SQL语句),为后续的框架铺垫
概要:
1、数据演变史
2、数据库软件的本质
3、MySQL简介
4、MySQL下载与安装
5、基本配置
6、基本的SQL语句
1、单独的文本文件(eg:python文件操作) 特点:当前阶段数据没有固定的存放位置和格式 例: 文件:user.txt 数据格式:json|123 '''程序之间无法实现兼容''' 2、软件开发目录规范 特点:规范了数据的存储位置及文件名 '''数据及文件的查找变的简单了,但是并没有解决核心问题''' 3、数据库阶段 特点:规范了软件的存储位置及数据的格式 '''目前阶段正在使用,解决的程序之间无法兼容的核心问题'''
1、单击游戏阶段 特点:数据各自保存在本地计算机上,无法实现不同计算机之间的数据交互或者共享 2、多级游戏阶段 特点:数据统一保存在固定的服务器上(计算机),实现了不同计算机之间的数据交互问题, 前提:该阶段的数据交互与共享必须是基于网络的基础上 '''为了数据的安全,通常还会采用集群策略来分担风险'''
前提:我们在学习数操作据库时,实际上是在操作一款数据库软件(当然本质上还是通过数据库软件来操作数据库) # 数据库本质上是一款cs架构的软件(客户端与服务端) 既然数据库本质是一款你cs架构的软件,那么也就意味着 每一个优秀的程序员都具备独自开发一个数据库软件的能力( 当然不是我这种啦) 在当前的社会背景下,有很多的大牛都具备编写数据库软件的能力, 并且市面上也确实存在很多款数据库软件 ''' 数据库在狭义层面上来说 指的就是处理数据的底层程序 广义层面上来说 指的是操作这些底层程序的便捷应用软件 总得来说,学习数据库很多时候学习的是配套的数据库软件 '''
市面上的数据库大致分为两类:关系型数据库与非关系型数据库 1、关系型数据库 eg:MySQL,Orcale,PsotgreSQL,MariaDB,SQLite,SQL Server,db2 MySQL:开源免费 使用非常规范,当前市面上使用最为广泛 Oracle:收费 维护成本高,安全性极高,大型公司可能会使用 PostgreSQL:支持二次开发 MariaDB:MySQL的替代产品(并且有自己的特性) sqlite:小型数据库(django框架自带该数据库) 2、非关系型数据库 eg:Redis,mongoDB,memcache Redis:目前最火的缓存数据库 具有很多数据结构 功能强大 mongoDB:文档型数据库 可以用在大数据和爬虫领域 memcache:已经被redis淘汰 """ 1.两类数据库的区别 关系型数据库 拥有固定的表结构 并且表与表之间可以建立代码层面的关系 非关系型数据库 没有固定的表结构 数据存储采用的是K:V键值对的形式 2.这么多数据库如何学习 两大类数据库操作逻辑基本一致 每一类学习一个基本就可以掌握所有 关系型学MySQL 非关系型学redis、mongodb """
数据库的服务端为了能够实现与不同的客户端之间进行数据的交互, 规定了统一的交互方式 使用关系型数据库:SQL语句 使用非关系型数据库:NoSQL语句 #注:NoSQL有时表示非关系型数据库
1、MySQL主要版本介绍: 5.6:使用频率较高的版本 5.7:当前过渡阶段版本 8.0:当前最新版本,功能较为强大 #注:不同的版本之间的区别主要在于底层的逻辑,而SQL语句几乎是一模一样的,对刚接触并学习MySQL来说,使用5.6版本即可(其他版本也可) 2、MySQL软件的下载 mac电脑下载网址:https://www.cnblogs.com/Dominic-Ji/articles/15402755.html windows官网网址:https://www.mysql.com/
1、进入官网以后,选择图中的Dowload
2、点击Dowload后,滑到最底端,选择MySQL Community (GPL) Downloads »
3、进入如下界面,选择MySQL Community Server
)
4、进入如下界面,点击Archives
选择想要下载的版本
5、选择对应版本的压缩包下载
上面说到了MySQL又分为客户端与服务端,MySQL为了便于用户使用,
在我们下载的压缩包里,已经囊括了服务端与客户端
目录介绍
下载完压缩包以后,对压缩包进行解压,解压完成以后,来到解压完成后的位置,打开相应的文件夹
1、bin文件夹
存放相关的启动文件
mysql.exe 客户端启动文件
mysqld.exe 服务端启动文件
2、data文件夹
存放在操作MySQL时产生并保存的数据
3、my-default.ini
存放相关的配置文件
4、README
存放MySQL软件的相关简介
# 在cmd命令窗口下对mysql进行操作 1、环境变量的配置 将mysql.exe、mysqld.exe文件所在路径添加到系统环境变量中 步骤:>>>鼠标右键此电脑 >>>高级系统设置 >>>环境变量 >>>选择系统变量里的Path,单击编辑 >>>选择新建,将mysql.exe、mysqld.exe文件所在路径粘贴进去就可以了 2、启动MySQL服务端(一定要先启动服务端再启动客户端) 1、win+r输入cmd进入命令窗口 前期在操作的时候最好使用管理员模式打开cmd命令窗口,避免发生权限问题出现报错情况 步骤:在本机搜索界面,搜索cmd右键选择以管理员模式打开,这里不再进行演示 2、直接输入mysqld启动服务端(当前命令窗口即为MySQL服务端,不要关闭) 这里说明一下我遇到的问题,由于我之前安装过了MySQL5.6.51版本, 后面又卸载了,在输入mysqld后没反应的情况,本人也是弄了好久,最终成功解决了问题 出现问题的情况:使用mysqld启动没反应,用net start mysql提示找不到系统文件 解决措施:1、win+r输入regedit进入注册表cmd-->regedit-->HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->services-->Mysql, 修改ImagePath为mysql所安装的路径下的mysqld即可 2、使用mysqld --remove移除之前添加的系统服务 3、重新输入mysqld就可以正常的启动mysql服务端了 3、重新开设一个新的cmd窗口充当客户端 直接输入mysql即可登录 # 该模式为游客模式登录 mysql -u用户名 -p密码 # 账号登录(本地使用) mysql -hIP地址 -P端口号 -u用户名 -p密码 # 完整命令 #ps:第一次登录,root用户没有密码,直接连续回车即可
上面说到了要想操作MwSQL,服务端必须要存在,但是每次都必须要开设一个cmd窗口充当服务端, 这样操作起来很麻烦,因此我们可以将MySQL的服务端制作成系统服务并设置成开机自启,关机自关闭,这样我们 就不用再每次手动开设服务端了。 如何制作MySQL系统服务并设置成开机自启,关机自关闭 # 操作步骤 1、关闭之前的服务端 2、查看当前计算机的系统服务列表 1、win+r输入service.msc 2、查看是否存在mysql系统服务 3、若未存在,则以管理员身份运行cmd命令窗口 制作MySQL系统服务时,切记一定要以管理员身份运行cmd, 否则会出现无权限或者报错的问题 直接输入mysqld --install # 这一步仅仅时添加到了系统服务中,第一次需要手动启动 4、重启动mysql系统服务 1、重复第二步的操作,找到mysql,右键选择属性,启动类型选择自动,服务状态点击启动,点击确定就完成了 2、cmd命令窗口模式下输入:net start mysql # 其他服务命令(涉及到mysql服务端操作一律以管理员身份打开cmd命令窗口进行操作) 停止服务:net stop mysql 移除系统服务:mysqld --remove
# SQL语句的结束必须使用分号(重点) 上面提到,在第一次本地登录MySQL时,管理员用户是没有密码的, 但是这样安全性显然很低,因此我们需要针对管理员用户设置密码 # 针对管理员用户需要设置密码 # 方式1:直接在cmd命令窗口内使用mysqladmin命令 mysqladmin -uroot -p原密码 password 新密码 eg:mysqladmin -uroot -p password 123 #初次设置密码,该次登录需要输入原密码进行确认 mysqladmin -uroot -p123 password 666 # 方式2:直接在登录状态下修改当前登录用户的密码 set password=PASSWORD('密码'); eg:set password=PASSWORD('123') # 忘记密码如何解决(了解) 方式1:前期数据库里没有数据的情况,直接从头再来 方式2:稍作了解(因为一般情况我们也接触不到这一点) 1、关闭服务端 2、以跳过授权表的方式重启服务端 # 该方式只需要提供用户名就可以登录 mysqld --skip-grant-tables 3、新开一个cmd窗口,以管理员身份登录 mysql -uroot -p,回车即可 4、修改管理员用户密码 update mysql.user set password=password(123) where user="root" and host="localhost"; 5、关闭服务端再正常启动 CTRL + C直接关闭服务端 net start mysql正常启动服务端 6、使用修改之后的密码登录 mysql -uroot -p #ps:在登录阶段,出现warning时,皆是mysql出于安全性所给与的建议,并不会影响实际的操作
在学习MySQL之前,要对三个重要概念进行了解 什么是库、表、记录? # 通俗一点说 库 >>> 文件夹 表 >>> 文件夹里的文件 记录 >>> 文件夹里的文件里的一行行内容
"""SQL语句的结束必须使用分号""" # 1、如何查看所有的数据库名称 show databases; # 会有一个临时产生在内存里的库information_schema # 2、如何查看所有表名称 1、切换库 use 库名; # 类似于双击进入文件夹 2、查看当前库所有的表名称 show tables; # 3、如何查看所有的记录 select * from 表名; #ps:如果内容较多显示不全出现错乱的情况,可以在语句后面加上\G
# 增 creat database 库名; # 删 drop database 库名; # 改 alter database 数据库名 charset='gbk'; # 查 show databases; # 展示所有的数据库 show create database 数据库名; # 定向查看某个库
## 在操作表之前必须要有库 1、创建数据库 create database 数据库名; 2、查看当前所在的库 select database(); 3、切换库 use 数据库名; # 增 create table 表名(字段名1 字段类型1,字段名2 字段类型2); # 删 drop table 表名; # 改 alter table 表名 rename 新的表名; # 修改表名 alter table 表名 change 字段名 新的字段名 字段类型; # 修改表中的字段名和类型 alter table 表名 modify 字段名 字段类型; # 修改字段类型 # 查 show tables; # 展示当前库下的所有表 show create table 表名; # 定向查看指定表的信息 describe 表名; # 查看表的具体信息(常用)可简写为 desc 表名;
## 在对记录进行操作时,必须要先确定库和表 # 增 insert into 表名 values(数据,数据,数据); # 单条数据 insert into 表名 values(),(),(); # 多条数据 # 删 delete from 表名 where 筛选条件; # 改 update 表名 set 字段名='新数据' where 筛选条件; # 查 select * from 表名; # 查询表中的所有记录
15、字符编码问题
# 查看MySQL内部默认的编码情况 \s; 注:我们在往表中插入数据时,若数据含有中文,则我们在查看的时候会出现乱码的问题, 这也就是我们所说的字符编码的问题,具体应该怎么解决? 1、拷贝并粘贴一份默认的配置文件my-default.ini文件。重命名为my.ini 2、拷贝固定的配置信息,将以下信息粘贴到my.ini文件里 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8 3、重启MySQL服务端 net stop mysql # 关闭MySQL服务端 net start mysql # 重启启动MySQL服务端