热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

11月22日内容总结——存取数据的历史和数据库的介绍、MySQL介绍、下载和相关操作

目录一、存取数据的演变史1、文本文件2、软件开发目录规范3、数据库服务(重点)1.数据库管理软件的由来①程序所有的组件就不可能运行在一台机器上②数据安全问题③并发总结二、数据库软件

目录



  • 一、存取数据的演变史

    • 1、文本文件

    • 2、软件开发目录规范

    • 3、数据库服务(重点)

      • 1.数据库管理软件的由来

        • ①程序所有的组件就不可能运行在一台机器上

        • ②数据安全问题

        • ③并发

        • 总结







  • 二、数据库软件应用史

  • 三、数据库的本质

    • 1.站在底层原理的角度

    • 2.站在实际应用的角度



  • 四、数据库的分类

    • 1.关系型数据库

      • 特征1:拥有固定的表结构(字段名 字段类型)

      • 特征2:数据之间可以建立数据库层面关系



    • 2.非关系型数据库

      • 特征1:没有固定的表结构 数据存储采用K:V键值对的形式

      • 特征2:数据之间无法建立数据库层面的关系





  • 五、MySQL简介

  • 六、MySQL基本使用

  • 七、将MySQL服务制作成系统服务

    • 1、把bin目录添加到环境变量

      • 1.右键计算机,点击属性

      • 2.点击高级系统设置

      • 3.在弹出的窗口中点击环境变量

      • 4.双击第二个内容框(系统变量)中的path

      • 5.在弹出的新窗口中点击新建,然后输入bin文件夹的路径



    • 2、将MySQL服务制作成windows系统服务(相当于把MySQL服务制作成系统的守护进程)

      • 1.如何查看系统服务

      • 2.制作MySQL的Windows服务

      • 3.首次添加MySQL服务后并不会自动启动,需要认为操作一下



    • 3.如何卸载



  • 八、密码相关操作

    • 1.修改密码

      • 方式1:mysqladmin

      • 方式2:直接修改存储用户数据的表

      • 方式3:冷门操作 有些版本可能还不支持



    • 2.忘记密码的解决方法

      • 方式1:卸载重新装

      • 方式2:把data目录删除 拷贝同桌的目录

      • 方式3:小把戏操作





  • 九、SQL与NoSQL

    • SQL(操作关系型数据库的语言)

    • NoSQL(操作非关系型数据库的语言)

    • SQL 和 NoSQL对比



  • 十、数据库重要概念

    • 什么是数据库服务器

    • 什么是数据库管理系统(DataBase Management System 简称DBMS)

    • 什么是库(DataBase,简称DB)

    • 什么是表

    • 什么是记录

    • 什么是数据(Data)

    • 举例

    • 验证指令



  • 十一、基本SQL语句

    • 注意事项

    • 基于库的增删改查指令

    • 基于表的增删改查

    • 基于记录的增删改查





一、存取数据的演变史


1、文本文件

使用文本文件存储数据的时候路径不固定数据格式不统一,一旦更换设备就容易出现无法使用的情况。

文件路径不固定:C:\aaa.txt D:\bbb.txt E:\ccc.txt
数据格式不统一:jason|123 jason$123 jason 123

2、软件开发目录规范

​ 规定了数据应该保存在db目录下>>>:路径偏向统一。

db/user.txt
db/userinfo.txt
db/jason.json
db/jason(比如使用pocket模块存储对象)

但是数据格式还是没有得到统一,有文本、json格式、对象等数据存储格式。


3、数据库服务(重点)

特点

​ 统一路径,统一操作方式

​ 降低学习成本,提高开发效率


1.数据库管理软件的由来

​ 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上。

​ 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题。

​ 很不幸,这些假设都是你自己意淫出来的,上述假设存在以下几个问题。。。。。。


①程序所有的组件就不可能运行在一台机器上


  • 因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。

  • 于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。


②数据安全问题


  • 根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。

  • 于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。


③并发

根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:



  • 1.远程连接(支持并发)

  • 2.打开文件

  • 3.读写(加锁)

  • 4.关闭文件


总结

我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。


二、数据库软件应用史

1.单机游戏

数据存储于各个计算机的本地 无法共享

