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

一.数据库的发展史

1.文件管理系统的缺点

  1. 编写应用程序不方便
  2. 数据冗余不可避免
  3. 应用程序依赖性
  4. 不支持对文件的并发访问
  5. 数据间联系弱
  6. 难以按用户视图表示数据
  7. 无安全控制功能

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

  1. 相互关联的数据的集合
  2. 较少的数据冗余
  3. 程序与数据相互独立
  4. 保证数据的安全、可靠
  5. 最大限度地保证数据的正确性
  6. 数据可以并发使用并能同时保证一致性

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

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

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

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

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

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

1.数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。

2.数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式 及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语 义的错误数据被输入或输出。

3.数据操纵功能:包括数据查询统计和数据更新两个方面。

4.数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。

5.通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行 数据交换。

4.数据库系统发展阶段

萌芽阶段:文件系统

使用磁盘文件来存储数据

初级阶段:第一代数据库

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

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

中级阶段:第二代数据库

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

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

高级阶段:新一代数据库

“关系-对象”型数据库

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

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

  • 数据定义

  • 数据处理

  • 数据安全

  • 数据备份

6.数据库系统的架构

  • 单机架构

  • 大型主机/终端架构

  • 主从式架构(C/S)

  • 分布式架构

二.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)

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

非关系型数据库的优点:

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

常用的非关系数据库: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协议,可以免费使用与修改。

2.MySQL特点

  • 性能卓越、服务稳定

  • 开源、无版权限制、成本低

  • 多线程、多用户

  • 基于C/S (客户端/服务器)架构

  • 安全可靠

3.三大分支

  • mysql

  • mariadb

  • percona Server

4.版本演变

mysql -V
#查看MySQL版本

5.MySQL商业版与社区版

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

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

两者区别
  • 商业版组织管理与测试环节更加严格,蚍社区版更稳定

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

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

6.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++ ncurses ncurses-devel bison cmake openssl-devel

2.创建运行用户

 useradd -s /sbin/nologin  mysql

3.解压软件包并编译安装

#切换至/opt
cd /opt/
 
#解压下载好的压缩包
tar -zxf mysql-boost-5.7.44.tar.gz 
 
#切换至解压后的目录
cd mysql-5.7.44/
​
#检测环境并安装功能
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
​
#安装(时间较久
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.数据库目录进行权限调整

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"
#登录
mysql -u root -p
 
#授予root用户可以在所有终端远程登录,使用的密码是123123,并对所有数据库和所有表有操作权限
grant all privileges on *.* to 'root'@'%' identified by '123123';
 
#退出
quit

相关推荐

  1. MySQL入门篇(3)-数据库基本概念术语

    2023-12-23 18:54:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-23 18:54:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-23 18:54:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-23 18:54:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-23 18:54:03       18 阅读

热门阅读

  1. 基于量子免疫克隆算法求解背包问题 MATLAB 代码

    2023-12-23 18:54:03       37 阅读
  2. 八股文打卡day7——计算机网络(7)

    2023-12-23 18:54:03       32 阅读
  3. Ai 会替代人类工作吗?

    2023-12-23 18:54:03       31 阅读
  4. es检索之复合检索

    2023-12-23 18:54:03       37 阅读
  5. 第一个FLink程序之wordCount

    2023-12-23 18:54:03       34 阅读
  6. (黑客)自学(网络安全)

    2023-12-23 18:54:03       33 阅读
  7. Docker 学习路线:构建和优化容器镜像

    2023-12-23 18:54:03       37 阅读
  8. css 美化滚动条样式

    2023-12-23 18:54:03       46 阅读
  9. GDCM:gdcm::Object的示例程序

    2023-12-23 18:54:03       30 阅读