day45(MySQL)
《MySQL》
今日内容详细
一个技术的兴起是有其原因的,了解其兴起的背景,能更好的掌握与运用。
注意,新技术的产生并不代表旧技术的落后和不再使用。
数据演变史
# 1.单独的文本文件
没有固定的存放位置:C:\a.txt D:\aaa\c.txt F:\bbb\b.txt
没有固定的数据格式:jason|123 tony$123 kevin~123
'''程序彼此无法兼容 没有统一的标准'''
# 2.软件开发目录规范
按照文件功能的不同规定了相应的位置
'''文件查找变得统一 但是没有解决格式问题(核心问题)、
项目目录结构”是属于”可读性和可维护性”的范畴,我们设计一个层次清晰的目录结构,就是为了达到以下两点:
可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。就像我们所使用的Linux系统一样,固定约定熟成的目录代表不同的功能等。
可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。
'''
# 3.数据库应用
解决了存放位置和数据格式问题
'''将数据处理部分统一了起来'''
《数据库应用发展史》
# 1.单机游戏阶段
数据各自保存在各自的计算机上 无法实现远程共享
'''无需互联网'''
# 2.多机游戏阶段
数据统一基于网络保存到某个固定的服务器上 实现数据共享
'''必须要有互联网'''
"""
集群
如果所有的数据全部存储到一台远程服务器上
那么数据的安全性降低 服务器的压力上升
所以增加远程服务器的数量 数据同步保存 任务均匀分担
具有相同功能的多个服务器组合到一起 就可以称之为是集群
"""
集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。换言之:同一个业务,部署在多个服务器上
《数据库的本质》
要说本质,就要有分门别类的标准,要把抽象细化下来,这非常考验人的形象与归纳思维。人与人之间,理解有偏差,谈话中对方跟不上,就容易造成误解。这种事情太多了。所以我们就类比着说一下"""
数据库在微观层面上来说
运行在计算机上专门处理数据的进程(程序)
eg:内存中的typora代码
数据库在宏观层面上来说
提供给操作者一个简单快捷的操作进程的软件
eg:屏幕上typora界面
我们平时在说数据库的时候大部分指的是操作数据库的应用软件
"""
# 数据库软件的本质其实也是一款CS架构的软件
既然数据库本质是一款CS架构的软件 也就意味着我们每个会网络编程的程序员理论上来说都可以编写出一款数据库软件
在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 所以现在市面上其实存在很多数据库软件
《CS架构概述》
CS架构,就是你的电脑,需要装个软件,才能连接服务器。而BS架构,就是你的电脑,只需要用浏览器,就可以连接服务器了。
1.CS(Client/Server):客户端----服务器结构。C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据.
软件中的CS架构指什么?
C/S=Client/Server 基于客户端/服务器 那CS架构的优点就是基于客户机和服务器模式,大部分的运算是在客户机上运行,从而提高一定的效率,但是也因为他在客户机上运.
第一、什么是C/S结构。C/S (Client/Server)结构,即大家熟知的客户机和服务器结构. SOA(Service-oriented architecture,面向服务架构)。1996年,Gartner最早提出SOA.
先简单地说一下什么是cs和bs架构,cs是客房端服务器模式;bs是浏览器服务器模式。它们最主要的区别是cs架构的应用程序需要在用户的计算机上进行安装。如我们常用.
cs是客房端服务器模式;bs是浏览器服务器模式。它们最主要的区别是cs架构的应用程序需要在用户的计算机上进行安装。如我们常用的word,excel等应用软件属于cs架构.
cs架构全称就是client/server,也就是客户机/服务器的架构,需要在客户端安装软件才可以保证系统正常运行。bs全称是browser/server,也就是浏览器/服务器的架构,客.
DS架构跟CS架构有什么区别?我不知道有没有听错,关于ERP系统的DS架。
是不是听错了?我觉得应该是bs架构和cs架构, bs架构是浏览器+服务器架构,所有的操作都通过浏览器进行,优点是不用安装客户端。cs架构是客户端+服务器架构。
BS和CS的区别以及优缺点 C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、.
相对于二层体系结构(Client/Server构架)是由逻辑上相互分离的表示层、业务层和数据层构成。表示层向客户提供数据,业务层实施业务和数据规则,数据层定义数据访.
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C. 特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效.
如何区分BS和CS架构 ,2层架构和3层架构?举例一些大型软件。用友、金蝶。
1、简单说client直接访问DBserver为两层结构。 client通过中间件等应用服务器访问DBserver为三层结构。 三层结构比两层结构安全。2、可以这样理解:客户端程序访问.
概括地说,人们对CS的不满积累到一定程度,才发明了BS架构,大趋势肯定是BS。CS您可以理解为OutLook,BS就是网页版邮箱,反正我是自从有了gmail之后就没在用.
讲简单易懂点 先简单地说1下甚么是cs和bs架构,cs是客房端服务器模式;bs是阅读器服务器模式。它们最主要的区分是cs架构的利用程序需要在用户
c/s是只客户端服务器端的架构,一般是在局域网 内运行,bs客户端可以直接用浏览器运行。前者因为是在局域网内运行,所以一般可以做到流量比较大些,速度也相对快.
Client/Server架构,即服务器/客户端架构。是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进.
软件平台开发应用
2种架构就如楼上说的一样~ 那CS架构的优点就是基于客户机和服务器模式,大部分的运算是在客户机上运行,从而提高一定的效率,但是也因为他在客户机上运行,所以.
有点疑惑了,以前一直做cs架构软件的,三年了。对bs了解甚少,最近了解了.
呵呵,楼主是做cs的啊,我正好做的是bs的,怎么说呢在目前情况cs和bs各有优势,cs在图形的表现能力上以及运行的速度上肯定是强于bs模式的,不过缺点就是他需要运.
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C. 特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效.
看你要的开发的深度。如果你要定制rom,需要熟悉linux底层的机制。如果你要开发一些框架,开发一些控件,至少要读懂安卓的源码。如果你要开发一款游戏,你要主要.
《数据库分类》
"""目前市面上有很多数据库软件 大致可以分为两类"""
1.关系型数据库
关系型:
1.有固定的表结构(最主要的特征)
eg:有固定字段的excel表格
id name gender
2.并且表与表之间可以建立代码层面的关系
eg:用户表与房屋表
用户买房 那么用户数据和房屋数据就应该有关系
常见数据库名称:
MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server
MySQL:关系型数据库的代表 开源免费 使用频率极高
Oracle:安全性极高 但是使用和维护收费 使用成本高
PostgreSQL:支持二次开发(自己嫁接、扩展功能)
MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品
sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用
sql server:老牌数据库软件 目前主流不用
2.非关系型数据库
非关系型:
1.没有固定的表结构 数据存取采用K:V键值对的形式(最主要的特征)
{'name':'jason'} {'username':'jason','pwd':123}
2.并且表与表之间无法建立代码层面的关系
常见数据库名称:
Redis、MongoDB、Memcache
Redis:目前最火的非关系型数据库 数据类型丰富 功能强大
MongoDB:最像关系型数据库的非关系型数据库 主要用于爬虫和大数据
Memcache:被redis取代了!!!
"""
疑问:诸多数据库软件 如何学习?
两大类数据库的操作方式几乎一致 学完一个其他都很容易上手
eg:学习了MySQL 那么学其他关系型数据库很简单
学习了redis 那么学其他非关系型数据也很简单
"""
数据库种类大全及区别:
【备注:鸣谢链接:https://blog.csdn.net/aaronthon/article/details/81714528】
一、 数据库共有2种类型:关系型数据库、非关系型数据库 。
1、关系数据库
MySQL、MariaDB(MySQL的代替品)、
Percona Server(MySQL的代替品·)、PostgreSQL、
Microsoft Access、Google Fusion Tables、SQLite、DB2、FileMaker、Oracle、SQL Server、INFORMIX、Sybase、dBASE、Clipper、FoxPro、foshub。
几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
2、非关系型数据库(NoSQL)
redis、MongoDB、Memcache、HBase、BigTable、Cassandra、CouchDB、Neo4J。
二、区别
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
———————————————————————————————————————
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
非关系型数据库的分类和比较:
1、key-value型 (针对高性能并发读写场景)
2、文档型 (针对海量数据访问场景)
3、列式数据库
4、图形数据库
————————————————————————————————
三、每个数据库的区别:
mysql:
oracle:
sql server:
informix:
redis: (非关系型数据库----键值数据库)
MongoDB:(非关系型数据库----文档数据库)
HBase:(非关系型数据库----列存储数据库)
Neo4J : (非关系型数据库----图形数据库)
{补充: 数据库模型:对象模型、层次模型(轻量级数据访问协议)、网状模型(大型数据储存)、关系模型、面向对象模型、半结构化模型、平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)。}
《SQL与NoSQL》
"""
数据库服务端支持很多客户端来链接使用
数据库自带的客户端 python代码编写的 java代码编写的 ...
如何让服务端兼容诸多客户端 实现正常交互
方式1:让服务端识别并自动切换对应语言
方式2:统一沟通标准
相较之下方式2更加合理>>>:SQL语句与NoSQL语句
SQL语句
与关系型数据库交互的语言
NoSQL语句
与非关系型数据库交互的语言
"""
SQL数据库主要称为关系数据库; 而NoSQL数据库主要称为非关系数据库或分布式数据库。
SQL数据库定义和操作基于数据的结构化查询语言(SQL)。从侧面看这种语言是非常强大的。SQL是最通用和最广泛使用的选项之一,使其成为安全的选择,尤其适用于复杂的查询。但从另一方面来说,它可能是限制性的。SQL要求您在使用之前使用预定义模式来确定数据的结构。此外,您的所有数据都必须遵循相同的结构。这可能需要大量的前期准备,这意味着结构的变化既困难又对整个系统造成破坏。
NoSQL数据库具有非结构化数据的动态模式。数据以多种方式存储,这意味着它可以是面向文档,面向列,基于图形或组织为KeyValue存储。这种灵活性意味着可以在没有首先定义结构的情况下创建文档。每个文档也可以有自己独特的结构。语法因数据库而异,您可以随时添加字段。
适用场景
适合使用 SQL 开发的项目:
数据库模式,结构可以预先规定的,或者可以相对固定的项目
要求数据一致性
具有良好的开发者经验和技术支持的标准的成熟技术
适合使用 NoSQL 开发的项目:
不相关,不确定和逐步发展的数据需求
更简单或者更宽松的能够快速开始编程的项目
速度和可扩展性至关重要的
《MySOL简介》
1.什么是数据库?
数据库,英文单词DataBase ,简称DB,是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。用于存取和管理某种数据的仓库。
2.数据库的特点
持久化存储数据:数据库本质上是一个文件系统。
方便存储和管理数据。
使用了统一的方式操作数据库:SQL语句
3.数据库软件——MySQL
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
# 1.版本问题
5.6X:使用最为广泛的稳定版本
5.7X:目前正在逐步过渡使用的版本
8.0X:最新版本 暂时不投入正常生产环境使用(其实很好用!!!)
"""
版本问题不会影响我们的学习 因为SQL语句是一样的
只不过底层有变化 目前不用考虑
"""
# 2.下载使用
官网:https://www.mysql.com/
1.点击步骤:
downloads
(GPL) Downloads
MySQL Community Server
Archives
选择版本和系统(以5.6.44为例)
点击下载对应的zip压缩包即可
讲解以windows为基准 mac和linux参考下列博客
linux:https://www.cnblogs.com/Dominic-Ji/p/15124625.html
mac:https://www.cnblogs.com/Dominic-Ji/articles/15402755.html
2.解压处理
建议压缩到D或者E、F盘的根目录方便查找
mysql-5.6.44-winx64.zip >>> mysql-5.6.44-winx64
# 3.目录结构
bin文件夹
mysqld.exe 服务端
mysql.exe 客户端
'''学习阶段服务端在本地启动即可'''
data文件夹
存放数据
my-default.ini文件
默认配置文件
README文件
说明书
《基本说明》
必须要先启动服务端 再启动客户端链接
以D:\mysql-5.6.44-winx64为例
1.以管理员身份运行cmd
切换到bin路径下
D:
cd mysql-5.6.44-winx64\bin
2.启动服务端
mysqld
# 维持cmd窗口不要关闭 重新打开一个新的cmd窗口
3.启动客户端链接服务端
先切换到bin路径下
D:
cd mysql-5.6.44-winx64\bin
然后直接输入mysql即可登录服务端
'''不带用户名和密码 是游客模式(只能体验基本功能)'''
"""
启动服务端的时候 有些同学的电脑可能会报错
解决策略
拷贝报错信息 百度搜索
mysql启动报错'错误代码'
"""
《系统服务》
1.我们不想切换路径 直接输入命令
2.我们不想自己启动服务端 设置成开机自启动(消耗的资源很少 不要担心)
# 针对第一个点的解决措施就是添加环境变量
将D:\mysql-5.6.44-winx64\bin添加到系统环境变量
# 针对第二个点的解决措施就是编写固定的指令即可
1.先确保之前测试的服务端关闭(直接点击关闭即可)
2.重新以管理员的身份打开cmd窗口
mysqld --install
# 结果大致显示: ... successfully
3.初次启动需要人为干预
net start mysql
4.关闭所有的cmd 随意打开一个cmd窗口
输入mysql即可链接到服务端
"""
如果想要移除系统服务
1.先停止服务端
net stop mysql 管理员身份运行cmd
2.移除系统服务
mysqld --remove
"""
《修改密码》
1.直接输入mysql登录
默认是游客模式 没有太多操作的权限
2.使用用户名和密码的方式登录
# 学习阶段不用考虑用户管理 直接使用root用户(管理员账号)
mysql -u用户名 -p密码
# 管理员账号登录(第一次登录 没有密码 直接回车即可)
mysql -uroot -p 直接回车
提示输入密码
3.修改管理员密码
方式1:在cmd窗口下直接修改(不要登录进去)
mysqladmin -u用户名 -p原密码 password 新密码
'''第一次无密码修改 -p后面不写即可'''
mysqladmin -uroot -padmin123 password jason123
方式2:登录状态下修改当前用户密码(先登录)
set password=PASSWORD('新密码'); # 最新版不支持
"""
如何区分当前是否是游客模式
可以执行show database;
结果如果是两条 表示是游客
结果如果是四条及以上 表示是用户
"""
《重要概念》
库 类似于 文件夹
表 类似于 文件
记录 类似于 文件中一行行数据
"""SQL语句使用分号作为结束符
show databases; 查看所有的库名称
类似于查看data文件夹内文件夹的名称
"""
操作库的基本SQL语句
# 查
show databases; # 查看所有的库名称
show create database 库名; # 指定查看某个库的信息
# 增
create database 库名;
# 改
alter database 库名 charset='gbk'; # 修改字符编码
# 删
drop database 库名;
'''以后进入公司 每个账号都会有权限管理 不可能轻易做到'''
《操作表的基本SQL语句》
"""
表是存放于库下面的 所以操作表之前 应该先确定库
如何查看当前在哪个库下
select database();
结果如果是NULL表示当前没有切换到任何库下
如何切换到指定库下
use 库名;
强调我们在操作库、表、记录的时候 MySQL默认自带的都不要动
"""
create database 库名;
use 库名;
# 查
show tables; # 查看当前库下所有的表名称
show create table 表名; # 指定查看某个表的信息
describe 表名; # 指定查看表的字段信息 简写 desc 表名;
# 增
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2
);
# 改
alter table 表名 rename 新表名; # 修改表名
# 删
drop table 表名;
《操作记录的基本SQL语句》
"""
要想操作记录 肯定得先有库和表
"""
# 查
select * from 表名; # 查看表里面所有的数据
select * from 库名.表名; # 查看指定库下面的指定表里面的所有数据
"""
有些表里面的字段太多 展示的时候会错乱 可以考虑逐行展示
select * from 库名.表名\G;
"""
select Host,User from mysql.user # 查看指定字段
# 增
insert into 表名 values(值1,值2); # 单条数据
insert into 表名 values(值1,值2),(值3,值4); # 多条数据
# 改
update 表名 set 字段=新值 where 筛选条件;
update t1 set name='jasonNB' where id=1;
'''将id是1的数据中name字段对应的值改成jasonNB'''
# 删
delete from 表名 where 筛选条件;
delete from t1 where id=3;
'''将id是3的数据删除'''
如果不加筛选条件就是删除所有的数据
单词(仅供参考)
MySQL
数据库工程师;管理;配置;实例;关系数据库
show:显示
database:数据库
data:数据
base:基础
show create database:显示创建数据库
create:创造 创建
alter database:改变数据库
alter:改变 改动 修改
select database:选择数据库
select:选择 ; 挑选 ; 选拔 ; 选定 ; 选择;
use:使用 ; 利用 ; 运用 ; 消耗
describe:描述 形容
select Host,User from mysql.user:从mysql中选择主机、用户。使用者
inster into:取而代之
inster :插入
into: 进入
delete: 删除
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下