第三部分 操作数据:SQL
本部分内容
SQL 基础
中级 SQL
高级 SQL
第 10 章 SQL 基础
本章内容
SQL 介绍
使用 SELECT 语句从表中取数据
创建新表
字段属性
向表中添加数据
删除和修改表
为了建立交互站点,你需要使用数据库来存储来自访问者的信息。例如,你要建立一个
职业介绍服务的站点,你就需要存储诸如个人简历,所感兴趣的工作等等这样的信息。创建
动态网叶也需要使用数据库,如果你想显示符合来访者要求的最好的工作,你就需要从数据
库中取出这份工作的信息。你将会发现,在许多情况下需要使用数据库。
在这一章里,你将学会怎样使用“结构化查询语言”(SQL〕来操作数据库。SQL 语言是
数据库的标准语言。在 Active Sever Pages 中,无论何时你要访问一个数据库,你就要使
用 SQL 语言。因此,掌握好 SQL 对 ASP 编程是非常重要的。
注意:
你可以把“SQL”读作“sequel”,也可以按单个字母的读音读作 S- Q- L。
两种发音都是正确的,每种发音各有大量的支持者。在本书里,认为“SQL”读作“ sequel”。
通过这一章的学习,你将理解怎样用 SQL 实现数据库查询,你将学会怎样使用这种查询
从数据表中取出信息,最后,你将学会怎样设计和建立自己的数据库。
注意:
通过下面几章对 SQL 的介绍,你将对 SQL 有足够的了解,从而可以有效地使用 Active
Sever Pages。但是,SQL 是一种复杂的语言,本书不可能包括它的全部细节。要全面掌握
SQL 语言,你需要学习在 Microsoft SQL Sever 中使用 SQL。你可以到附近的书店去买一本
Microsoft SQL Sever 6.5。
SQL 介绍:
本书假设你是在 SQL 操作 Microsoft SQL Sever 的数据库。你也可以用 SQL 操作许多
其它类型的数据库。SQL 是操作数据库的标准语言。(事实上,关于 SQL 语言有一个专门的
ANSI 标准〕
注意:
不要在你的站点上试图用 Microsoft Access 代替 Microsoft SQL Sever。SQL Sever
可以同时服务于许多用户,如果你希望你的站点有较高的访问率,MS Access 是不能胜任的。
在学习 SQL 的细节之前,你需要理解它的两大特点。一个特点容易掌握,另一个掌握起
来有点困难。
第一个特点是所有 SQL 数据库中的数据都存储在表中。一个表由行和列组成。例如,下
面这个简单的表包括 name 和 e-mail address:
Name Email Address
................................................................
Bill Gates billg@microsoft.com
president Clinton president@whitehouse.com
Stephen Walther swalther@somewhere.com
这个表有两列(列也称为字段,域〕:Name 和 Email Address。有三行,每一行包含一
组数据。一行中的数据组合在一起称为一条记录。
无论何时你向表中添加新数据,你就添加了一条新记录。一个数据表可以有几十个记录,
也可以有几千甚至几十亿个记录。虽然你也许永远不需要存储十亿个 Email 地址,但知道你
能这样做总是好的,也许有一天你会有这样的需要。
你的数据库很有可能包含几十个表,所有存储在你数据库中的信息都被存储在这些表
中。当你考虑怎样把信息存储在数据库中时,你应该考虑怎样把它们存储在表中。
SQL 的第二个特点有些难于掌握。这种语言被设计为不允许你按照某种特定的顺序来取
出记录,因为这样做会降低 SQL Sever 取记录的效率。使用 SQL,你只能按查询条件来读取
记录。
当考虑如何从表中取出记录时,自然会想到按记录的位置读取它们。例如,也许你会尝
试通过一个循环,逐个记录地扫描,来选出特定的记录。在使用 SQL 时,你必须训练自己,
不要有这种思路。
假如你想选出所有的名字是“Bill Gates”的记录,如果使用传统的编程语言,你也许
会构造一个循环,逐个查看表中的记录,看名字域是否是“Bill Gates”。
这种选择记录的方法是可行的,但是效率不高。使用 SQL,你只要说,“选择所有名字
域等于 Bill Gates 的记录”,SQL 就会为你选出所有符合条件的记录。SQL 会确定实现查询
的最佳方法。
建设你想取出表中的前十个记录。使用传统的编程语言,你可以做一个循环,取出前十
个记录后结束循环。但使用标准的 SQL 查询,这是不可能实现的。从 SQL 的角度来说,在一
个表中不存在前十个记录这种概念。
开始时,当你知道你不能用 SQL 实现某些你感觉应该能实现的功能,你会受到挫折。你
也许会以头撞墙甚至想写恶毒的信件给 SQL 的设计者们。但后来你会认识到,SQL 的这个特
点不仅不是个限制,反而是其长处。因为 SQL 不根据位置来读取记录,它读取记录可以很快。
综上所述,SQL 有两个特点:所有数据存储在表中,从 SQL 的角度来说,表中的记录没
有顺序。在下一节,你将学会怎样用 SQL 从表中选择特殊的记录。
使用 SQL 从表中取记录。
SQL 的主要功能之一是实现数据库查询。如果你熟悉 Internet 引擎,那么你已经熟悉
查询了。你使用查询来取得满足特定条件的信息。例如,如果你想找到有 ASP 信息的全部站
点,你可以连接到 Yahoo!并执行一个对 Active Sever Pages 的搜索。在你输入这个查询后,
你会收到一个列表,表中包括所有其描述中包含搜索表达式的站点。
多数 Internet 引擎允许逻辑查询。在逻辑查询中,你可以包括特殊的运算符如 AND、
OR 和 NOT,你使用这些运算符来选择特定的记录。例如,你可以用 AND 来限制查询结果。如
果你执行一个对 Active Sever Pages AND SQL 的搜索。你将得到其描述中同时包含 Active
Sever Pages 和 SQL 的记录。当你需要限制查询结果时,你可以使用 AND。
如果你需要扩展查询的结果,你可以使用逻辑操作符 OR。例如,如果你执行一个搜索,
搜索所有的其描述中包含 Active Sever Pages OR SQL 的站点,你收到的列表中将包括所
有其描述中同时包含两个表达式或其中任何一个表达式的站点。
如果你想从搜索结果中排除特定的站点,你可以使用 NOT。例如,查询“Active Sever
Pages ”AND NOT “SQL”将返回一个列表,列表中的站点包含 Active Sever Pages,但
不包含 SQL。当必须排除特定的记录时,你可以使用 NOT。
用 SQL 执行的查询与用 Internet 搜索引擎执行的搜索非常相似。 当你执行一个 SQL
查询时,通过使用包括逻辑运算符的查询条件,你可以得到一个记录列表。此时查询结果是
来自一个或多个表。
SQL 查询的句法非常简单。假设有一个名为 email_table 的表,包含名字和地址两个字
段,要得到 Bill Gates 的 e_mail 地址,你可以使用下面的查询:
SELECT email from email_table WHERE name="Bill Gates"
当这个查询执行时,就从名为 email_table 的表中读取 Bill Gates 的 e_mail 地址。
这个简单的语句包括三部分:
■ SELECT 语句的第一部分指名要选取的列。在此例中,只有 email 列被选取。当执
行 时,只显示 email 列的值 billg@microsoft.com。
■ SELECTT 语句的第二部份指明要从哪个(些)表中查询数据。在此例中,要查询的
表名为 email_table 。
■ 最后,SELECT 语句的 WHERE 子句指明要选择满足什么条件的记录。在此例中,查
询条件为只有 name 列的值为 Bill Gates 的记录才被选取。
Bill Gates 很有可能拥有不止一个 email 地址。如果表中包含 Bill Gates 的多个 email
地址。用上述的 SELECT 语句可以读取他所有的 email 地址。SELECT语句从表中取出所有 name
字段值为 Bill Gates 的记录的 email 字段的值。
前面说过,查询可以在查询条件中包含逻辑运算符。假如你想读取 Bill Gates 或
Clinton 总统的所有 email 地址,你可以使用下面的查询语句:
SELECT email FROM email_table WHERE name="Bill Gates" OR
name="president Clinton"
此例中的查询条件比前一个复杂了一点。这个语句从表 email_table 中选出所有 name
列为 Bill Gates 或 president Clinton 的记录。如果表中含有 Bill Gates 或 president
Clinton 的多个地址,所有的地址都被读取。
SELECT 语句的结构看起来很直观。如果你请一个朋友从一个表中为你选择一组记录,
你也许以非常相似的方式提出你的要求。在 SQL SELECT 语句中,你“SELECT 特定的列 FROM
一个表 WHERE 某些列满足一个特定的条件”。
下一节将介绍怎样执行 SQL 查询来选取记录。这将帮助你熟悉用 SELECT 语句从表中取
数据的各种不同方法。
使用 ISQL 执行 SELECT 查询
当你安装 SQL Sever 时,你同时安装了一个叫作 ISQL/w 的应用程序。ISQL/w 允许你执
行交互的 SQL 查询。在把查询包括到你的 ASP 网页中之前,用 ISQL/w 对其进行测试是非常
有用的。
注意:
在这本书的第一部份,你学习了怎样安装和配置 Microsoft SQL Sever 。如果没有安
装 SQL Sever 或者 SQL Sever 不能运行,请参阅第三章“安装和使用 SQL Sever”。
选择任务上 SQL Sever 程序组中的 ISQL_w 以启动该程序。程序启动时,首先会出现一
个对话框,要求输入服务器信息和登录信息(见图 10.1)。在 Sever 框中,输入你的 SQL 服
务器的名字。如果服务器正运行在本地计算机上,服务器名字就是你计算机的名字。在登录