20 世纪 70 年代,IBM 科学家 Donald Chamberlin 与 Raymond Boyce 开发并推出 SQL。其源于关系模型概念,初版命名为 SEQUEL(结构化英语查询语言),后简化为 SQL。它于 1979 年正式商业化,并从此成为 关系数据库 管理系统的全球标准。
SQL 分别于 1986 年和 1987 年由美国国家标准学会 (ANSI) 和国际标准化组织 (ISO) 进行 标准化 。 尽管已是标准语言,SQL 存在多种衍生语言,例如 Microsoft SQL Server 的 T-SQL 和 Oracle Database 的 PL/SQL。这些 SQL 衍生语言既满足特定系统需求,又兼容 SELECT、UPDATE、DELETE、INSERT 和 WHERE 等核心 ANSI 标准命令。
自 20 世纪 70 年代开发以来,SQL 已成为现代数据库系统的支柱。
与通用编程语言不同,SQL 专为关系数据库构建——而关系数据库与 SQL 语言存在相互优化的设计关系。这种相互优化的设计使 SQL 成为高效的数据管理工具。
SQL 的声明式特性使其对编程经验有限的用户同样易用,堪称初学者理想语言。其广泛应用及与 Python、Java 等语言的集成,更使其成为编程与数据领域的重要技能。
数据分析师、数据科学家和数据库管理员常使用 SQL,因其擅长数据处理、数据定义、访问控制、数据共享、数据集成和大数据分析等任务。
在数据科学中, SQL 用于创建存储大型分析数据集的数据库。其从海量结构化数据集中操作与检索数据的能力,对依赖高质量训练数据的人工智能 (AI) 和机器学习 (ML) 应用程序开发至关重要。
SQL 遵循 ACID 特性——原子性、一致性、隔离性、持久性——确保在关键业务场景和敏感数据处理场景下的可靠事务处理。同时支持更精准的数据驱动决策、高级分析和增强型商业智能。
SQL 具备多重优势,故能成为应用最广泛且长盛不衰的编程语言之一。
SQL 的简洁命令(如 GROUP BY、ORDER BY、GRANT、REVOKE)使各级用户得以操作数据库。
SQL 索引与查询优化技术提升了数据检索速度,从而增强了数据库性能。
SQL Database 集成了安全功能(例如用户认证、访问控制及加密)以保护数据。
SQL 遵循 ANSI 与 ISO SQL 标准,确保跨系统与平台的兼容性(包括云环境及大数据工具)。
SQL 能够高效管理小型和大型数据库,适应不断增长的数据需求,且不会出现显著的性能下降。
许多 SQL Database 属开源项目,得到活跃大型社区的支持,持续推动技术改进与问题解决。
关系数据库以表格形式(行与列)组织数据 ,并管理 多表间关联。例如,客户服务数据库可能会使用单独的表格分别存储客户信息、购买、产品代码和联系方式,并通过唯一客户 ID 等键进行关联。
SQL 允许用户编写查询(及子查询)操作数据。这些命令在 SQL 处理过程中会经过以下几个软件组件:
解析器验证 SQL 语句的语法正确性,并将其转换为数据库可识别的内部格式(例如词法标记)。此步骤含语法分析与语义检查。解析器还将帮助确保用户有权执行该操作。
然后,关系引擎(亦称查询优化器)规划最高效的数据检索、修改或添加策略。它通过评估不同查询执行计划实现。最终将计划写入字节码(一种虚拟机语言)。此步骤对于优化数据库性能和资源使用至关重要。
最后,存储引擎处理字节码,执行 SQL 语句并管理物理数据存储。其处理数据物理表示形式(含文件格式与数据缓冲)。同时将结果返回用户或应用程序。此步骤有助于确保对磁盘上数据的高效访问与更新。这种关联通常涉及使用主键和外键建立的关系(例如一对多或多对多),以确保数据的完整性。
关系数据库管理系统(亦称 SQL 系统)包含以下组件:
SQL 命令传统上分为以下类别:
数据定义语言管理表、视图及索引等数据库对象 。它定义了存储数据的结构、组织方式及数据项间关系。
数据操作语言通过 INSERT、UPDATE 及 OUTER JOIN 等操作管理数据库数据——实现数据添加、修改与合并。
数据控制语言通过 GRANT(授权)和REVOKE(撤权)等命令控制数据访问。它可以限制用户的检索、添加及修改能力。
数据查询语言执行数据检索操作,通常使用 SELECT 命令。它可以获取特定数据项或数据范围。
事务控制语言管理事务操作变更,保障数据完整性,支持 ROLLBACK(回滚)与 COMMIT(提交)操作——分别用于撤销或保存变更。它用于协调 并发用户间的数据共享。
SQL Database 支持多种 SQL 数据操作语句。但 SQL 命令可能因数据库自有 SQL 语法而异。
基础 SQL 命令包括:
从一个或多个表检索数据。
SELECT name, email
FROM 客户表
WHERE 城市 = “纽约”;此语句从客户表中检索居住在纽约的所有客户的姓名和电子邮件。
向表添加新行。
INSERT INTO customers (name, email, city)
VALUES ('Jane Doe', 'jane.doe@example.com', 'Los Angeles') ;
该语句在 客户 表中添加一行,包含姓名为“Jane Doe”, 电子邮件为“jane.doe@example.com”且城市为“洛杉矶”。
修改表中现有数据。
UPDATE customers
SET email = 'new.email@example.com'
WHERE name = 'John Doe' ;
此语句将客户表中 姓名为 “John Doe”的客户的电子邮件更新为 “new.email@example.com”。
根据条件从表中删除行。
DELETE FROM customers
WHERE city = 'Boston' ;
此语句从 客户 表中删除 城市 为“波士顿”的所有行。
定义新表及其结构。
CREATE TABLE products ( product_id INT PRIMARY KEY, name VARCHAR(100), price DECIMAL(10, 2) ) ;
此语句将创建一个名为产品的新表,其中包含三列:整数主键 product_id、最多 100 个字符的可变字符串 name 以及保留十位数和两位小数的价格 price。
修改现有表结构。
ALTER TABLE customers
ADD COLUMN birthday DATE ;
此语句现有客户表中添加了类型为 DATE 的新列 birthday。
删除表及其全部数据。
DROP TABLE old_customers ;
此语句将删除 old_customers 表及其所有数据。
根据相关列合并两个或多个表中的行。
SELECT c.name, p.name AS product_name FROM customers c JOIN orders o ON c.customer_id = o.customer_id JOIN products p ON o.product_id = p.product_id WHERE c.city = 'New York' ;
SQL JOIN 语句检索 客户的姓名 及其所订购产品的名称。该语句通过 customer_id 和 product_id 关联客户表、订单表及产品表 ,仅 筛选出 纽约的客户。
SQL Database 属关系数据库,结构化数据存储于互相关联的行列表中。SQL 是与这类数据库交互的标准语言。
NoSQL 数据库(非关系数据库)兴起于 2000 年代末,用于处理弱结构化数据。此类数据库(如 MongoDB) 相比 SQL Database 提供更灵活的数据模型。
SQL 和 NoSQL 主要区别包括:
NoSQL数据库支持横向扩展——通过增加服务器应对高流量。而 SQL 数据库传统上采用垂直扩展——需升级硬件应对负载增长。
SQL Database 采用基于表的结构,基于其强大的索引和连接性能,非常适合处理多行事务和相关数据的复杂查询。 NoSQL 提供多种结构,如键值、文档、图形或 宽 列存储,以满足不同需求,并为半结构化或非结构化数据提供了更大的灵活性。
SQL Database 遵循 ACID 原则,针对复杂查询 优化 并保障严格数据一致性。NoSQL 数据库遵循基本原则(基本可用、软状态、最终一致性),在特定 数据类型 上性能更快,但一致性保障机制不同。
SQL Database 适用于 需复杂事务、强一致性及严格 模式 遵从的场景(如金融系统、电商平台、CRM 数据库)。NoSQL 更适合 处理快速变化、大规模数据或半结构化数据的场景,例如社交网络、实时分析或内容管理系统。
SQL Database 因历史悠久且广泛应用,拥有更广泛的资源(如 SQL 教程与社区支持)。NoSQL 初始设计需求较低且易扩展,但复杂查询与数据一致性常需额外定制开发。
SQL Database 需谨慎设计模式,且模式变更的维护成本较高。NoSQL 数据库管理系统则提供 更便捷 的扩展能力与模式适应性,无需大规模停机或重构。
尽管许多 SQL Database 具备安全优势,但企业应用程序仍可能因弱认证机制、不安全设计及配置失当等漏洞面临风险。此类漏洞使 SQL 注入持续成为企业的现实威胁。
当攻击者篡改 SQL Query 以访问或破坏数据库信息时,即发生 SQL 注入攻击。了解这些漏洞并实施强有力的安全措施,对于保护 SQL 数据至关重要。
设计数据战略,消除数据孤岛、降低复杂性并提高数据质量,以获得卓越的客户和员工体验。
watsonx.data 支持您通过开放、混合和已治理数据,利用您的所有数据(无论位于何处)来扩展分析和 AI。
通过 IBM® Consulting 发掘企业数据的价值,建立以洞察分析为导向的组织,实现业务优势。