📄 sql完全教程 - 经典论坛.htm
字号:
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> 发表于 2003-04-28 <FONT
color=#800080>09:44:13</FONT> <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> <IMG alt=该用户不允许显示它的电子邮件
src="SQL完全教程 - 经典论坛.files/email.gif" align=absMiddle
border=0> <A href="http://www.elab.sdu.edu.cn/imagebear/"
target=_blank><IMG alt=访问imagebear的主页
src="SQL完全教程 - 经典论坛.files/home.gif" align=absMiddle
border=0></A> <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> <A
href="http://www.blueidea.com/bbs/pm.asp?action=newPM&recipient=imagebear&subject=SQL%CD%EA%C8%AB%BD%CC%B3%CC"><IMG
alt=发送悄悄话给imagebear src="SQL完全教程 - 经典论坛.files/pm.gif"
align=absMiddle border=0></A> <A
href="http://www.blueidea.com/bbs/search.asp?action=searchuser&username=imagebear"
target=_blank><IMG alt=搜索imagebear的所有帖子
src="SQL完全教程 - 经典论坛.files/find.gif" align=absMiddle
border=0></A> <A
href="http://www.blueidea.com/bbs/posting.asp?quotenum=933451&action=replywquote&forum=Dreamweaver+MX+Developer+%D3%EB%CA%FD%BE%DD%BF%E2%B1%E0%B3%CC&topic=933443&TopicSubject=SQL%CD%EA%C8%AB%BD%CC%B3%CC"><IMG
alt=引用这个帖子回复 src="SQL完全教程 - 经典论坛.files/quote.gif"
align=absMiddle border=0></A> <A
href="http://www.blueidea.com/bbs/download.asp?topic=933451"><IMG
alt=将本帖子内容通过email打包下载 src="SQL完全教程 - 经典论坛.files/mailto.gif"
align=absMiddle border=0></A>
<HR>
<DIV
align=right></DIV>可以看到,SQL为你提供了对查询结果的许多控制。你应该在ASP编程过程中充分利用这些优点。使用SQL来操作查询结果几乎总是比使用有同样作用的脚本效率更高。<BR><BR><BR><BR>排序查询结果<BR><BR>本章的介绍中曾强调过,SQL表没有内在的顺序。例如,从一个表中取第二个记录是没有意义的。从SQL的角度看来,没有一个记录在任何其他记录之前。<BR><BR>然而,你可以操纵一个SQL查询结果的顺序。在缺省情况下,当记录从表中取出时,记录不以特定的顺序出现。例如,当从表authors中取出字段au_lname时,查询结果显示成这样:<BR><BR><BR><BR>au_lname<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>看一列没有特定顺序的名字是很不方便的。如果把这些名字按字母顺序排列,读起来就会容易得多。通过使用ORDER
BY子句,你可以强制一个查询结果按升序排列,就像这样:<BR><BR><BR><BR>SELECT au_lname
FROM authors ORDER BY
au_lname<BR><BR><BR><BR>当这个SELECT语句执行时,作者名字的显示将按字母顺序排列。ORDER
BY子句将作者名字按升序排列。<BR><BR>你也可以同时对多个列使用ORDER
BY子句。例如,如果你想同时按升序显示字段au_lname和字段au_fname,你需要对两个字段都进行排序:<BR><BR><BR><BR>SELECT
au_lname,au_fname FROM authors ORDER BY au_lname
,au_fname<BR><BR><BR><BR>这个查询首先把结果按au_lname字段进行排序,然后按字段au_fname排序。记录将按如下的顺序取出:<BR><BR><BR><BR>au_lname
au_fname<BR><BR>…………………………………………………………………….<BR><BR>Bennet
Abraham<BR><BR>Ringer Albert<BR><BR>Ringer Anne<BR><BR>Smith
Meander<BR><BR>…<BR><BR>(23 row(s)
affected)<BR><BR><BR><BR>注意有两个作者有相同的名字Ringer。名为Albert
Ringer的作者出现名为Anne
Ringer的作者之前,这是因为姓Albert按字母顺序应排在姓Anne之前。<BR><BR>如果你想把查询结果按相反的顺序排列,你可以使用关键字DESC。关键字DESC把查询结果按降序排列,如下例所示:<BR><BR><BR><BR>SELECT
au_lname,au_fname FROM authors <BR><BR>WHERE au_lname=”Ringer”
ORDER BY au_lname ,au_fname
DESC<BR><BR><BR><BR>这个查询从表authors中取出所有名字为Ringer的作者记录。ORDER
BY子句根据作者的名字和姓,将查询结果按降序排列。结果是这样的:<BR><BR><BR><BR>au_lname
au_fname<BR><BR>……………………………………………………………………………………….<BR><BR>Ringer
Anne<BR><BR>Ringer Albert<BR><BR>(2 row(s)
affectec)<BR><BR><BR><BR>注意在这个表中,姓Anne出现在姓Albert之前。作者名字按降序显示。<BR><BR>你也可以按数值型字段对一个查询结果进行排序。例如,如果你想按降序取出所有书的价格,你可以使用如下的SQL查询:<BR><BR><BR><BR>SELECT
price FROM titles ORDER BY price
DESC<BR><BR><BR><BR>这个SELECT语句从表中取出所有书的价格,显示结果时,价格低的书先显示,价格高的书后显示。<BR><BR><BR><BR>警告:<BR><BR>不是特别需要时,不要对查询结果进行排序,因为服务器完成这项工作要费些力气。这意味着带有ORDER
BY
子句的SELECT语句执行起来比一般的SELECT语句花的时间长。<BR><BR><BR><BR>取出互不相同的记录<BR><BR>一个表有可能在同一列中有重复的值。例如,数据库pubs的表authors中有两个作者的名字是Ringer。如果你从这个表中取出所有的名字,名字Ringer将会显示两次。<BR><BR>在特定情况下,你可能只有兴趣从一个表中取出互不相同的值。如果一个字段有重复的值,你也许希望每个值只被选取一次,你可以使用关键字DISTINCT来做到这一点:<BR><BR><BR><BR>SELCET
DISTINCT au_lname FROM authors WHERE
au_lname="Ringer"<BR><BR><BR><BR>当这个SELECT语句执行时,只返回一个记录。通过在SELECT语句中包含关键字DISTINCT,你可以删除所有重复的值。例如,假设有一个关于新闻组信息发布的表,你想取出所有曾在这个新闻组中发布信息的人的名字,那么你可以使用关键字DISTINCT。每个用户的名字只取一次——尽管有的用户发布了不止一篇信息。<BR><BR>警告:<BR><BR>如同ORDER
BY子句一样,强制服务器返回互不相同的值也会增加运行开销。福气不得不花费一些时间来完成这项工作。因此,不是必须的时候不要使用关键字DISTINCT。<BR><BR><BR><BR>创建新表<BR><BR>前面说过,数据库中的所有数据存储在表中。数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。<BR><BR>例如,数据库pubs中的表authors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。每次向这个表中添加新作者时,作者名字就被添加到这个字段,产生一条新记录。<BR><BR>通过定义字段,你可以创建一个新表。每个字段有一个名字和一个特定的数据类型(数据类型在后面的“字段类型”一节中讲述),例如字段au_lname存储的是字符型数据。一个字段也可以存储其它类型的数据。<BR><BR>使用SQL
Sever,创建一个新表的方法是很多的。你可以可执行一个SQL语句或使用SQL事务管理器(SQL Enterprise
Manager)来创建一个新表。在下一节里,你将学会如何用SQL语句来创建一个新表。<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> 发表于 2003-04-28 <FONT
color=#800080>09:44:48</FONT> <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> <IMG alt=该用户不允许显示它的电子邮件
src="SQL完全教程 - 经典论坛.files/email.gif" align=absMiddle
border=0> <A href="http://www.elab.sdu.edu.cn/imagebear/"
target=_blank><IMG alt=访问imagebear的主页
src="SQL完全教程 - 经典论坛.files/home.gif" align=absMiddle
border=0></A> <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> <A
href="http://www.blueidea.com/bbs/pm.asp?action=newPM&recipient=imagebear&subject=SQL%CD%EA%C8%AB%BD%CC%B3%CC"><IMG
alt=发送悄悄话给imagebear src="SQL完全教程 - 经典论坛.files/pm.gif"
align=absMiddle border=0></A> <A
href="http://www.blueidea.com/bbs/search.asp?action=searchuser&username=imagebear"
target=_blank><IMG alt=搜索imagebear的所有帖子
src="SQL完全教程 - 经典论坛.files/find.gif" align=absMiddle
border=0></A> <A
href="http://www.blueidea.com/bbs/posting.asp?quotenum=933454&action=replywquote&forum=Dreamweaver+MX+Developer+%D3%EB%CA%FD%BE%DD%BF%E2%B1%E0%B3%CC&topic=933443&TopicSubject=SQL%CD%EA%C8%AB%BD%CC%B3%CC"><IMG
alt=引用这个帖子回复 src="SQL完全教程 - 经典论坛.files/quote.gif"
align=absMiddle border=0></A> <A
href="http://www.blueidea.com/bbs/download.asp?topic=933454"><IMG
alt=将本帖子内容通过email打包下载 src="SQL完全教程 - 经典论坛.files/mailto.gif"
align=absMiddle border=0></A>
<HR>
<DIV
align=right></DIV>用SQL创建新表<BR><BR>注意:<BR><BR>如果你还没有建立自己的数据库,现在就跳回到第三章创建这个库。你绝不能向master,tempdb或任何其他任何系统数据库中添加数据。<BR><BR><BR><BR>从SQL
Sever程序组(在任务栏中)中启动ISQL/w程序。出现查询窗口后,从窗口顶部的下拉列表中选择你在第三章所创建的数据库。下一步,在查询窗口中键入下面的SQL语句,单击执行查询按钮,执行这个语句:<BR><BR><BR><BR>CREATE
TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate
<BR><BR>DATETIME)<BR><BR><BR><BR>如果一切正常,你会在结果窗口中看到如下的文字(如果出现异常,请参阅第三章):<BR><BR><BR><BR>This
command dit not return data ,and it did not return any rows
<BR><BR><BR><BR>祝贺你,你已经建立了你的第一个表!<BR><BR>你所创建的表名为guestbook,你可以使用这个表来存储来字你站点访问者的信息。你是用REEATE
TABLE语句创建的这个表,这个语句有两部分:第一部份指定表的名子;第二部份是括在括号中的各字段的名称和属性,相互之间用逗号隔开。<BR><BR>表guestbook有三个字段:visitor,comments
和entrydate。visitor字段存储访问者的名字,comments字段存储访问者对你站点的意见,entrydate字段存储访问者访问你站点的日期和时间。<BR><BR>注意每个字段名后面都跟有一个专门的表达式。例如,字段名comments后面跟有表达式TEXT。这个表达式指定了字段的数据类型。数据类型决定了一个字段可以存储什么样的数据。因为字段comments包含文本信息,其数据类型定义为文本型。<BR><BR>字段有许多不同的数据类型。下一小节讲述SQL所支持的一些重要的数据类型。<BR><BR><BR><BR>字段类型<BR><BR>不同的字段类型用来存放不同类型的数据。创建和使用表时,更你应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。<BR><BR><BR><BR>字符型数据<BR><BR>字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。例如,你可以把从HTML
form的文本框中搜集到的信息放在字符型字段中。<BR><BR>要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式
VARCHAR。考虑你前面创建的表guestbook:<BR><BR><BR><BR>CREATE TABLE
guestbook (visitor VARCHAR(40),comments TEXT,entrydate
<BR><BR>DATETIME)<BR><BR><BR><BR>在这个例子中,字段visitor的数据类型为VARCHAR。注意跟在数据类型后面的括号中的数字。这个数字指定了这个字段所允许存放的字符串的最大长度。在这个例子中,字段visitor能存放的字符串最长为四十个字符。如果名字太长,字符串会被截断,只保留四十个字符。<BR><BR>VARCHAR类型可以存储的字符串最长为255个字符。要存储更长的字符串数据,可以使用文本型数据(下一节中讲述)。<BR><BR>另一种字符型数据用来存储固定长度的字符数据。下面是一个使用这种数据类型的例子:<BR><BR><BR><BR>CREATE
TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate
<BR><BR>DATETIME)<BR><BR><BR><BR>在这个例子中,字段visitor被用来存储四十个字符的固定长度字符串。表达式CHAR指定了这个字段应该是固定长度的字符串。<BR><BR>VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill
Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill
Gates的长度。<BR><BR>现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。<BR><BR>当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。<BR><BR>VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。<BR><BR><BR><BR>文本型数据<BR><BR>字符型数据限制了字符串的长度不能超过255个字符。而使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。<BR><BR>这里有一个使用文本型数据的例子:<BR><BR><BR><BR>CREATE
TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate
<BR><BR>DATETIME)<BR><BR><BR><BR>在这个例子中,字段comments被用来存放访问者对你站点的意见。注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。<BR><BR>当你从HTML
form的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -