数据库的演变历程可以大致分为以下几个阶段:
1. 文件系统:在数据库出现之前,最早的数据存储方式是使用文件系统,每个应用程序都会独立管理自己的数据文件。
这种方式存在数据冗余、数据一致性难以维护以及数据访问困难等问题。
2. 层次数据库模型:在1960年代,出现了层次数据库模型,如IBM的IMS(Information Management System)。
层次数据库模型使用树形结构组织数据,每个节点可以包含多个子节点,但一个节点只能有一个父节点。
这种模型解决了数据冗余和一致性问题,但对于复杂的数据关系和查询操作支持有限。
3. 网状数据库模型:在1960年代末到1970年代初,出现了网状数据库模型,
如CODASYL(Conference on Data Systems Languages)网络模型。
网状数据库模型使用复杂的指针链接来表示数据之间的关系,可以更好地处理多对多的关系。
然而,这种模型复杂度高,难以维护和查询。
4. 关系数据库模型:在1970年代,由Edgar F. Codd提出的关系数据库模型成为主流。
关系数据库使用表格(关系)来组织数据,通过行和列的方式存储数据,每个表格都有一个主键来唯一标识每条记录。
关系数据库使用结构化查询语言(SQL)进行数据操作和查询。
关系数据库模型的优势在于简单性、灵活性、数据一致性和高性能。
5. 对象数据库模型:在关系数据库之后,对象数据库模型出现,它将面向对象编程的概念引入数据库系统。
对象数据库将对象作为数据库的基本单位,可以存储和操作复杂的对象结构。
对象数据库模型在某些应用领域具有优势,但在通用数据库应用中并没有取得广泛应用。
6. NoSQL数据库:随着Web应用和大数据的兴起,出现了一系列非关系型数据库(NoSQL)。
NoSQL数据库采用不同的数据存储模型,如键值对、列族、文档和图形等,以满足分布式、高性能和大规模数据存储的需求。
NoSQL数据库具有高可扩展性、灵活的数据模型和较低的维护成本,适用于特定的应用场景。
总结来说,数据库的演变历程经历了从文件系统到层次、网状、关系、对象数据库模型的演进,
以及NoSQL数据库的出现。每个阶段的数据库模型都有其特点和适用场景,数据库技术的发展不断推动着数据管理和应用的进步。
数据的发展史可以追溯到人类文明的起源。以下是数据的主要发展阶段和里程碑:
1. 原始数据:人类最早的数据形式是通过口头传统和绘画等方式记录的信息。原始数据通常以符号、图形、图表等形式呈现,记录人类活动、天文观测、贸易等。
2. 手工记录:随着文明的发展,人们开始使用更先进的工具和媒介记录数据。例如,使用刻写的石板、纸张、羊皮纸等材料记录数据。这种手工记录方式需要人工进行数据输入和存储。
3. 机械记录:随着工业革命的到来,机械设备被广泛应用于数据处理。例如,打字机、算盘等机械设备使得数据记录和计算更加高效和准确。
4. 电子计算机:20世纪40年代,电子计算机的出现引领了数据处理和存储的革命。电子计算机可以处理大量数据,使用磁带、磁盘等介质存储数据。数据可以以数字形式进行输入、处理和输出。
5. 数据库系统:随着计算机技术的进一步发展,数据库系统成为数据管理的重要工具。数据库系统可以集中存储、组织和管理大量的数据,通过数据库管理系统(DBMS)进行数据的访问、查询和操作。关系数据库、面向对象数据库、NoSQL数据库等不同类型的数据库系统相继出现。
6. 云计算和大数据:近年来,云计算和大数据技术的兴起推动了数据的新发展。云计算提供了弹性、可扩展的数据存储和处理能力,使得数据可以更加灵活地进行存储和分析。大数据技术则使得处理海量数据成为可能,通过分布式计算和数据挖掘等方法提取有价值的信息。
7. 数据科学和人工智能:数据科学和人工智能的发展进一步提升了数据的价值和应用。通过数据分析、机器学习和人工智能技术,可以从数据中发现模式、进行预测和决策,推动了各个领域的创新和进步。
总结来说,数据的发展史经历了从原始数据到手工记录、机械记录、电子计算机、数据库系统、云计算和大数据的演进。随着技术的不断进步,数据的规模、存储方式和处理能力得到了极大的提升,数据在现代社会中扮演着至关重要的角色。
数据库可以按照不同的标准进行分类。以下是数据库的一些常见分类方式:
1. 关系数据库(Relational Database):关系数据库是使用关系模型来组织数据的数据库。
数据以表格的形式呈现,表格由行和列组成,每个表格都有一个主键来唯一标识每条记录。
关系数据库使用结构化查询语言(SQL)进行数据操作和查询,最常见的关系数据库是Oracle、MySQL、PostgreSQL和SQL Server等。
2. 非关系数据库(Non-Relational Database)或NoSQL数据库:非关系数据库是一种不使用关系模型的数据库,
采用不同的数据存储模型。这些模型包括键值对(Key-Value)、列族(Column Family)、文档(Document)和图形(Graph)等。
非关系数据库主要用于大规模和分布式数据存储、高性能和高可扩展性的应用,常见的NoSQL数据库有MongoDB、Redis、Cassandra和Neo4j等。
3. 数据仓库(Data Warehouse):数据仓库是一种用于集成、存储和分析大量历史数据的数据库。
数据仓库主要用于决策支持和业务智能,通过将来自不同数据源的数据进行提取、转换和加载(ETL),
形成一种面向主题的、一致的数据视图,方便用户进行复杂的数据分析和查询。
4. 内存数据库(In-Memory Database):内存数据库是将数据存储在主内存中的数据库,
相对于磁盘或固态硬盘,主内存的读写速度更快,能够提供更高的性能。
内存数据库常用于需要快速响应和处理大量并发请求的应用,例如高频交易系统、实时数据分析和缓存等。
5. 分布式数据库(Distributed Database):分布式数据库是将数据分布在多个物理节点上的数据库系统,
具有横向扩展性和高可用性。分布式数据库可以通过数据分片、复制和分布式事务等技术来实现数据的分布和管理,
常用于大规模和高负载的应用环境。
6. 对象数据库(Object Database):对象数据库是一种以对象为基本单位的数据库,
将面向对象编程的概念引入数据存储和管理中。对象数据库可以存储和操作复杂的对象结构,
支持对象之间的继承、多态和关联关系,常用于面向对象的应用开发。
这些是数据库的一些常见分类方式,不同类型的数据库适用于不同的应用场景和需求。
根据具体的业务需求和性能要求,选择合适的数据库类型非常重要。
1、关系型数据
MySQL、Oracle、SQLserver、DB2、sqllite、access、MariaDB等
MySQL数据库:开源的
MariaDB
Oracle:收费的
"""以上两款数据库是同一个作者"""
2、非关系型数据库
Redis(缓存数据库)、memcache(缓存数据库)、mongoDB(爬虫等)
"""Redis数据库是目前市面上使用最多的"""
Redis数据库把memcache淘汰了,没有用memcache(老项目之前用的,现在没有更换,还再用)
Redis能做的事情,memcache不能做
memcache不能做的使用,Redis都能做
Redis支持的数据类型要不memcache多的多
二者的特点:
1. 关系型数据库顾名思义就是可以建立关系
拥有固定的表结构,表与表之间可以建立表关系
2. 非关系型数据不能够建立表关系
它是以K:v键值对的形式存在的
压根就没有表的概念
本质:其实是一款C/S架构的软件
C/S架构的软件必须是有客户端和服务端的,理论上来说,我们自己也能够开发出一款数据库软件,只不过你开发的数据库软件是没有人使用的,除非你自己自嗨。
数据库的本质是一个用于存储、管理和组织数据的系统。它是一个结构化的数据集合,用于持久化地存储和操作大量的数据。数据库的本质可以从以下几个方面来理解:
1. 数据存储:数据库用于存储数据,包括结构化数据(如关系数据库中的表格)、非结构化数据(如文档、图片、音频等)
或半结构化数据(如XML、JSON等)。数据库提供了持久化的存储方式,确保数据在系统关闭或断电后仍然可用。
2. 数据管理:数据库提供了一套机制和工具,用于管理数据的创建、读取、更新和删除(CRUD)。通过数据库管理系统(DBMS),
用户可以定义数据模型、设置数据约束、编写查询语言以及进行事务管理等操作,以便有效地管理和操作数据。
3. 数据组织:数据库以一种结构化的方式组织数据,例如关系数据库使用表格和关系模型来组织数据。
数据组织使得数据具有良好的结构和关联性,便于数据的查询、分析和处理。
4. 数据共享和访问控制:数据库提供了对数据的共享和访问控制机制,以确保数据的安全性和隐私保护。
通过数据库权限和角色管理,可以控制用户对数据的访问权限,并提供了并发控制机制,确保多个用户或应用程序可以同时访问数据而不会产生冲突。
5. 数据一致性和完整性:数据库通过实施数据一致性和完整性规则,确保存储的数据满足预定义的约束和规范。
例如,数据库可以通过主键、唯一性约束、外键关联和触发器等机制来保持数据的一致性和完整性。
总的来说,数据库的本质是一个数据管理系统,提供数据的存储、管理、组织和访问控制等功能。
它是现代应用开发和数据处理的核心组件,广泛应用于各种领域,包括企业管理、电子商务、科学研究、金融、医疗等。
SQL(Structured Query Language)和NoSQL(Not Only SQL)是两种不同类型的数据库技术,它们的由来和发展可以简要描述如下:
SQL的由来:
SQL起源于20世纪70年代,最早由IBM的Edgar F. Codd提出,其目标是设计一种用于关系数据库的数据操作语言。
Codd提出了关系模型的概念,将数据组织成表格的形式,并提出了一种用于查询和操作关系数据库的标准化语言,
即SQL。SQL在1986年成为ANSI标准,后来也被ISO接受为国际标准。SQL技术发展迅速,成为主流的关系数据库管理系统(RDBMS)的标准查询语言。
NoSQL的由来:
NoSQL数据库的出现是为了应对新兴的应用需求和大规模数据处理的挑战。在互联网时代,数据量不断增长,
传统的关系数据库在处理大规模数据和高并发访问方面面临一些限制。因此,NoSQL技术应运而生。
NoSQL的概念最早由Ravishankar G. Vallabhajosyula于1998年提出,意味着“非仅仅是SQL”。
NoSQL数据库放宽了对数据模型和存储结构的限制,以提供更高的性能、可伸缩性和灵活性。
NoSQL数据库可以采用键值对、文档、列族、图形等不同的数据模型,并在数据存储和查询方面提供了更多的选择。
总结来说,SQL作为传统的关系型数据库技术,起源于20世纪70年代,采用关系模型和标准化的SQL语言进行数据管理。
而NoSQL作为针对大规模数据和新兴应用需求的新型数据库技术,提供了更多的数据模型和灵活性,
用于解决关系型数据库在大数据处理方面的局限性。SQL和NoSQL在不同的应用场景中各有优劣,可以根据具体的需求选择合适的数据库技术。
版本的介绍
MySQL5.0 (版本不稳定)
MySQL5.5 (用的很少,老项目还再用)
MySQL5.6 (老项目用的比较多,版本很稳定)
MySQL5.7 (新项目在选择数据库的时候,使用的就是这个版本了)
MySQL8.0 (最新版本,现在生产环境用的还不是很多)
"""在IT领域,生产环境尽量不要使用最新版本,因为,新版本毕竟没有经过大量的测试,不够稳定"""
MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,后被Sun Microsystems(现为Oracle Corporation)收购。MySQL以其高性能、可靠性和易用性而受到广泛应用。
以下是MySQL的一些特点和优势:
1. 开源性:MySQL是一款开源数据库,可以免费获取和使用,并且有一个活跃的开源社区,提供技术支持和持续的更新。
2. 关系型数据库:MySQL是一种关系型数据库,采用表格的形式来组织数据。它支持SQL语言,可用于创建、查询、更新和管理数据库中的数据。
3. 跨平台性:MySQL可在多个操作系统上运行,包括Windows、Linux、macOS等,使其在不同的环境下具有广泛的兼容性。
4. 高性能:MySQL具有出色的性能特点,可以处理大量的并发请求和高负载的数据访问。它支持多线程处理,具有高效的查询和索引机制。
5. 可扩展性:MySQL提供了多种扩展和复制机制,允许用户在需要时扩展数据库的容量和性能。它支持主从复制、分区和集群等技术,以实现高可用性和负载均衡。
6. 安全性:MySQL提供了强大的安全功能,包括用户权限管理、数据加密、安全连接等,以保护数据的机密性和完整性。
7. 大型社区支持:MySQL拥有庞大的用户和开发者社区,用户可以从社区中获取技术支持、教程和扩展模块等资源。
MySQL广泛应用于各个领域,包括网站开发、企业应用、电子商务、数据分析和嵌入式系统等。它被许多知名公司和组织使用,如Facebook、Twitter、YouTube、亚马逊等。MySQL的成功在于其稳定性、性能和开放性,使得它成为最受欢迎的关系型数据库之一。
要卸载MySQL,需要根据操作系统的不同执行相应的步骤。下面是一些常见操作系统上卸载MySQL的方法:
1. Windows 上的卸载:
- 使用控制面板卸载程序:
- 打开控制面板,选择 "程序" 或 "程序和功能"。
- 在应用程序列表中找到 "MySQL" 或 "MySQL Server",右键点击选择 "卸载"。
- 按照提示完成卸载过程。
- 手动删除 MySQL 文件夹:
- 关闭 MySQL 服务,可以在服务列表中停止 "MySQL" 或 "MySQL Server"。
- 删除 MySQL 安装文件夹,通常位于 "C:\Program Files\MySQL" 或 "C:\Program Files (x86)\MySQL"。
- 删除 MySQL 数据文件夹,通常位于 "C:\ProgramData\MySQL" 或 "C:\Documents and Settings\All Users\Application Data\MySQL"。
- 删除 MySQL 配置文件,通常位于 "C:\ProgramData\MySQL" 或 "C:\Documents and Settings\All Users\Application Data\MySQL"。
2. macOS 上的卸载:
- 使用终端命令卸载:
- 打开终端应用程序。
- 执行以下命令卸载 MySQL:
```shell
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/MySQL*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
```
- 删除 MySQL 数据文件夹,通常位于 "/usr/local/mysql/data"。
- 删除任何其他 MySQL 安装相关的文件或文件夹。
3. Linux 上的卸载:
- 使用包管理器卸载:
- 打开终端。
- 根据所使用的 Linux 发行版执行相应的命令:
- Debian/Ubuntu:
```shell
sudo apt-get remove mysql-server
sudo apt-get autoremove
sudo apt-get purge mysql-server
```
- Red Hat/CentOS:
```shell
sudo yum remove mysql-server
sudo yum autoremove
sudo yum purge mysql-server
```
- 删除 MySQL 数据文件夹,通常位于 "/var/lib/mysql"。
- 删除任何其他 MySQL 安装相关的文件或文件夹。
请注意,在执行卸载操作之前,最好备份重要的数据库和配置文件,以防止数据丢失或配置丢失。
以上是一些常见的卸载 MySQL 的步骤,具体步骤可能因操作系统版本、安装方式和个人设置而有所不同。建议参考相关操作系统和 MySQL 官方文档进行卸载操作。
MySQL5.6-----》国外的------》进入网站很慢
1. 直接取官网取下载相应的安装包:https://downloads.mysql.com/archives/community/
Threads----->facebook------>24h注册用户500万----->insstram
2. 下载完成之后,如何使用?
下载之后是一个压缩包,解压完成即可
3. MySQL的主要文件介绍
bin: 存放mysql的一些启动文件
mysql.exe : MySQL自带的客户端
mysqld.exe:MySQL自带的服务端
data:mysql数据的存储文件夹
my-default.ini:MySQL的配置文件
README:MySQL的说明文件
4. MySQL如何启动
"""由于MySQL是有客户端和服务端的,因此,我们要启动服务端和客户端来使用"""
1. 记住一定是先启动服务端:mysqld.exe
2. 然后启动客户端去连接服务端
如何启动:
1. 先切换路径到bin目录下
打开cmd----->输入mysqld启动服务端----->在打开一个cmd窗口---->输入mysql连接服务的
2. 客户端连接上服务端之后,如何退出客户端:
exit
3. 服务端启动之后,如何终止(停掉)服务端
ctrl + C
"""
localhost:代表的就是本机
127.0.0.1:代表的也是本机
某些情况下,这两个是有区别
"""
5. 加入环境变量
D:\mysql-5.6.45-winx64\bin加入到环境变量中,达到在任何位置都可以找到服务端和客户端程序
6. 系统服务制作
1. 先打开cmd窗口
mysqld --install # Service successfully installed
第一次安装成功,需要手动启动一次
2. 如何启动服务
1. 鼠标点击启动按钮
2. net start mysql
3. 如何关闭服务
1. 鼠标点击启动按钮
2. net stop mysql
4. 如何卸载MySQL服务
mysqld --remove
"""以上操作都需要管理员权限"""
7. 卸载MySQL
1. 先卸载服务
2. 在关闭服务端
3. 直接删除MySQL的文件夹
登录MySQL
1. 游客模式登录:mysql
但是,功能很少,权限很低
2. 管理员登录:mysql -u root -p 直接回车就登录成功了
3. 如果你连接的是别人电脑上的数据库,需要指定ip和port
mysql -h 127.0.0.1 -P 3306 -u root -p 123
4. 给管理员设置密码
mysqladmin -u root -p 旧密码 password 新密码
5. 如果密码忘记了怎么办?
"""使用跳过授权表的形式"""
1. 先把服务端关闭
2. 使用'跳过授权表'的形式启动服务端
mysqld 不'跳过授权表'
mysqld --skip-grant-table '跳过授权表'
"""跳过授权表的意思是:客户端在连接服务端的时候,不需要验证密码了,直接登录成功"""
3. 再次使用管理员账号来登录进去,就不需要密码了
进入mysSQL之后,需要修改密码
update mysql.user set password=password('root') where Host='localhost' and User='root';
刷新权限
flush privileges;
退出客户端
退出服务端
4. 改完之后,一定要终止服务端,从新不跳过授权表,启动服务端,再次使用管理员登录即可
mysql的默认配置文件:my-default.ini
配置文件有什么用?
修改字符编码
在my.ini中输入一下内容
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
以后只要配置文件发生了改变,一定要重启服务端,配置文件才生效
\s 是输出一些MySQL的基本信息
在关系型数据库中,数据的组织方式主要涉及库(Database)、表(Table)和记录(Record)的概念:
1. 库(Database):库是数据库的最顶层单位,用于组织和管理相关的数据。
一个数据库可以包含多个表和其他相关对象,用于存储和管理不同类型的数据。
2. 表(Table):表是数据库中的基本数据组织单位,用于存储具有相同结构的数据。
表由行(Row)和列(Column)组成,类似于电子表格中的数据结构。每一列代表特定的数据属性,而每一行代表一个数据记录。
3. 记录(Record):记录是表中的单个数据行,包含多个字段的值。
每一条记录代表着一组相关的数据,可以视为表中的一个实体或一个具体的数据实例。
举例来说,考虑一个名为"users"的表,用于存储用户信息,它可能包含以下字段:
id、name、email、age等。每一行代表一个用户的记录,每个字段存储相应用户的属性值。
库、表和记录是关系型数据库中的核心概念,用于组织、存储和检索数据。通过使用这些概念,
可以有效地组织和管理大量的结构化数据,并通过SQL查询语言进行灵活的数据操作。
在数据库中,有一些常见的命名规范和约定,用于标识数据库对象(如库、表、列、索引等)。以下是一些常见的数据库相关命名约定:
1. 库(Database)命名:
- 使用有意义的名称来描述库的用途或内容。
- 避免使用特殊字符和空格。
- 使用下划线或驼峰命名法(如my_database或MyDatabase)。
2. 表(Table)命名:
- 使用单数或复数名词来表示表中的实体。
- 使用下划线或驼峰命名法。
- 避免使用关键字作为表名。
- 使用描述性的名称来表示表的内容。
3. 列(Column)命名:
- 使用描述性的名称来表示列的含义或内容。
- 使用小写字母和下划线,避免使用特殊字符和空格。
- 避免使用保留字或关键字作为列名。
4. 主键(Primary Key)命名:
- 命名规范类似于列命名。
- 使用明确的名称来表示主键的作用和含义。
5. 外键(Foreign Key)命名:
- 命名规范类似于列命名。
- 使用明确的名称来表示外键与其他表之间的关系。
6. 索引(Index)命名:
- 使用明确的名称来表示索引的作用和含义。
- 命名规范类似于列命名。
7. 存储过程(Stored Procedure)和函数(Function)命名:
- 使用有意义的名称来描述存储过程或函数的功能。
- 使用下划线或驼峰命名法。
8. 触发器(Trigger)命名:
- 使用有意义的名称来描述触发器的作用和含义。
- 使用下划线或驼峰命名法。
9. 视图(View)命名:
- 使用有意义的名称来描述视图的内容和用途。
- 使用下划线或驼峰命名法。
在命名数据库相关对象时,一致性和可读性是重要的考虑因素。选择清晰、有意义的命名可以提高代码的可维护性和可理解性,有助于团队合作和日后的维护工作。另外,还应遵循所使用的数据库系统的命名规范和最佳实践。
在数据库中,有许多常用的命令用于管理和操作数据库。以下是一些常见的数据库相关命令:
创建数据库:
CREATE DATABASE database_name;
删除数据库:
DROP DATABASE database_name;
切换到特定数据库:
USE database_name;
创建表:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
);
删除表:
DROP TABLE table_name;
查询表中的数据:
SELECT * FROM table_name;
插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
更新数据:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
删除数据:
DELETE FROM table_name WHERE condition;
查询数据:
SELECT column1, column2, ... FROM table_name WHERE condition;
创建索引:
CREATE INDEX index_name ON table_name (column1, column2, ...);
删除索引:
DROP INDEX index_name ON table_name;
创建视图:
CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;
创建存储过程:
CREATE PROCEDURE procedure_name (parameters)
BEGIN
-- 存储过程的代码逻辑
END;
调用存储过程:
CALL procedure_name(parameters);
以上只是一些常见的数据库相关命令示例,实际的使用可能因不同的数据库管理系统和具体的需求而有所不同。请参考所使用的数据库系统的文档和参考资料,以获取更详细的命令和语法说明。