关系型数据库系统概述:MySQL与PostgreSQL
关系型数据库系统概述:MySQL与PostgreSQL
核心概念解析
数据库(Database, DB):是按照一定组织、可共享的方式存储数据的集合,它将大量数据结构化存储,便于高效管理和访问。
数据库管理系统(Database Management System, DBMS):是一种专门用于管理数据库的系统软件,提供数据定义、查询、更新、安全控制等功能,MySQL和PostgreSQL是目前最流行的开源DBMS。
SQL(Structured Query Language):结构化查询语言,是操作关系型数据库的标准编程语言,通过SQL可以实现对数据库的各种操作。
主流关系型数据库
目前主流的关系型数据库管理系统包括:
- Oracle:功能强大的商业数据库,适用于大型企业级应用
- MySQL:开源免费的轻量级数据库,广泛应用于Web开发
- SQL Server:微软推出的数据库系统,与Windows生态集成良好
- PostgreSQL:功能丰富的开源数据库,支持复杂数据类型和高级特性
所有关系型数据库管理系统均遵循SQL标准,因此掌握SQL后可以轻松迁移到不同的关系型数据库平台。
关系型数据模型
关系型数据库基于关系模型构建,其核心特征是:
- 数据以二维表(Table)形式组织,表由行(记录)和列(字段)组成
- 表与表之间可以通过关联字段建立关系,实现数据的关联查询
- 支持事务(ACID特性),保证数据操作的一致性和可靠性
- 采用SQL语言进行统一操作,具有严格的语法规范
MySQL 介绍与操作
MySQL 的特点与优势
- 开源免费:遵循GPL协议,可自由使用和修改源代码
- 跨平台性:支持Windows、Linux、macOS等多种操作系统
- 高性能:针对Web应用进行了优化,处理速度快
- 易于扩展:支持主从复制、集群等架构,满足不同规模应用需求
- 社区活跃:拥有庞大的开发者社区,文档丰富,问题解决方案多样
这些特点使MySQL成为Web开发领域的首选数据库之一,被广泛应用于各种网站和应用系统中。
MySQL 的安装与启动(Linux系统)
在Ubuntu/Debian系统中安装
-
更新软件包列表:
sudo apt update
-
安装MySQL服务器:
sudo apt install mysql-server
-
安装完成后,服务会自动启动,可通过以下命令检查状态:
sudo systemctl status mysql
在CentOS/RHEL系统中安装
-
安装MySQL官方仓库:
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
-
安装MySQL服务器:
sudo yum install mysql-server
-
启动MySQL服务并设置开机自启:
sudo systemctl start mysqld sudo systemctl enable mysqld
MySQL 初始化安全设置
安装完成后,建议执行安全脚本进行初始化配置:
sudo mysql_secure_installation
该脚本会引导你完成:
- 设置root用户密码
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 重新加载权限表
MySQL 服务控制命令
- 启动服务:
sudo systemctl start mysql
(Ubuntu)或sudo systemctl start mysqld
(CentOS) - 停止服务:
sudo systemctl stop mysql
或sudo systemctl stop mysqld
- 重启服务:
sudo systemctl restart mysql
或sudo systemctl restart mysqld
- 查看状态:
sudo systemctl status mysql
或sudo systemctl status mysqld
- 设置开机自启:
sudo systemctl enable mysql
或sudo systemctl enable mysqld
MySQL 客户端连接
基本语法:
mysql [-h 主机地址] [-P 端口号] -u 用户名 -p
示例:
- 连接本地数据库:
mysql -u root -p
- 连接远程数据库:
mysql -h 192.168.1.100 -P 3306 -u admin -p
说明:执行命令后会提示输入密码,密码输入时不会显示在屏幕上,输入完成后按回车即可。3306是MySQL的默认端口号,若未修改可省略-P参数。
PostgreSQL 介绍与操作
PostgreSQL 的特点与优势
- 高级特性丰富:支持复杂数据类型(数组、JSON、地理信息等)和高级查询功能
- 强大的扩展性:支持自定义数据类型、函数和操作符
- ACID合规:完全支持事务的原子性、一致性、隔离性和持久性
- 并发性能优秀:采用多版本并发控制(MVCC),读写不冲突
- 开源免费:采用PostgreSQL许可证,允许商业使用和修改
- 标准兼容性:高度符合SQL标准,支持SQL:2016大部分特性
PostgreSQL适合需要复杂数据处理、高度可靠性和扩展性的企业级应用。
PostgreSQL 的安装与启动(Linux系统)
在Ubuntu/Debian系统中安装
-
更新软件包列表:
sudo apt update
-
安装PostgreSQL服务器和客户端:
sudo apt install postgresql postgresql-contrib
-
安装完成后,服务会自动启动,检查状态:
sudo systemctl status postgresql
在CentOS/RHEL系统中安装
-
安装PostgreSQL官方仓库:
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
-
安装PostgreSQL服务器(以13版本为例):
sudo yum install postgresql13 postgresql13-server
-
初始化数据库并启动服务:
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb sudo systemctl start postgresql-13 sudo systemctl enable postgresql-13
PostgreSQL 初始化配置
-
切换到默认的postgres用户:
sudo -i -u postgres
-
进入PostgreSQL命令行:
psql
-
设置postgres用户密码:
ALTER USER postgres WITH PASSWORD 'new_password';
-
退出PostgreSQL命令行:
\q
-
退出postgres用户:
exit
PostgreSQL 服务控制命令
- 启动服务:
sudo systemctl start postgresql
(Ubuntu)或sudo systemctl start postgresql-13
(CentOS) - 停止服务:
sudo systemctl stop postgresql
或sudo systemctl stop postgresql-13
- 重启服务:
sudo systemctl restart postgresql
或sudo systemctl restart postgresql-13
- 查看状态:
sudo systemctl status postgresql
或sudo systemctl status postgresql-13
- 设置开机自启:
sudo systemctl enable postgresql
或sudo systemctl enable postgresql-13
PostgreSQL 客户端连接
基本语法:
psql -h 主机地址 -p 端口号 -U 用户名 -d 数据库名
示例:
- 连接本地默认数据库:
sudo -u postgres psql
- 以指定用户连接:
psql -U username -d dbname -h localhost -p 5432
说明:PostgreSQL默认端口是5432,默认管理员用户是postgres。首次登录通常需要使用sudo切换到postgres用户。
PostgreSQL 常用命令
在psql交互模式下,常用命令:
\l
:列出所有数据库\c 数据库名
:连接到指定数据库\dt
:列出当前数据库中的所有表\du
:列出所有用户\q
:退出psql