数据库基本概念与安装MySQL数据库

目录

一.数据库的发展史

1.文件管理系统的缺点

2.数据库管理系统DBMS的优点

3.数据库管理系统(DBMS)

4.数据库系统发展阶段

5.数据库管理系统的基本功能

6.数据库系统的架构

7.数据库管理系统分类

7.1 层次数据库

7.2 网状数据库

7.3 RDBMS 关系型数据库

二.RDBMS 关系型数据库基本介绍

1.关系统型数据库相关概念

2.常用关系数据库

3.关系型数据库三要素

4.关系型数据库与非关系型数据库

4.1 关系型数据库

4.2 非关系型数据库

4.3 关系型数据库和非关系型数据库对比

三.数据库的基本概念

1.数据

2.表

3.数据库

4.访问数据库的流程

四.MySQL数据库介绍

1.MySQL数据库是什么?

2.三大分支

3.版本演变

4.商业版和社区版

5.MySQL的组成

五.编译安装MySQL数据库

六.yum安装5.7版MySQL数据库

七.配置MySQL数据库的Tab补全 

1.yum安装的自动补全

2.安装mycli 插件


一.数据库的发展史

1.文件管理系统的缺点

编写应用程序不方便

数据冗余不可避免

应用程序依赖性

不支持对文件的并发访问

数据间联系弱

难以按用户视图表示数据

无安全控制功能

2.数据库管理系统DBMS的优点

相互关联的数据的集合

较少的数据冗余

程序与数据相互独立

保证数据的安全、可靠

最大限度地保证数据的正确性

数据可以并发使用并能同时保证一致性

使用数据库的必要性总结:

使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。 数据库具有以下特点。

  • 可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。
  • 可以有效地保持数据信息的一致性、完整性,降低数据冗余。
  • 可以满足应用的共享和安全方面的要求。

数据库技术是计算机科学的核心技术之一,具有完备的理论基础。对数据库基本概念的掌握,将有助于对数据库的理解。

3.数据库管理系统(DBMS)

数据库管理系统(Database Management System,DBMS)是实现对数据库资源有效组织、 管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。DBMS 主 要包括以下功能。

  • 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。
  • 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式 及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语 义的错误数据被输入或输出。
  • 数据操纵功能:包括数据查询统计和数据更新两个方面。
  • 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。
  • 通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行 数据交换。

4.数据库系统发展阶段

萌芽阶段:文件系统

使用磁盘文件来存储数据

初级阶段:第一代数据库

出现了网状模型、层次模型的数据库

  • 自20世纪60年代起,第一代数据库系统问世
  • 是层次模型与网状模型的数据库系统
  • 为统一管理和共享数据提供了有力的支撑

中级阶段:第二代数据库

关系型数据库和结构化查询语言

  • 20世纪70年代初,第二代数据库——关系数据库开始出现
  • 20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
  • 到目前为止,关系数据库系统仍占领数据库应用的主要地位

高级阶段:新一代数据库

“关系-对象”型数据库

  • 自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现
  • 面向对象的数据库系统,实用性强、适应面广
  • 20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面
  • 一些新的元素被添加进主流数据库系统中。例如,Oracle支持的“关系-对象”数据库模型

5.数据库管理系统的基本功能

  • 数据定义

  • 数据处理

  • 数据安全

  • 数据备份

6.数据库系统的架构

  • 单机架构

  • 大型主机/终端架构

  • 主从式架构(C/S)

  • 分布式架构

7.数据库管理系统分类

7.1 层次数据库

层次模型数据库系统是最早研制成功的数据库系统,这种数据库最成功的典型是IMS。

IMS的全称时Information Management System,由IBM公司研制成功。

IMS于1969年投入运行,最早的版本有IMS/360-1和IMS/360-2。较近的版本有IMS/VS DL/1,它是在操作系统DOS/VS(Disk Operation System/Virtual Storage)支持下运行。

7.2 网状数据库

网状数据库是采用网状原理和方法,以网状数据模型为基础建立的数据库。一般是指由网状数据库管理系统产生的网状数据库系统。网状数据模型是以记录类型为结点的网络结构,即一个结点可以有一个或多个下级结点,也可以有一个或多个上级结点,两个结点之间甚至可以有多种联系。

例如“教师”与“课程”两个记录类型,可以有“任课”和“辅导”两种联系,称之为复合链。两个记录类型之间的值可以是多对多的联系,例如一门课程被多个学生修读,一个学生选修多门课程。

7.3 RDBMS 关系型数据库

Relational Database Management System,关系模型最初由IBM公司的英国计算机科学家埃德加·科德(Edgar F. Codd)于1969年描述,1974年,IBM开始开发系统R,这是一个开发RDBMS原型的研究项目。然而,第一个商业上可用的RDBMS是甲骨文,于1979年由关系软件(现为甲骨文公司)发布。

