⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sql完全教程 - 经典论坛.htm

📁 平时搜集的数据库操作文档
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                  align=absMiddle border=0></A>&nbsp;
                  <HR>

                  <DIV align=right></DIV>前面说过,查询可以在查询条件中包含逻辑运算符。假如你想读取Bill Gates 
                  或Clinton总统的所有email地址,你可以使用下面的查询语句:<BR><BR><BR><BR>SELECT email 
                  FROM email_table WHERE name="Bill Gates" OR 
                  <BR><BR>name="president 
                  Clinton"<BR><BR><BR><BR>此例中的查询条件比前一个复杂了一点。这个语句从表email_table中选出所有name列为Bill 
                  Gates或president Clinton的记录。如果表中含有Bill Gates或president 
                  Clinton的多个地址,所有的地址都被读取。<BR><BR>SELECT语句的结构看起来很直观。如果你请一个朋友从一个表中为你选择一组记录,你也许以非常相似的方式提出你的要求。在SQL 
                  SELECT语句中,你“SELECT特定的列FROM一个表WHERE某些列满足一个特定的条件”。<BR><BR>下一节将介绍怎样执行SQL查询来选取记录。这将帮助你熟悉用SELECT语句从表中取数据的各种不同方法。<BR><BR><BR><BR>使用ISQL执行SELECT查询<BR><BR>当你安装SQL 
                  Sever时,你同时安装了一个叫作ISQL/w的应用程序。ISQL/w允许你执行交互的SQL查询。在把查询包括到你的ASP网页中之前,用ISQL/w对其进行测试是非常有用的。<BR><BR><BR><BR>注意:<BR><BR>在这本书的第一部份,你学习了怎样安装和配置Microsoft 
                  SQL Sever 。如果没有安装SQL Sever或者SQL Sever不能运行,请参阅第三章“安装和使用SQL 
                  Sever”。<BR><BR><BR><BR>选择任务上SQL 
                  Sever程序组中的ISQL_w以启动该程序。程序启动时,首先会出现一个对话框,要求输入服务器信息和登录信息(见图10.1)。在Sever框中,输入你的SQL服务器的名字。如果服务器正运行在本地计算机上,服务器名字就是你计算机的名字。在登录信息框中,输入一个登录帐号和密码或选择使用“可信连接”,然后单击Connect按钮。 
                  <BR><BR><BR><BR>图10。1<BR><BR><BR><BR><BR><BR><BR><BR>注意:<BR><BR>如果你将SQL 
                  Sever配置为使用完整安全或混合安全,那么你可以使用可信连接。如果你使用标准安全,你则需要提供用户帐号和密码。要了解更多信息,参见第三章。<BR><BR><BR><BR>如果一切正常,在你单击连接按钮后会出现一个查询窗口,如图10.2所示。(如果有异常,请参考第三章) 
                  <BR><BR><BR><BR><BR><BR>图10.2<BR><BR><BR><BR><BR><BR>在执行查询之前,你需要选择数据库。安装 
                  SQL Sever时你已为自己创建了一个数据库,SQL 
                  Sever还有许多系统数据库,如master,model,msdb,和tempdb。<BR><BR>方便的是,SQL 
                  Sever带有一个特殊的名为pubs的例子数据库。库 
                  pubs中包含供一个虚拟的出版商使用的各个表。文档中所有的例子程序都是针对这个库来设计的。本书中的许多例子也使用这个数据库。<BR><BR>在查询窗口顶部的DB下拉框中选择数据库pubs,这样你就选择了数据库。你所有的查询都将针对这个库中的各个表来执行。现在你可以执行你的第一个查询了。这真让人兴奋!<BR><BR>你的第一个查询将针对一个名为autrors的表,表中包含所有为某个虚拟出版商工作的作者的相关数据。单击查询窗口并输入以下的语句:<BR><BR><BR><BR>SELECT 
                  phone FROM authors WHERE 
                  au_name="Ringer"<BR><BR><BR><BR>输入完成后,单击执行查询按钮(一个绿色三角形,看起来像VCR播放键)。单击此按钮后,任何出现在查询窗口中的语句均会被执行。查询窗口会自动变成结果显示窗口,你可以看到查询的结果(见图10.3)。<BR><BR>你看到的查询结果也许与图10.3所示的不同。在SQL 
                  Sever的不同版本中,库pubs中的数据会有所不同。对SQL Sever 
                  6.5来说,将会找到两条记录。结果显示窗口中应显示如下内容:<BR><BR><BR><BR>phone<BR><BR>……………….<BR><BR>801 
                  826_0752<BR><BR>801 826_0752<BR><BR>(2 row(s) 
                  affected)<BR><BR><BR><BR><BR><BR><BR><BR>图10.3<BR><BR><BR><BR><BR><BR><BR><BR>你所执行的SELECT语句从表authors中取出所有名字为Ringer的作者的电话号码。你通过在WHERE子句中使用特殊的选择条件来限制查询的结果。你也可以忽略选择条件,从表中取出所有作者的电话号码。要做到这一点,单击Query标签,返回到查询窗口,输入以下的SELECT语句:<BR><BR><BR><BR>SELECT 
                  Phone FROM 
                  authors<BR><BR>这个查询执行后,会取出表authors中的所有电话号码(没有特定的顺序)。如果表authors中包含一百个电话号码,会有一百个记录被取出,如果表中有十亿个电话号码,这十亿条记录都会被取出(这也许需要一些时间)。<BR><BR>表authrs的字段包括姓,名字,电话号码,地址,城市,州和邮政编码。通过在SELECT语句的第一部份指定它们,你可以从表中取出任何一个字段。你可以在一个SELECT语句中一次取出多个字段,比如:<BR><BR><BR><BR>SELECT 
                  au_fname ,au_lname, phone FROM 
                  authors<BR><BR><BR><BR>这个SELECT语句执行后,将取出这三个列的所有值。下面是这个查询的结果的一个示例(为了节省纸张,只显示查询结果的一部分,其余记录用省略号代替):<BR><BR><BR><BR>au_fname 
                  au_lname phone 
                  <BR><BR>………………………………………………………………………….<BR><BR>Johnson White 408 
                  496_7223<BR><BR>Marjorie Green 415 986_7020<BR><BR>Cheryl 
                  Carson 415 548_7723<BR><BR>Michael O’Leary 408 
                  286_2428<BR><BR>… <BR><BR>(23 row(s) 
                  affected)<BR><BR><BR><BR>在SELECT语句中,你需要列出多少个字段,你就可以列出多少。不要忘了把字段名用逗号隔开。你也可以用星号(*)从一个表中取出所有的字段。这里有一个使用星号的例子:<BR><BR><BR><BR>SELECT 
                  * FROM 
                  authors<BR><BR><BR><BR>这个SELECT语句执行后,表中的所有字段的值都被取出。你会发现你将在SQL查询中频繁使用星号。<BR><BR><BR><BR>技巧:<BR><BR>你可以使用星号来查看一个表的所有列的名字。要做到这一点,只需要在执行完SELECT语句后看一下查询结果的列标题。<BR><BR>
                  <P>
                  <HR>
                  <A href="http://imagebear.photoblog.cn/" 
                  target=_blank>PhotoBlog</A><BR><BR><B>Blueidea Web 
                Team</B><BR></TD></TR>
              <TR class=pagelight>
                <TD vAlign=top noWrap width="18%">imagebear<BR><IMG 
                  src="SQL完全教程 - 经典论坛.files/imagebear.gif" 
                  vspace=5><BR><B>梦熊</B><BR>积分:5338<BR>发贴:1396<BR>来自:上海<BR>注册:2002-03-04<BR></TD>
                <TD vAlign=top><IMG src="SQL完全教程 - 经典论坛.files/icon1.gif" 
                  align=absMiddle border=0>&nbsp;发表于 2003-04-28 <FONT 
                  color=#800080>09:43:32</FONT>&nbsp;&nbsp;<A 
                  href="http://www.blueidea.com/bbs/viewuser.asp?username=imagebear" 
                  target=_blank><IMG alt=按此观看imagebear的个人资料 
                  src="SQL完全教程 - 经典论坛.files/profile.gif" align=absMiddle 
                  border=0></A>&nbsp;<IMG alt=该用户不允许显示它的电子邮件 
                  src="SQL完全教程 - 经典论坛.files/email.gif" align=absMiddle 
                  border=0>&nbsp;<A href="http://www.elab.sdu.edu.cn/imagebear/" 
                  target=_blank><IMG alt=访问imagebear的主页 
                  src="SQL完全教程 - 经典论坛.files/home.gif" align=absMiddle 
                  border=0></A>&nbsp;<A 
                  href="http://search.tencent.com/cgi-bin/friend/user_show_info?ln=6906394"><IMG 
                  alt="imagebear 的 oicq 是6906394,查看 6906394 的资料" 
                  src="SQL完全教程 - 经典论坛.files/oicq.gif" align=absMiddle 
                  border=0></A>&nbsp;<A 
                  href="http://www.blueidea.com/bbs/pm.asp?action=newPM&amp;recipient=imagebear&amp;subject=SQL%CD%EA%C8%AB%BD%CC%B3%CC"><IMG 
                  alt=发送悄悄话给imagebear src="SQL完全教程 - 经典论坛.files/pm.gif" 
                  align=absMiddle border=0></A>&nbsp;<A 
                  href="http://www.blueidea.com/bbs/search.asp?action=searchuser&amp;username=imagebear" 
                  target=_blank><IMG alt=搜索imagebear的所有帖子 
                  src="SQL完全教程 - 经典论坛.files/find.gif" align=absMiddle 
                  border=0></A>&nbsp;<A 
                  href="http://www.blueidea.com/bbs/posting.asp?quotenum=933449&amp;action=replywquote&amp;forum=Dreamweaver+MX+Developer+%D3%EB%CA%FD%BE%DD%BF%E2%B1%E0%B3%CC&amp;topic=933443&amp;TopicSubject=SQL%CD%EA%C8%AB%BD%CC%B3%CC"><IMG 
                  alt=引用这个帖子回复 src="SQL完全教程 - 经典论坛.files/quote.gif" 
                  align=absMiddle border=0></A>&nbsp;<A 
                  href="http://www.blueidea.com/bbs/download.asp?topic=933449"><IMG 
                  alt=将本帖子内容通过email打包下载 src="SQL完全教程 - 经典论坛.files/mailto.gif" 
                  align=absMiddle border=0></A>&nbsp;
                  <HR>

                  <DIV 
                  align=right></DIV>操作多个表<BR><BR>到现在为止,你只尝试了用一句SQL查询从一个表中取出数据。你也可以用一个SELECT语句同时从多个表中取出数据,只需在SELECT语句的FROM从句中列出要从中取出数据的表名称即可:<BR><BR><BR><BR>SELECT 
                  au_lname ,title FROM authors, titles 
                  <BR><BR><BR><BR>这个SELECT语句执行时,同时从表authors和表titles中取出数据。从表authors中取出所有的作者名字,从表titles中取出所有的书名。在ISQL/w程序中执行这个查询,看一下查询结果。你会发现一些奇怪的出乎意料的情况:作者的名字并没有和它们所著的书相匹配,而是出现了作者名字和书名的所有可能的组合,这也许不是你所希望见到的。<BR><BR>出了什么差错?问题在于你没有指明这两个表之间的关系。你没有通过任何方式告诉SQL如何把表和表关联在一起。由于不知道如何关联两个表,服务器只能简单地返回取自两个表中的记录的所有可能组合。<BR><BR>要从两个表中选出有意义的记录组合,你需要通过建立两表中字段的关系来关联两个表。要做到这一点的途径之一是创建第三个表,专门用来描述另外两个表的字段之间的关系。<BR><BR>表authors有一个名为au_id的字段,包含有每个作者的唯一标识。表titles有一个名为title_id的字段,包含每个书名的唯一标识。如果你能在字段au_id和字段title_id 
                  之间建立一个关系,你就可以关联这两个表。数据库pubs中有一个名为titleauthor的表,正是用来完成这个工作。表中的每个记录包括两个字段,用来把表titles和表authors关联在一起。下面的SELECT语句使用了这三个表以得到正确的结果:<BR><BR><BR><BR>SELECT 
                  au_name,title FROM authors,titles,titleauthor <BR><BR>WHERE 
                  authors.au_id=titleauthor.au_id<BR><BR>AND 
                  titles.title_id=titleauthor.title_id 
                  <BR><BR><BR><BR>当这个SELECT语句执行时,每个作者都将与正确的书名相匹配。表titleauthor指明了表authors和表titles的关系,它通过包含分别来自两个表的各一个字段实现这一点。第三个表的唯一目的是在另外两个表的字段之间建立关系。它本身不包含任何附加数据。<BR><BR>注意在这个例子中字段名是如何书写的。为了区别表authors和表titles中相同的字段名au_id,每个字段名前面都加上了表名前缀和一个句号。名为author.au_id 
                  的字段属于表authors,名为titleauthor.au_id的字段属于表titleauthor,两者不会混淆。<BR><BR>通过使用第三个表,你可以在两个表的字段之间建立各种类型的关系。例如,一个作者也许写了许多不同的书,或者一本书也许由许多不同的作者共同完成。当两个表的字段之间有这种“多对多”的关系时,你需要使用第三个表来指明这种关系。<BR><BR>但是,在许多情况下,两个表之间的关系并不复杂。比如你需要指明表titles和表publishers之间的关系。因为一个书名不可能与多个出版商相匹配,你不需要通过第三个表来指明这两个表之间的关系。要指明表titles和表publishers之间的关系,你只要让这两个表有一个公共的字段就可以了。在数据库pubs中,表titles和表publishers都有一个名为pub_id的字段。如果你想得到书名及其出版商的一个列表,你可以使用如下的语句:<BR><BR>SELECT 
                  title,pub_name FROM titles,publishers<BR><BR>WHERE 
                  titles.pub_id=publishers.pub_id<BR><BR><BR><BR>当然,如果一本书是由两个出版商联合出版的,那么你需要第三个表来代表这种关系。<BR><BR>通常,当你予先知道两个表的字段间存在“多对多”关系时,就使用第三个表来关联这两个表。反之,如果两个表的字段间只有“一对一”或“一对多”关系,你可以使用公共字段来关联它门。<BR><BR><BR><BR>操作字段<BR><BR>通常,当你从一个表中取出字段值时,该值与创建该表时所定义的字段名联系在一起。如果你从表authors中选择所有的作者名字,所有的值将会与字段名au_lname相联系。但是在某些情况下,你需要对字段名进行操作。在SELECT语句中,你可以在缺省字段名后面仅跟一个新名字来取代它。例如,可以用一个更直观易读的名字Author 
                  Last Name来代替字段名au_lname:<BR><BR><BR><BR>SELECT au_lname 
                  "Author Last Name" FROM 
                  authors<BR><BR><BR><BR>当这个SELECT语句执行时,来自字段au_lname的值会与“Author 
                  Last Name”相联系。查询结果可能是这样:<BR><BR><BR><BR>Author Last Name 
                  <BR><BR>…………………………………………………………………….. 
                  <BR><BR>White<BR><BR>Green<BR><BR>Carson<BR><BR>O’Leary<BR><BR>Straight 
                  <BR><BR>…<BR><BR>(23 row(s) 
                  affected)<BR><BR><BR><BR>注意字段标题不再是au_lname,而是被Author Last 
                  Name所取代。<BR><BR>你也可以通过执行运算,来操作从一个表返回的字段值。例如,如果你想把表titles中的所有书的价格加倍,你可以使用下面的SELECT语句:<BR><BR><BR><BR>SELECT 
                  price*2 FROM titles 
                  <BR><BR><BR><BR>当这个查询执行时,每本书的价格从表中取出时都会加倍。但是,通过这种途径操作字段不会改变存储在表中的书价。对字段的运算只会影响SELECT语句的输出,而不会影响表中的数据。为了同时显示书的原始价格和涨价后的新价格,你可以使用下面的查询:<BR><BR><BR><BR>SELECT 
                  price "Original price", price*2 "New price" FROM 
                  titles<BR><BR><BR><BR>当数据从表titles中取出时,原始价格显示在标题Original 
                  price下面,加倍后的价格显示在标题New 
                  price下面。结果可能是这样:<BR><BR><BR><BR>original price new 
                  price<BR><BR>……………………………………………………………….<BR><BR>19.99 
                  39.98<BR><BR>11.95 23.90 <BR><BR>2.99 5.98<BR><BR>19.99 
                  39.98<BR><BR>…<BR><BR>(18 row(s) 
                  affected)<BR><BR><BR><BR>你可以使用大多数标准的数学运算符来操作字段值,如加(+),减(-),乘(*)和除(/)。你也可以一次对多个字段进行运算,例如:<BR><BR><BR><BR>SELECT 
                  price*ytd_sales "total revenue" FROM 
                  titles<BR><BR><BR><BR>在这个例子中,通过把价格与销售量相乘,计算出了每种书的总销售额。这个SELECT语句的结果将是这样的:<BR><BR><BR><BR>total 
                  revenue<BR><BR>……………………………………………..<BR><BR>81,859,05<BR><BR>46,318,20<BR><BR>55,978,78<BR><BR>81,859,05<BR><BR>40,619,68<BR><BR>…<BR><BR>(18 
                  row(s) 
                  affected)<BR><BR><BR><BR>最后,你还可以使用连接运算符(它看起来像个加号)来连接两个字符型字段:<BR><BR><BR><BR>SELECT 
                  au_fname+" "+au_lname "author name" FROM 
                  authors<BR><BR><BR><BR>在这个例子中,你把字段au_fname和字段au_lname粘贴在一起,中间用一个逗号隔开,并把查询结果的标题指定为author 
                  name。这个语句的执行结果将是这样的:<BR><BR><BR><BR>author 
                  names<BR><BR>…………………………………………………………<BR><BR>Johnson 
                  White<BR><BR>Marjorie Green<BR><BR>Cheryl 
                  Carson<BR><BR>Michael O’Leary<BR><BR>Dean 
                  Straight<BR><BR>…<BR><BR>(23 row(s) affected)<BR>
                  <P>
                  <HR>
                  <A href="http://imagebear.photoblog.cn/" 
                  target=_blank>PhotoBlog</A><BR><BR><B>Blueidea Web 
                Team</B><BR></TD></TR>
              <TR class=border>
                <TD vAlign=top noWrap width="18%">imagebear<BR><IMG 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -