数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL数据操作基础(初级)1


发布日期:2023年01月07日
 
SQL数据操作基础(初级)1

为了建立交互站点你需要使用数据库来存储来自访问者的信息例如你要建立一个职业介绍服务的站点你就需要存储诸如个人简历所感兴趣的工作等等这样的信息创建动态网叶也需要使用数据库如果你想显示符合来访者要求的最好的工作你就需要从数据库中取出这份工作的信息你将会发现在许多情况下需要使用数据库

在这一章里你将学会怎样使用结构化查询语言(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

SQL介绍

本书假设你是在SQL操作Microsoft SQL Sever 的数据库你也可以用SQL操作许多其它类型的数据库SQL是操作数据库的标准语言(事实上关于SQL语言有一个专门的ANSI标准〕

注意

不要在你的站点上试图用Microsoft Access代替Microsoft SQL SeverSQL Sever可以同时服务于许多用户如果你希望你的站点有较高的访问率MS Access是不能胜任的

在学习SQL的细节之前你需要理解它的两大特点一个特点容易掌握另一个掌握起来有点困难

第一个特点是所有SQL数据库中的数据都存储在表中一个表由行和列组成例如下面这个简单的表包括name 和email address

Name Email Address

Bill Gates

president Clinton pres

Stephen Walther sw

这个表有两列(列也称为字段域〕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 引擎允许逻辑查询在逻辑查询中你可以包括特殊的运算符如ANDOR和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列的值

■ 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语句从表中取数据的各种不同方法

上一篇:SQL入门:用户定义类型

下一篇:SQL Server 2000 XML之七种兵器的说明