2.网络游戏

数据存储于网络中 可以共享(数据库服务)

数据库服务集群:提升数据的安全性


三、数据库的本质


1.站在底层原理的角度

​ 数据库指的是操作数据的进程(一堆代码)


2.站在实际应用的角度

​ 数据库指的是可视化操作界面(一些软件)

ps:以后不做特殊说明的情况下讲数据库其实指的是数据库软件

数据库软件本质也是CS架构的程序。这意味着所有的程序员其实都有资格编写一款数据库软件,只不过我们短时间内没这个水平。


四、数据库的分类


1.关系型数据库


特征1:拥有固定的表结构(字段名 字段类型)

​ id name pwd


特征2:数据之间可以建立数据库层面关系

​ 用户表数据

​ 豪车表数据

​ 豪宅表数据

常见的关系型数据库:

MySQL、Oracle(中文叫甲骨文)、MariaDB、PostgreSQL、sql server、sqlite、db2、access

1.MySQL:开源免费,使用最广,性价比贼高。

​ 主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码。

​ 因为开放源代码,这个数据库是免费的,他现在是甲骨文公司的产品。

​ 2.Oracle:收费,使用成本较高。但是安全性也是最高的。

​ 主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。

​ 3.PostgreSQL:开源免费并且支持二次开发,兼容性极高。

​ 4.MariaDB:跟MySQL是一个作者,开源免费。

​ SUN被甲骨文收购后,MySQL 的原创人员有拉出另外一个分支,命名MariaDB 。该数据库被维基百科,Facebook 甚至 Google等技术巨头使用。

​ MariaDB 是一种可为 MySQL 提供插件替换功能的数据库服务器。开发人员的首要关注点是安全性,在每个版本发布时,开发人员还会合并所有 MySQL 的安全修补程序,并在需要时对其进行增强。

​ 5.sqlite:小型数据库,主要用于本地测试


2.非关系型数据库


特征1:没有固定的表结构 数据存储采用K:V键值对的形式

​ {'name':'jason'}

​ {'username':'kevin','pwd':123}


特征2:数据之间无法建立数据库层面的关系



  • 虽然不能建立数据库层面的关系,但是我们可以自己编写代码建立逻辑层面的关系。

​ redis、mongoDB、memcache

​ 1.redis:目前最火、使用频率最高的非关系型数据库(缓存数据库)

​ 虽然缓存数据库是基于内存做数据存取但是拥有持久化的功能,也就是有自动保存和写日志的功能。

​ 2.mongoDB:文档型数据库 最像关系型数据库的非关系型数据库

​ 主要用在爬虫以及大数据领域

​ 3.memcache:以及被redis淘汰

虽然数据库软件有很多 但是操作方式大差不差 学会了一个几乎就可以学会所有

其中以MySQL最为典型


五、MySQL简介

1.版本问题

8.0:最新版

5.7:使用频率较高

5.6:学习推荐使用

ps:站在开发的角度使用哪个版本学习都没有关系,但是新版的软件封装了一些功能,不需要我们自己操作了,对于学习者来说应该亲自实践一下更好。

2、MySQL软件下载及安装见博客

MySQL软件安装教程(windows系统):

https://www.cnblogs.com/zhihuanzzh/p/16915579.html

3.主要目录介绍

bin目录

存放启动文件

mysqld.exe(服务端) mysql.exe(客户端)

data目录

存放核心数据

my-default.ini

默认的配置文件

readme

软件说明


六、MySQL基本使用

当我们刚下载完MySQL的安装包解压到指定目录后其实已经可以使用MySQL了。只是需要开两个cmd窗口才能使用MySQL服务

打开步骤讲解:

1、先打开cmd窗口(cmd建议使用管理员身份打开)

2、切换到mysql的bin目录下先启动服务端

mysqld

3、保持窗口不关闭 重新打开一个新的cmd窗口

4、切换到mysql的bin目录下启动客户端

mysql

ps:直接使用mysql命令默认是游客模式 权限和功能都很少

使用用户名登陆的指令

​ mysql -u用户名 -p密码

管理员默认没有密码,连续回车即可(有密码就输入)

mysql -uroot -p密码

