当前位置: 首页 > news >正文

关系型数据库系统概述: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系统中安装
  1. 更新软件包列表:

    sudo apt update
    
  2. 安装MySQL服务器:

    sudo apt install mysql-server
    
  3. 安装完成后,服务会自动启动,可通过以下命令检查状态:

    sudo systemctl status mysql
    
在CentOS/RHEL系统中安装
  1. 安装MySQL官方仓库:

    sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    
  2. 安装MySQL服务器:

    sudo yum install mysql-server
    
  3. 启动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 mysqlsudo systemctl stop mysqld
  • 重启服务:sudo systemctl restart mysqlsudo systemctl restart mysqld
  • 查看状态:sudo systemctl status mysqlsudo systemctl status mysqld
  • 设置开机自启:sudo systemctl enable mysqlsudo 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系统中安装
  1. 更新软件包列表:

    sudo apt update
    
  2. 安装PostgreSQL服务器和客户端:

    sudo apt install postgresql postgresql-contrib
    
  3. 安装完成后,服务会自动启动,检查状态:

    sudo systemctl status postgresql
    
在CentOS/RHEL系统中安装
  1. 安装PostgreSQL官方仓库:

    sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    
  2. 安装PostgreSQL服务器(以13版本为例):

    sudo yum install postgresql13 postgresql13-server
    
  3. 初始化数据库并启动服务:

    sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
    sudo systemctl start postgresql-13
    sudo systemctl enable postgresql-13
    

PostgreSQL 初始化配置

  1. 切换到默认的postgres用户:

    sudo -i -u postgres
    
  2. 进入PostgreSQL命令行:

    psql
    
  3. 设置postgres用户密码:

    ALTER USER postgres WITH PASSWORD 'new_password';
    
  4. 退出PostgreSQL命令行:

    \q
    
  5. 退出postgres用户:

    exit
    

PostgreSQL 服务控制命令

  • 启动服务:sudo systemctl start postgresql(Ubuntu)或 sudo systemctl start postgresql-13(CentOS)
  • 停止服务:sudo systemctl stop postgresqlsudo systemctl stop postgresql-13
  • 重启服务:sudo systemctl restart postgresqlsudo systemctl restart postgresql-13
  • 查看状态:sudo systemctl status postgresqlsudo systemctl status postgresql-13
  • 设置开机自启:sudo systemctl enable postgresqlsudo 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
http://www.dtcms.com/a/393933.html

相关文章:

  • python编程练习(Day8)
  • 【Linux命令从入门到精通系列指南】apt 命令详解:Debian/Ubuntu 系统包管理的现代利器
  • xtuoj 7的倍数
  • 【开题答辩全过程】以 java牙科门诊管理系统为例,包含答辩的问题和答案
  • 【论文速递】2025年第19周(May-04-10)(Robotics/Embodied AI/LLM)
  • 鸿蒙 - 验证码功能
  • 大数据毕业设计选题推荐-基于大数据的汽车之家数据分析系统-Hadoop-Spark-数据可视化-BigData
  • Bioconductor 项目为高通量生物数据分析提供了大量强大的工具 Bioconductor规范,核心是一系列设计精良、标准化的数据对象
  • 还有新援?利物浦即将启动预签协议,锁定英格兰新星
  • Audacity音频软件介绍和使用
  • SpringBoot配置优化:Tomcat+数据库+缓存+日志全场景教程
  • 《数据库系统概论》——陈红、卢卫-1-数据库系统概述
  • VLA-Adapter:一种适用于微型 VLA 的有效范式
  • JVM内存模型深度剖析与优化
  • 固定收益理论(六)波动率曲面、曲线及其构建模型
  • Zotero使用学习笔记
  • 分布式 | 布隆过滤器实战指南:原理、编码实现、应用与Redisson最佳实践
  • STM32的VSCode下开发环境搭建
  • Rsync+sersync实现数据实时同步
  • HttpServletRequest/Response/请求转发/响应重定向
  • 数据结构(2) —— 双向链表、循环链表与内核链表
  • 告别传统打版:用CLO 3D联动Substance,打造超写实数字服装
  • Linux | i.MX6ULL Sqlite3 移植和使用(第二十三章)
  • SpringBoot整合Smart Doc
  • 部署dataxweb
  • C#练习题——双向链表的创建,添加和删除
  • 大厂思维与“小快轻准”产品的矛盾
  • C++二进制转八进制
  • STL容器 --- 模拟实现 list
  • Java LTS版本进化秀:从8到21的欢乐升级之旅