[sql]mysql,sql server,Oracle,postgresql(区别和联系)

85 阅读4分钟

自己总结

sql是一个统称, 结构化查询语言, mysql, sql server, oracel, postgresql等是具体的关系型数据库管理系统,

他们由不同的公司来开发, 虽然都遵循sql这个核心, 但是他们之间也有些许的不同.

比如语法之间存在些许的差异, 比如在mysql中有dayname()这个函数, 在sql server中就没有.

另外, 有的是开源的, 有的是商业的.

理解这些数据库之间的关系是系统学习SQL的重要一环。它们之间的关系可以用一个很好的比喻来理解:

就像汽车品牌一样——它们都遵循“汽车”的基本原理(发动机、轮子、方向盘),但每个品牌(奔驰、丰田、大众、特斯拉)有自己的设计、特色和优化方向。

下面我来为你详细解释:

1. 共同的核心:SQL

  • SQL是一种标准化的语言。想象一下英语是一种语言,但有美式英语、英式英语等不同口音和少量不同的用词。
  • 所有这些数据库(MySQL, SQL Server, Oracle, PostgreSQL等)都支持使用SQL来进行数据操作。
  • 它们都遵循一个国际标准(主要是ANSI SQL)。这意味着你学的核心SQL语句,如 SELECT, INSERT, UPDATE, DELETE, WHERE, JOIN 等,在所有这些数据库中都是通用的。

结论: 你系统学习SQL的思路是完全正确的。一旦掌握了标准SQL,你就具备了在所有关系型数据库中工作的基础能力。

2. 不同的“品牌”:各个数据库管理系统

它们都是关系型数据库管理系统,但由不同的公司开发,有不同的历史、特性和目标市场。

数据库品牌开发商核心特点典型应用场景许可证
MySQLOracle公司- 最流行的开源数据库
- 速度快、可靠性高
- 社区活跃,学习资源极多
- 是LAMP架构中的“M”
Web应用(如WordPress)、初创公司、嵌入式系统开源(有社区版和商业版)
SQL ServerMicrosoft- 与微软生态系统深度集成
- 强大的商业智能和数据仓库工具
- 图形化管理工具非常优秀
企业级应用、内部系统、需要与.NET框架集成的项目商业软件(但有免费的Express版)
PostgreSQL开源社区- 功能最强大的开源数据库
- 严格遵循SQL标准
- 支持高级数据类型(如JSONB, 数组)和自定义函数
需要复杂查询和高级功能的应用、地理信息系统、大数据分析开源
OracleOracle公司- 功能极其强大、稳定和安全
- 昂贵的授权费用
- 在大型企业、金融领域占统治地位
超大型企业、银行、金融系统、核心业务系统商业软件

3. 它们之间的主要区别(“方言”)

虽然它们都说SQL,但各自都扩展了一些独有的功能和语法,这就是所谓的“方言”。

  • 语法细微差别

    • 取前N条记录
      • MySQL/SQLite/PostgreSQL: SELECT * FROM table_name LIMIT 10;
      • SQL Server / Azure SQL: SELECT TOP 10 * FROM table_name;
      • Oracle: SELECT * FROM table_name WHERE ROWNUM <= 10;
    • 字符串连接
      • MySQL: CONCAT(first_name, ' ', last_name)
      • SQL Server: first_name + ' ' + last_name
      • Oracle/PostgreSQL: first_name || ' ' || last_name
  • 功能差异

    • 某些高级功能,如窗口函数、公共表表达式的支持程度和语法可能在不同版本间有差异。
    • 数据类型也可能不同,比如存储二进制大对象或布尔值的方式。

给你的学习建议

  1. 先学标准SQL,再看差异:你现在应该专注于学习标准的ANSI SQL。掌握了它,你就掌握了90%的通用技能。上面提到的语法差异,在实际需要时很容易快速掌握。
  2. 初学者如何选择
    • 推荐从 MySQL 或 PostgreSQL 开始。因为它们都是功能强大且免费开源的,拥有巨大的社区和丰富的学习资源。你可以在自己的电脑上轻松安装它们进行练习。
    • 使用我之前提到的免费数据集,在MySQL或PostgreSQL环境中进行实操。
  3. 如何练习
    • 在你选择的数据库中,创建表、导入数据(比如从Kaggle下载的CSV文件)。
    • 然后使用标准的SQL查询语句来练习:数据查询、过滤、分组、聚合、多表连接等。

总结一下关系: 它们都是关系型数据库管理系统,使用SQL作为查询语言,就像不同品牌的汽车都能在路上跑。你系统学习SQL的计划是完全可行的,因为核心是相通的。选择一个(如MySQL)深入实践,之后再了解其他数据库的独特之处,会让你成为一个更全面的数据从业者。