什么是数据库?
将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合
数据库是存储、管理和操作组织化数据的软件系统
数据库能干什么?
企业应用 | 存放用户数据、管理企业数据 |
金融行业 | 存储分析客户的财务数据 |
电子商务 | 存储产品信息、订单信息等 |
社交媒体 | 存储社交消息数据 |
物联网 | 物联网设备在云服务平台的数据存储 |
为什么要用数据库,优势、特性?
可靠性和稳定性
现代数据库系统通常具有高度可靠性和稳定性,可以提供持久性和容错性,可以确保企业的数据安全性。
数据管理能力
数据库系统提供了一种强大的方式来管理数据,从数据的存储到访问都进行统一的管理。企业可以更好地跟踪、管理和报告数据,从而使工作更加高效。
数据共享和集成
企业常常需要从不同的部门和应用程序中收集信息和数据。通过使用数据库,这些数据可以集成在一起,使企业更容易理解业务、做出决策。
数据安全性和隐私保护
企业往往会处理大量的机密数据,如个人信息、财务信息、业务数据等等。数据库管理系统可以提供安全的访问控制和数据保护功能,保护数据的隐私性和机密性。
减少数据冗余
数据库技术可以帮助企业减少数据冗余和重复,提高数据的一致性、准确性和可重用性。
关系型数据库,RDBMS
概述
关系型数据库是一种使用表格来展示和管理数据的数据库,关系型数据库的核心是数据之间的关系,因此也叫做“关系数据库”。RDBMS可以让用户很容易地使用和管理这些关系
特点
便于查询和操作 | SQL语句 |
结构化数据 | 使用行和列存放数据 |
数据的一致性和完整性 | 各种约束条件 |
并发性 | 支持多用户连接的隔离性 |
代表产品
MySQL | 瑞典MYSQL AB公司开发,现由甲骨文公司管理 |
PostgreSQL | PostgreSQL全球开发组开发的免费的开源的数据库管理系统 |
非关系型数据库,NoSQL
概述
NoSQL(Not only SQL)是一种非关系型数据库模型,其数据存储和查询机制与传统的关系型数据库不同
特点
非结构化数据 | 文本、图像、媒体等 |
分布式存储 | 分布在多个节点中,实现高并发 |
没有固定的规范模式 | 无需定义表和列,不强制要求结构 |
高可伸缩性 | 支持水平扩展,增加或删除节点 |
高性能 | 高速读写操作,比传统的关系型数据库效率要高 |
代表产品
MongoDB | 一款基于文档存储模型的非关系型数据库软件 |
Redis | 一款基于内存存储的非关系型数据库,与MongoDB一样广泛应用于互联网领域, Redis常用于快速读写操作、缓存等场景 |
1966年,IBM研究员Codd提出层次结构模型 | |
层次型数据库模型 |
它的数据结构如同树状结构。每个节点都只有一个父节点,但可以有多个子节点 |
这种模型存在层次结构复杂、扩展性差、数据操作限制等问题 |
1969年,CODASYL工作组发布了网络模型 | |
网状型数据库模型 |
它使用复杂链表来表示数据之间的关系,并增加了数据结构的灵活性和递归处理能力,从而解决了层次结构模型的一些问题 |
解决了层次结构模型的一些问题。但是网络模型需要了解复杂的物理存储结构,对程序设计人员的要求比较高 |
1970年,Codd提出了关系型模型,也就是目前SQL和RDBMS所采用的模型 | |
关系型数据库模型 |
关系型模型基于二维表格的结构组织数据,每个表格称为关系,每行记录代表一个实体,每列记录代表一个属性。关系之间通过主键和外键进行关联 |
它具有数据结构简单、数据组织规范、数据操作强大、数据完整性可控等优点,是目前应用最广泛的数据库模型 |
非关系型模型 |
下载安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装数据库服务
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server
问题解决
提示信息
mysql-community-common-5.7.42-1.el7.x86_64.rpm 的公钥尚未安装
失败的软件包是:mysql-community-common-5.7.42-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
分析原因
mysql密钥过期
解决办法
安装新的密钥然后再安装服务
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-server
不使用GPG密钥验证
yum -y install mysql-server --nogpgcheck
提示信息
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
分析原因
输入的密码是错误的,所以拒绝你的访问
1.使用随机密码登录
查看临时密码
grep 'temporary password' /var/log/mysqld.log
登录时使用查看到的随机密码
mysql -u root -p
Enter password: 输入随机密码
2.自行重置密码
重置密码的第一步就是跳过MySQL的密码认证过程
进入数据库的配置文件
vim /etc/my.cnf
添加参数,不验证密码进入mysql
skip-grant-tables
接下来我们需要重启MySQL
systemctl restart mysqld
重新登录数据库时,直接按回车
查看数据库
show databases;
使用mysql数据表
use mysql;
创建root用户使用新的密码
create user 'root'@'localhost' identified by '123456';
如果报错,先刷新配置,在删除原来的root用户,然后再执行创建的操作
flush privileges;
drop user 'root'@'localhost';
create user 'root'@'localhost' identified by '123456';
赋予root权限
grant all privileges on *.* to 'root'@'localhost' with grant option;
刷新配置,退出数据库
flush privileges;
exit
恢复最开始的配置文件
vim /etc/my.cnf
去掉配置项skip-grant-tables
重启mysql,然后使用新密码重新登录数据库
systemctl restart mysqld
mysql -uroot -p123456
yum/rpm安装步骤实验
测试网络
ping www.baidu.com
下载安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装数据服务
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server
问题解决
1、安装mysql提示公钥未安装
分析原因:mysql密钥过期
解决办法
安装新的密钥然后再安装服务
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-server
不使用GPG密钥验证
yum -y install mysql-server --nogpgcheck
启动服务并启动
systemctl start mysqld 开启服务
mysql 启动
2、登录数据库时提示密码错误
提示信息
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
分析原因
输入的密码是错误的,所以拒绝你的访问
解决问题:自行重置密码
重置密码的第一步就是跳过MySQL的密码认证过程
进入数据库的配置文件
vim /etc/my.cnf
添加参数,不验证密码进入mysql:skip-grant-tables
接下来我们需要重启MySQL
systemctl restart mysqld
重新登录数据库时
mysql
查看数据库
show databases;
使用mysql数据表
use mysql;
先刷新配置,再删除原来的root用户
flush privileges;
drop user 'root'@'localhost';
创建root用户使用新的密码
create user 'root'@'localhost' identified by '123456';
赋予root权限
grant all privileges on *.* to 'root'@'localhost' with grant option;
刷新配置,退出数据库
flush privileges;
exit
恢复最开始的配置文件
vim /etc/my.cnf
去掉配置项skip-grant-tables
重启mysql,然后使用新密码重新登录数据库
systemctl restart mysqld
mysql -uroot -p123456
表格制作
create database biaoge;
show databases;
use class_five;
show tables;
mysql> create table students(
-> 编号 int not null,
-> 姓名 varchar(20) not null,
-> 性别 char(10) not null
-> )character set utf8mb4 collate utf8mb4_unicode_ci;
show tables;
select * from students;
describe students;
insert into students(编号,姓名,性别) values(1,'张三','男'),(2,'李四','女'),(3,'王五','男'),(4,'赵六','男'),(5,'小明','男'),(6,'小帅','男'),(7,'小美','女'),(8,'小红','女'),(9,'大明','男'),(10,'大帅','男'),(11,'大美','女'),(12,'大红','女');
select * from students\g