SQL 基础
SQL 高级
- SQL Order By
- SQL AND & OR
- SQL In
- SQL Between
- SQL Aliases
- SQL Join
- SQL Union
- SQL Create
- SQL Drop
- SQL Alter
- SQL functions
- SQL Group By
- SQL Select Into
- SQL Create View
- SQL 服务器
- SQL 快速索引
- SQL 总结
实例/测验
SQL 简介
SQL 是用于访问和处理数据库的标准的计算机语言。
什么是 SQL?
- SQL 指结构化查询语言
- SQL 使我们有能力访问数据库
- SQL 是一种 ANSI 的标准计算机语言
- SQL 面向数据库执行查询
- SQL 可从数据库取回数据
- SQL 可在数据库中插入新的纪录
- SQL 可从数据库删除记录
- SQL 很容易学习
编者注:ANSI,美国国家标准化组织
SQL 是一种标准 – 但是…
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!
SQL 数据库表
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
下面的例子是一个名为 “Persons” 的表:
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
上面的表包含三条记录(每一条对应一个人)和四个列(姓、名、地址和城市)。
SQL 查询程序
通过 SQL,我们可以查询某个数据库,并获得返回的一个结果集。
查询程序类似这样:
SELECT LastName FROM Persons
结果集类似这样:
LastName |
---|
Hansen |
Svendson |
Pettersen |
注释:某些数据库系统要求在 SQL 命令的末端使用分号。在我们的教程中不使用分号。
SQL 数据操作语言 (DML)
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
这些查询和更新语句都来自 SQL 的 DML 部分:
- SELECT – 从数据库表中获取数据
- UPDATE – 更新数据库表中的数据
- DELETE – 从数据库表中删除数据
- INSERT INTO – 向数据库表中插入数据
SQL 数据定义语言 (DDL)
SQL 的数据定义语言部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
- CREATE TABLE – 创建新表
- ALTER TABLE – 变更(改变)数据库表
- DROP TABLE – 删除表
- CREATE INDEX – 创建索引(搜索键)
- DROP INDEX – 删除索引
SQL SELECT 语句
SQL SELECT 语句
SELECT 语句用于从表中选取数据。表格式的结构被存储在一个结果表中(称为结果集)。
语法
SELECT 列名称 FROM 表名称
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
SQL SELECT 实例
如需获取名为 “LastName” 和 “FirstName” 的列的内容(从名为 “Persons” 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons
“Persons” 表:
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
结果:
LastName | FirstName |
---|---|
Hansen | Ola |
Svendson | Tove |
Pettersen | Kari |
获取所有的列
如需从 “Persons” 表中获取所有的列,请使用符号 * 取代列的名称,就像这样:
SELECT *
FROM Persons
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
结果集(result-set)
由 SQL 查询程序获得的结果被存放在一个结果集中。大多数数据库软件系统都允许使用编程函数在结果集中进行导航,比如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。
类似这些编程函数不在本教程讲解之列。如需学习通过函数调用访问数据的知识,请访问我们的 ADO 教程。
在 SQL 语句后使用分号?
分号是数据库系统中分隔每条 SQL 语句的标准方法,这个方法使得对服务器的同一个调用中的若干语句都得到执行。
某些 SQL 教程使用分号来结束每条SQL语句。这是必需的吗?如果您正在使用 Access 和 SQL Server 2000,就不必在每条语句后都放置分号,但是在某些数据库中,您就不得不这么做了。
SELECT DISTINCT 语句
关键词 DISTINCT 用于返回唯一不同的值。
SELECT 语句会从表的列中返回信息。但是假如我们仅仅希望获取唯一不同的元素呢?
通过 SQL,我们所要做到所有事情就是向 SELECT 语句添加 DISTINCT 关键词:
语法:
SELECT DISTINCT 列名称 FROM 表名称
使用 DISTINCT 关键词
如果要从 “Company” 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT Company FROM Orders
“Orders”表:
Company | OrderNumber |
---|---|
Sega | 3412 |
W3School | 2312 |
Trio | 4678 |
W3School | 6798 |
结果:
Company |
---|
Sega |
W3School |
Trio |
W3School |
请注意,在结果集中,W3School 被列出了两次。
如需从 Company” 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:
SELECT DISTINCT
Company FROM Orders
结果:
Company |
---|
Sega |
W3School |
Trio |
现在,在结果集中,”W3School” 仅被列出了一次。