SQL 语法
理解基础 SQL 语法
Section titled “理解基础 SQL 语法”数据库表:SQL 的基础
Section titled “数据库表:SQL 的基础”关系型数据库通常由一个或多个表组成。每个表都是数据的结构化集合,由唯一的名称标识(例如,Customers、Products、Orders)。表被组织成行(记录)和列(字段)。每行代表一个单独的条目或实体,每列代表该条目的一个属性。
为了便于说明,许多 SQL 教程(包括本教程)可能会引用类似于 Northwind 示例数据库的模式(schema)。该数据库历史上与 Microsoft Access 和 SQL Server 捆绑在一起,提供了一组良好的相关表用于练习查询。
示例:Customers 表片段
Section titled “示例:Customers 表片段”考虑 Customers 表中的一个选段:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
此表片段显示了五条记录(行),每条记录代表一位客户。它有七列详细说明了诸如 CustomerID、CustomerName 等属性。
SQL 语句:与数据库通信
Section titled “SQL 语句:与数据库通信”与数据库的大多数交互都使用 SQL 语句执行。这些语句是命令,告诉数据库要执行什么操作,例如检索数据、插入新数据、更新现有数据或删除数据。
例如,要从 Customers 表中选择所有记录,您可以使用以下 SQL 语句:
SELECT * FROM Customers;本教程将引导您学习各种 SQL 语句及其用法。
关键 SQL 语法考量
Section titled “关键 SQL 语法考量”大小写敏感性:
Section titled “大小写敏感性:”- SQL 关键字:通常,SQL 关键字(如
SELECT、FROM、WHERE、UPDATE)不区分大小写。因此,SELECT与select或SeLeCt是相同的。 - 表名和列名:表名和列名的大小写敏感性取决于数据库系统及其配置。例如,PostgreSQL 在名称加引号时默认区分大小写,而 MySQL 的行为可能取决于底层操作系统。SQL Server 通常默认不区分大小写,但可以配置为区分大小写。
- 最佳实践:为了可读性和一致性,通常约定将 SQL 关键字用大写字母书写,而用户定义的名称(表、列)用小写字母或蛇形命名法(例如
customer_orders)。
SQL 语句后的分号 (;):
Section titled “SQL 语句后的分号 (;):”在许多数据库系统中,分号用于终止 SQL 语句。如果您在单个批处理或脚本中执行多条 SQL 语句,这是分隔它们的标准方式。
虽然某些 SQL 接口或工具可能在没有分号的情况下执行单个语句,但包含分号是一个好习惯,尤其是在编写包含多条语句的脚本时。本教程将在 SQL 语句末尾使用分号。
SQL 注释:
Section titled “SQL 注释:”注释用于解释 SQL 脚本的一部分,并被数据库引擎忽略。
- 单行注释:以
--(两个连字符)开头。从--到行尾的所有内容都是注释。-- 这是一个单行注释 SELECT * FROM Orders; -- 检索所有订单 - 多行注释:以
/*开头,以*/结尾。可以跨越多行。/* 这是一个 多行注释,解释 下面的查询。 */ SELECT ProductName, UnitPrice FROM Products;
SQL 是声明性的:
Section titled “SQL 是声明性的:”SQL 是一种声明性语言。这意味着您指定您想要检索或操作 什么 数据,而不是 如何 操作。数据库管理系统 (DBMS) 有一个优化器,它决定执行您的 SQL 语句的最有效方式。
核心 SQL 命令概述
Section titled “核心 SQL 命令概述”以下是一些 SQL 中最重要的类别和命令:
数据查询语言 (DQL):
Section titled “数据查询语言 (DQL):”SELECT- 从一个或多个表中提取数据。
数据操作语言 (DML):
Section titled “数据操作语言 (DML):”INSERT INTO- 将新数据(行)插入到表中。UPDATE- 修改表中的现有数据。DELETE- 从表中删除数据(行)。
数据定义语言 (DDL):
Section titled “数据定义语言 (DDL):”CREATE DATABASE- 创建一个新数据库。ALTER DATABASE- 修改数据库级别属性(通常是 DBA 的任务)。CREATE TABLE- 在数据库中创建一个新表。ALTER TABLE- 修改现有表的结构(例如,添加/删除列,更改数据类型)。DROP TABLE- 删除整个表及其数据。CREATE INDEX- 创建索引以提高查询性能。DROP INDEX- 删除索引。
数据控制语言 (DCL):
Section titled “数据控制语言 (DCL):”GRANT- 授予用户访问数据库对象的权限。REVOKE- 移除用户访问权限。
事务控制语言 (TCL):
Section titled “事务控制语言 (TCL):”COMMIT- 保存当前事务期间所做的所有更改。ROLLBACK- 撤销当前事务期间所做的更改。SAVEPOINT- 在事务内设置一个点,您稍后可以回滚到该点。
此概述让您对 SQL 的广度有了一瞥。后续章节将更详细地探讨这些命令。