二.RDBMS 关系型数据库基本介绍

1.关系统型数据库相关概念

  • 关系Relational :关系就是二维表,其中:表中的行、列次序并不重要

  • row:表中的每一行,又称为一条记录record

  • column:表中的每一列,称为属性,字段,域field

  • 主键Primary key:PK , 用于惟一确定一个记录的字段,一张表只有一个主键

  • domain:属性的取值范围,如,性别只能是'男'和'女'两个值,人类的年龄只能0-150

2.常用关系数据库

MySQL(甲骨文公司收购)

  • 免费、开源、体积小

SQL Server(微软公司产品)

  • 面向Windows操作系统
  • 简单、易用

Oracle(甲骨文公司产品)

  • 面向所有主流平台
  • 安全、完善,操作复杂

DB2(IBM公司产品)

  • 面向所有主流平台
  • 大型、安全、完善

PostgreSQL(加州大学计算机系开发的POSTGRES)

  • 简称为pgsql,EnterpriseDB

3.关系型数据库三要素

实体:也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”

如银行客户、银行账户等

属性:实体所具有的某一特性,一个实体可以有多个属性

如“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性

联系:实体集之间的对应关系称为联系,也称为关系

如银行客户和银行账户之间存在“储蓄”的关系

4.关系型数据库与非关系型数据库

4.1 关系型数据库

  • 关系数据库系统是基于关系模型的数据库系统
  • 关系模型的数据结构使用简单易懂的二维数据表
  • 关系模型可用简单的“实体-关系”(E-R)图来表示
  • E-R图中包含了实体(数据对象)、关系和属性三个要素

关系型数据库的存储结构是二维表格

在每个二维表中

每一行称为一条记录,用来描述一个对象的信息

每一列称为一个字段,用来描述对象的一个属性

4.2 非关系型数据库

非关系数据库也被称作NoSQL(Not Only SQL)

存储数据不以关系模型为依据,不需要固定的表格式

非关系型数据库的优点

  • 数据库可高并发读写
  • 对海量数据高效率存储与访问
  • 数据库具有高扩展性与高可用性

常用的非关系数据库:Redis、mongoDB等

4.3 关系型数据库和非关系型数据库对比

关系数据库: 关系数据库结构是二维数据库表,二维表当中每个字段(列)用来描述对象的一个属性, 每个记录(行)用来描述一个对象的信息(完整信息),关系数据库写到哪里也就是存储在硬盘当中 读写系统就会受到的IO限制或者瓶颈

其他 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织 

优点: 

1、易于维护:都是使用表结构,格式一致; 2、使用方便:SQL语言通用,可用于复杂查询; 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 

缺点: 

1、读写性能比较差,尤其是海量数据的高效率读写; 2、固定的表结构,灵活度稍欠; 3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

缓存加速软件 非关系型数据库(NoSQL): MongoDB 、 Redis(内存数据库/缓存数据库)K-V键值对、与之类似的Memcache,K-V键值对 redis-memecache对比: 相同点:存储高热数据(在内存中高速运行) 不同点:redis可以做持久化保存,可以存储对象

非关系型数据库:严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点:

1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、 图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。 2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘; 3、高扩展性与高可用性; 4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:

1、不提供sql支持,学习和使用成本较高; 2、无事务处理; 3、数据结构相对复杂,复杂查询方面稍欠。

三.数据库的基本概念

1.数据

  • 描述事物的符号记录

  • 包括数字,文字、图形、图像、声音、档案记录等

  • 以“记录”形式按统一的格式进行存储

2.表

  • 将不同的记录组织在一起

  • 用来存储具体数据

3.数据库

  • 表的集合,是存储数据的仓库

  • 以一定的组织方式存储的相互有关的数据集合

4.访问数据库的流程

过程:

  1. 应用程序把查询SQL语句发给服务器端执行。

  2. 服务器解析请求的SQL语句。

  3. 语句执行。

PS:

  1. 确保SQL语法正确;

  2. 确保SQL语义上的正确性即对象是否存在;

  3. 数据库用户是否具有相应的访问权限。

四.MySQL数据库介绍

1.MySQL数据库是什么?

一款深受欢迎的开源关系型数据库,Oracle旗下的产品,遵守GPL协议,可以免费使用与修改。

官网:MySQL

特点:

  • 性能卓越、服务稳定
  • 开源、无版权限制、成本低
  • 多线程、多用户
  • 基于C/S(客户端/服务器)架构
  • 安全可靠

2.三大分支

  • mysql

  • mariadb

  • percona Server

3.版本演变

mysql -V
#查看MySQL版本

MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 --->8.0

