【一】MySQL数据库之引入
【一】数据库管理软件的由来
-
基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上。
-
如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题。
-
很不幸,这些假设都是你自己想象出来的,上述假设存在以下几个问题
【1】程序所有的组件就不可能运行在一台机器上
- 因为这台机器一旦崩溃则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件
- 而一台机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。
- 于是我们只能通过水平扩展来增强我们系统的整体性能
- 这就需要我们将程序的各个组件分布于多台机器去执行。
【2】数据安全问题
- 根据1.1中的描述,我们将程序的各个组件分布到各台机器
- 但需知各组件仍然是一个整体
- 言外之意,所有组件的数据还是要共享的。
- 但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。
- 于是我们想到了将数据与应用程序分离:
- 把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现)
- 即共享这台机器上的文件
- 共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。
【3】并发
- 根据上述的描述
- 我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件
- 然后写一个socket客户端,完成如下功能:
1.远程连接(支持并发)
2.打开文件
3.读写(加锁)
4.关闭文件
【4】总结
- 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序)
- 于是有人将此类程序写成一个专门的处理软件,这就是MySQL等数据库管理软件的由来
- 但MySQL解决的不仅仅是数据共享的问题
- 还有查询效率,安全性等一系列问题
- 总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。
【二】数据库概述
【1】什么是数据(Data)
- 描述事物的符号记录称为数据
- 描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等
- 数据由多种表现形式,它们都可以经过数字化后存入计算机
- 在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,如:
dream,male,18,2001,北京,计算机系,2023,school
- 单纯的一条记录并没有任何意义
- 如果我们按逗号作为分隔
- 依次定义各个字段的意思
- 相当于定义表的标题
# 字段
name, sex,age,birth,born,addr,major,entrance_time,school
# 记录
dream,male,18,2001,北京,计算机系,2023,school
【2】什么是数据库(Database,简称DB)
- 数据库即存放数据的仓库
- 只不过这个仓库是在计算机存储设备上
- 而且数据是按一定的格式存放的
- 过去人们将数据存放在文件柜里
- 现在数据量庞大,已经不再适用
- 数据库是长期存放在计算机内、有组织、可共享的数据即可。
- 数据库中的数据按一定的数据模型组织、描述和储存
- 具有较小的冗余度、较高的数据独立性和易扩展性
- 并可为各种 用户共享
【3】什么是数据库管理系统(Database Management System 简称DBMS)
- 在了解了Data与DB的概念后
- 如何科学地组织和存储数据
- 如何高效获取和维护数据成了关键
- 这就用到了一个系统软件—数据库管理系统
- 如MySQL、Oracle、SQLite、Access、MS SQL Server
- MySQL主要用于大型门户,它主要的优势就是开放源代码
- 因为开放源代码,这个数据库是免费的
- 他现在是甲骨文公司的产品。
- oracle主要用于银行、铁路、飞机场等。
- 该数据库功能强大,软件费用高。
- 也是甲骨文公司的产品。
- SQL server是微软公司的产品
- 主要应用于大中型企业,如联想、方正等。
【4】数据库服务器、数据管理系统、数据库、表与记录的关系(重点)
记录:1 张三 324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)
- 表:
- student,school,class_list(即文件)
- 数据库:
- oldboy_stu(即文件夹)
- 数据库管理系统:
- 如MySQL(是一个软件)
- 数据库服务器:
- 一台计算机(对内存要求比较高)
总结:
数据库服务器 | 运行数据库管理软件 |
---|---|
数据库管理软件 | 管理数据库 |
数据库 | 文件夹,用来组织文件/表 |
表 | 即文件,用来存放多行内容/多条记录 |
【三】MySQL介绍
- MySQL是一个关系型数据库管理系统
- 由瑞典MySQL AB 公司开发
- 目前属于 Oracle 旗下公司。
- MySQL 最流行的关系型数据库管理系统
- 在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System
- 关系数据库管理系统) 应用软件之一。
【四】MySQL是什么
MySQL就是一个基于socket编写的C/S架构的软件
- 客户端软件
- MySQL自带:
- 如MySQL命令,MySQL dump命令等
- python模块:
- 如pymysql
- MySQL自带:
数据库管理软件分类
- 分两大类:
- 关系型:
- 如sqllite,db2,oracle,access,sql server,MySQL
- 注意:sql语句通用
- 非关系型:
- mongodb,redis,memcached
- 关系型:
关系型数据库与非关系型数据库的联系
- 关系型数据库需要有表结构
- 非关系型数据库是key-value存储的,没有表结构