Skip to content

SQL 语法

关系型数据库通常由一个或多个表组成。每个表都是数据的结构化集合,由唯一的名称标识(例如,Customers、Products、Orders)。表被组织成行(记录)和列(字段)。每行代表一个单独的条目或实体,每列代表该条目的一个属性。

为了便于说明,许多 SQL 教程(包括本教程)可能会引用类似于 Northwind 示例数据库的模式(schema)。该数据库历史上与 Microsoft Access 和 SQL Server 捆绑在一起,提供了一组良好的相关表用于练习查询。

考虑 Customers 表中的一个选段:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

此表片段显示了五条记录(行),每条记录代表一位客户。它有七列详细说明了诸如 CustomerID、CustomerName 等属性。

与数据库的大多数交互都使用 SQL 语句执行。这些语句是命令,告诉数据库要执行什么操作,例如检索数据、插入新数据、更新现有数据或删除数据。

例如,要从 Customers 表中选择所有记录,您可以使用以下 SQL 语句:

SELECT * FROM Customers;

本教程将引导您学习各种 SQL 语句及其用法。

  • SQL 关键字:通常,SQL 关键字(如 SELECT、FROM、WHERE、UPDATE)不区分大小写。因此,SELECT 与 select 或 SeLeCt 是相同的。
  • 表名和列名:表名和列名的大小写敏感性取决于数据库系统及其配置。例如,PostgreSQL 在名称加引号时默认区分大小写,而 MySQL 的行为可能取决于底层操作系统。SQL Server 通常默认不区分大小写,但可以配置为区分大小写。
  • 最佳实践:为了可读性和一致性,通常约定将 SQL 关键字用大写字母书写,而用户定义的名称(表、列)用小写字母或蛇形命名法(例如 customer_orders)。

在许多数据库系统中,分号用于终止 SQL 语句。如果您在单个批处理或脚本中执行多条 SQL 语句,这是分隔它们的标准方式。

虽然某些 SQL 接口或工具可能在没有分号的情况下执行单个语句,但包含分号是一个好习惯,尤其是在编写包含多条语句的脚本时。本教程将在 SQL 语句末尾使用分号。

注释用于解释 SQL 脚本的一部分,并被数据库引擎忽略。

  • 单行注释:以 --(两个连字符)开头。从 -- 到行尾的所有内容都是注释。 -- 这是一个单行注释 SELECT * FROM Orders; -- 检索所有订单
  • 多行注释:以 /* 开头,以 */ 结尾。可以跨越多行。 /* 这是一个 多行注释,解释 下面的查询。 */ SELECT ProductName, UnitPrice FROM Products;

SQL 是一种声明性语言。这意味着您指定您想要检索或操作 什么 数据,而不是 如何 操作。数据库管理系统 (DBMS) 有一个优化器,它决定执行您的 SQL 语句的最有效方式。

以下是一些 SQL 中最重要的类别和命令:

  • SELECT - 从一个或多个表中提取数据。
  • INSERT INTO - 将新数据(行)插入到表中。
  • UPDATE - 修改表中的现有数据。
  • DELETE - 从表中删除数据(行)。
  • CREATE DATABASE - 创建一个新数据库。
  • ALTER DATABASE - 修改数据库级别属性(通常是 DBA 的任务)。
  • CREATE TABLE - 在数据库中创建一个新表。
  • ALTER TABLE - 修改现有表的结构(例如,添加/删除列,更改数据类型)。
  • DROP TABLE - 删除整个表及其数据。
  • CREATE INDEX - 创建索引以提高查询性能。
  • DROP INDEX - 删除索引。
  • GRANT - 授予用户访问数据库对象的权限。
  • REVOKE - 移除用户访问权限。
  • COMMIT - 保存当前事务期间所做的所有更改。
  • ROLLBACK - 撤销当前事务期间所做的更改。
  • SAVEPOINT - 在事务内设置一个点,您稍后可以回滚到该点。

此概述让您对 SQL 的广度有了一瞥。后续章节将更详细地探讨这些命令。