有些同学的电脑在启动服务端的时候就会报错,不要慌。拷贝报错信息,然后百度搜索:

mysql启动报错(后面粘贴错误信息)


七、将MySQL服务制作成系统服务


1、把bin目录添加到环境变量

先清空之前打开的cmd窗口,一定要把之前用cmd启动的服务端关闭(ctrl+c)


1.右键计算机,点击属性

image


2.点击高级系统设置

image


3.在弹出的窗口中点击环境变量

image


4.双击第二个内容框(系统变量)中的path

image


5.在弹出的新窗口中点击新建,然后输入bin文件夹的路径

image

ps:将MySQL的bin目录路径追加到环境变量中时,win7需要用;分割。


2、将MySQL服务制作成windows系统服务(相当于把MySQL服务制作成系统的守护进程)

将MySQL服务制作成windows系统服务后就不需要使用cmd开启MySQL服务端了。


1.如何查看系统服务

方式一:

同时按住ESC键+SHIFT键+CTRL键打开任务管理器,然后点击侧边栏中最后一个选项就可以查看系统服务

image

方式二:

同时按住win键和R键,输入services.msc,然后按回车,就能打开服务界面

image

image


2.制作MySQL的Windows服务

步骤一:以管理员身份打开cmd窗口

image

步骤二:输入指令

mysqld --install

image


3.首次添加MySQL服务后并不会自动启动,需要认为操作一下

打开方式一:选中MySQL服务右键,然后点击启动

image

打开方式二:使用cmd输入代码启动

image

开启后我们可以去服务窗口查看状态

image


3.如何卸载

步骤一:先关闭服务端

打开cmd,输入指令:net stop mysql

步骤二:移除系统服务

接着输入指令:mysqld --remove

image


八、密码相关操作


1.修改密码


方式1:mysqladmin

先输入下列指令:

​ mysqladmin -u用户名 -p原密码

接着设置新密码:

​ password 新密码


方式2:直接修改存储用户数据的表

如何查看存储用户数据的表

select * from mysql.user\G

这里如果不在末尾跟上\G读取的内容会出现格式错乱,跟上\G后可以一行行展示文件内容。


方式3:冷门操作 有些版本可能还不支持

​ set password=password('新密码') # 修改当前登录用户的密码


2.忘记密码的解决方法


方式1:卸载重新装


方式2:把data目录删除 拷贝同桌的目录

这里就相当于用你同桌的信息登陆


方式3:小把戏操作

1.关闭正常的服务端

net stop mysql

image

2.以跳过授权表的方式重启服务端(不校验密码)

​ mysqld --skip-grant-table

image

3.以管理员身份进入然后修改mysql.user表数据即可

​ mysql -uroot -p

image

​ update mysql.user set password=password('123') where Host='localhost' and User='root';

最后一行的代码的作用是设置root账号的密码为123

image

4.关闭服务端 然后以正常方式启动即可


九、SQL与NoSQL

​ 数据库服务端是可以服务多种类型的客户端,客户端可以是自己开发的,也可以是python代码编写,也可以是java代码编写,但是这样就导致了数据库服务端操作会变得复杂。

​ SQL和NoSQL就相当于是数据库服务端规定了客户端操作服务端的数据时需要使用的语言。


SQL(操作关系型数据库的语言)

​ SQL结构化查询语言是一种数据库操作的非过程式编程语言,用于存取数据以及查询、更新和管理关系型数据库系统,一般脚本文件后缀为.sql。


NoSQL(操作非关系型数据库的语言)

​ NoSQL泛指非关系型数据库,主要用于针对超大规模和高并发的社交SNS类型网站的解决方案

ps:要想跟数据库交互就必须使用数据库指定的语言。

SQL有时候也指代关系型数据库。

NoSQL有时候也指代非关系型数据库。


SQL 和 NoSQL对比

复杂查询SQL数据库比较擅长;

SQL数据库不适合分层次的数据存储,NoSQL可以很好的实现数据的分层次存储,更适合大数据;

对于要求数据严格一致性的应用中SQL非常使用,而且稳定,能够保证数据操作的原子性和一致

性;而NoSQL对事务的处理能力有限,一般保证最终一致性;

SQL厂商支持,而NoSQL是社区支持;