第一阵营:5.0-5.1阵营,可说是早期产品的延续
第二阵营:5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能
第三阵营:6.0-7.1阵营,就是MySQL Cluster版本, 为适应新时代对数据库的集群需求而开发

MariaDB:5.1 --> 5.5 --> 10.0--> 10.1 --> 10.2 --> 10.3 --> 10.4 --> 10.5

MySQL被Sun收购后,搞了个过渡的6.0版本,没多久就下线了,后来被Oracle收购后,终于迎来了像样的5.6版本,之后就是5.7、8.0版本。由于6.0版本号已被用过,7.x系列版本专用于NDB Cluster,因而新版本号从8.0开始

4.商业版和社区版

MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用

MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用

区别:

商业版组织管理与测试环节更加严格,会比社区版更稳定

商业版不遵守GPL,社区版遵从GPL可以免费使用

商业版可获得7*24小时的服务,社区版则没有

5.MySQL的组成

客户端程序

  • mysql: 交互式的CLI工具

  • mysqladmin:基于mysql协议管理mysqld

  • mysqlimport:数据导入工具

    MyISAM存储引擎的管理工具:

  • myisamchk:检查MyISAM库

  • myisampack:打包MyISAM表,只读

服务器端程序

  • mysqld_safe

  • mysqld

  • mysqld_multi 多实例 ,示例:mysqld_multi

五.编译安装MySQL数据库

1.安装相关依赖包

yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel   ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel

2.下载并压缩源码包

#切换目录,上传压缩包
cd /opt
rz -E

#解压
tar xf  mysql-boost-5.7.20.tar.gz

3.编译安装 

1. #切换目录
cd mysql-5.7.20/

2. #编译
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

3. #安装
make -j2 && make install

#############模块解释#####################
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \
#指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \
#指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定数据库文件的存储路径
-DWITH_BOOST=boost \
#指定boost的路径,
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件

4.数据库目录进行权限调整、改变属主属组

useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

5.调整配置文件

vim /etc/my.cnf
--------------------------内容如下
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

6.设置环境变量

#配置环境变量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile

#刷新
source /etc/profile

#查看是否成功
echo $PATH

7.初始化数据库

#切换目录
cd /usr/local/mysql/

#初始化
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

8.数据库开启自启、关闭、状态

systemctl enable mysqld        #设置开机自启
systemctl start mysqld         #开启
systemctl stop mysqld          #关闭
systemctl start mysqld         #开启
systemctl status mysqld        #查看状态
ss -anpt | grep 3306           #过滤端口验证是否开启

9.设置MySQL密码

#修改密码为123123 开始初始密码为空  回车即可
mysqladmin -u root -p password "123123"

10.登录、登出MySQL 

#登录
mysql -u root -p

#授予root用户可以在所有终端远程登录,使用的密码是123123,并对所有数据库和所有表有操作权限
grant all privileges on *.* to 'root'@'%' identified by '123123';

#退出
quit

六.yum安装5.7版MySQL数据库

1. #创建mysql源
cd /etc/yum.repos.d/
vim mysql.repo
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
 
2. #安装服务mysql-community-server
yum install mysql-community-server -y 
 
3. #启动服务
systemctl start mysqld
ss -ntap |grep 3306
 
4. #登入数据库,但是密码是默认的,需要查看
mysql -u root -p
grep password /var/log/mysqld.log
mysql -u root -p'默认的密码'
#特殊符号用单引号引起来
 
5. #登入数据库后必须修改密码
alter user root@'localhost' identified by 'Zhuo@123';
#alter user root@'主机名' identified by '新密码';
 
#可以使用mysql> \h查看帮助

七.配置MySQL数据库的Tab补全 

1.yum安装的自动补全

yum安装可以 编译安装有问题(#自动补全 只能补全敲过的命令)

vim /etc/my.cnf
--------------------添加
[mysql]
prompt=(mysql) [\\d]>\\_
auto-rehash

2.安装mycli 插件

需要先修改配置文件安装自动补全功能

vim /etc/my.cnf
--------------------添加
[mysql]
prompt=(mysql) [\\d]>\\_
auto-rehash

1. #安装依赖包
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

2. #压缩安装包
cd /opt
rz -E
tar zxvf Python-3.7.7_.tgz

3 #切换目录编译安装
cd Python-3.7.7/
./configure --prefix=/usr/local/Python-3.7.7/
make -j2 && make install

4. #做软链接
ln -s  /usr/local/Python-3.7.7/bin/python3.7  /usr/bin/python37
ln -s /usr/local/Python-3.7.7/bin/pip3.7 /usr/bin/pip37
pip37 install mycli -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
ln -s /usr/local/Python-3.7.7/bin/mycli /usr/bin/mycli

5. #登录
mycli -u root -p 123123

 

猜你喜欢

转载自blog.csdn.net/ZHUZIH6/article/details/129813956