性能对比中,NoSQL明显优于SQL数据库,一般NoSQL都充分的利用系统的内存资源;

NoSQL数据库开发方便,不用考虑数据关系和格式。


十、数据库重要概念


什么是数据库服务器

运行有DBMS服务端的计算机,该计算机对内存和硬盘要求都相对较高


什么是数据库管理系统(DataBase Management System 简称DBMS)

管理数据的套接字软件,CS架构


什么是库(DataBase,简称DB)

文件夹


什么是表

文件


什么是记录

一组数据构成一条记录,相当于文件中的一行内容,如1,jason,male,18


什么是数据(Data)

事物的状态


举例

强调:小白阶段为了更加方便的理解,做了以下比喻,本质其实有一点点的区别。

库 就相当于是 文件夹

表 就相当于是 文件夹里面的文件

记录 就相当于是 文件夹里面的文件中的一行行数据


验证指令

​ 1.查看所有的库名称

​ show databases;

2.查看所有的表名称

​ show tables;

3.查看所有的记录

​ select * from mysql.user;


十一、基本SQL语句


注意事项

1.sql语句必须以分号结尾

2.sql语句编写错误之后不用担心 可以直接执行报错即可


基于库的增删改查指令

1.创建库

create database 库名;

2.查看库

show databases; 查看所有的库名称

show create database 库名; 查看指定库信息

3.编辑库

alter database 库名 charset='utf8';

4.删除库

drop database 库名;


基于表的增删改查

操作表之前需要先确定库

create database db1;

切换操作库

use db1;

1.创建表

create table 表名(字段名 字段类型,字段名 字段类型);

2.查看表

show tables; 查看库下所有的表名称

show create table 表名; 查看指定表信息

describe 表名; 查看表结构

desc 表名;

ps:如果想跨库操作其他表 只需要在表名前加库名即可

desc mysql.user;

3.编辑表

alter table 表名 rename 新表名;

4.删除表

drop table 表名;


基于记录的增删改查

1.插入数据

insert into 表名 values(数据值1,数据值2);

2.查询数据

select * from 表名; 查询表中所有的数据

3.编辑数据

update 表名 set 字段名=新数据 where 筛选条件;

4.删除数据

delete from 表名;

delete from 表名 where id=2;



推荐阅读
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • Spring Security 认证模块的项目构建与初始化
    本文详细介绍了如何构建和初始化Spring Security认证模块的项目。首先,通过创建一个分布式Maven聚合工程,该工程包含四个模块,分别为core、browser(用于演示)、app等,以构成完整的SeehopeSecurity项目。在项目构建过程中,还涉及日志生成机制,确保能够输出关键信息,便于调试和监控。 ... [详细]
  • 如何在Linux系统中利用crontab定时执行Shell脚本任务?
    在Linux系统中,如何实现定时执行任务脚本?在服务器日常运维过程中,经常需要定期执行某些任务,例如数据库备份、日志文件切割等。通过使用crontab工具,可以轻松配置这些周期性任务,确保它们按时自动运行,提高系统管理效率和可靠性。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 如何在Oracle ASM_Diskgroup中重命名现有磁盘
    如何在Oracle ASM_Diskgroup中重命名现有磁盘 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • Norton Partition Magic 中 PHP 函数 error_reporting(E_ALL ^ E_NOTICE) 的详细解析与应用
    在 Windows 环境下,通过具体示例分析了 `Norton Partition Magic` 中 `PHP` 函数 `error_reporting(E_ALL ^ E_NOTICE)` 的详细解析与应用。该函数用于控制错误报告级别,例如在从 PHP 4.3.0 升级到 4.3.1 后,程序出现多处错误的原因及解决方法。本文深入探讨了错误报告配置对程序稳定性的影响,并提供了实用的调试技巧。 ... [详细]
  • 高效批量文件重命名软件
    开发了一款基于Python的高效批量文件重命名软件,并集成了wxWidgets图形用户界面,使用cxfreeze将其打包为独立的可执行文件(exe)。该工具适用于需要频繁处理大量文件的用户,能够显著提高文件管理效率。详细使用说明包含在软件压缩包内。开发环境为Python 2.7和wxWidgets 3.0,运行环境要求兼容Windows系统。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有