SQL语句速成班之初学者教程

日期: 2009-09-21 作者:Don Jones翻译:孙瑞 来源:TechTarget中国 英文

SQL语句,即“结构化查询语言”,被大多数关系型数据库管理平台所共享,当然也包括Microsoft SQL Server。   目前针对SQL及其基本语法有许多ANSI标准,如果没有SQL语言基础,那么相信你在SQL Server世界里真得就是寸步难行了。因此,下面我们就来介绍一下SQL的基础知识。   SELECT(初学者)   一个SELECT查询可以告诉SQL Server你想从它那里要什么数据。

从技术上来说,SQL Server遵循了ANSI标准的SQL语法。这意味着我向你展示的大多数查询在其它基于SQL的数据库平台上也同样适用,比如MySQL和Oracle。   一个基本的SELEC……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SQL语句,即“结构化查询语言”,被大多数关系型数据库管理平台所共享,当然也包括Microsoft SQL Server。

  目前针对SQL及其基本语法有许多ANSI标准,如果没有SQL语言基础,那么相信你在SQL Server世界里真得就是寸步难行了。因此,下面我们就来介绍一下SQL的基础知识。

  SELECT(初学者)

  一个SELECT查询可以告诉SQL Server你想从它那里要什么数据。从技术上来说,SQL Server遵循了ANSI标准的SQL语法。这意味着我向你展示的大多数查询在其它基于SQL的数据库平台上也同样适用,比如MySQL和Oracle。

  一个基本的SELECT查询有如下的格式:

  SELECT { * | column,column,column } FROM table [WHERE criteria] [ORDER BY column]

  在关键字SELECT后面,如果要包含表中的所有列,指定*就可以。否则你需要提供一个逗号分隔的列名。

  然后使用FROM关键字来指定查询的列所在的表名

  默认情况下,SQL Server将返回表中的所有行。你还可以使用一个WHERE子句,来返回你指定的行。

  例如, …WHERE OrderAmount = 1.00将返回那些OrderAmount列值为1.00的行。

  在WHERE子句中指定的列不一定出现在SELECT中。换句话说,你可以根据看不到的列来完成行过滤。

  在我的例子中,我这样做不难理解,因为我只会得到OrderAmount值为1.00的行。我不必在查询输出中去看OrderAmount列,因为我知道列中所包含的内容。

  下面是更多的WHERE例子,可以让你找找感觉:

  …WHERE DateOrdered BETWEEN '7/1/2000' AND '7/1/2001'

  …WHERE OrderAmount > 5000 AND OrderAmount < 2000

  …WHERE CustomerName LIKE '%one%'

  …WHERE (OrderAmount > 5000 AND OrderAmount < 2000) OR (SpecialOrder = 'Express')

  …WHERE InvoiceNumber IN (1002,476382,7261)

  你可以看到这些语句中包含了以下运算符:BETWEEN, AND, LIKE (用% 作为一个 通配符), OR, 和 IN 。

  BETWEEN运算符指定了你想要的范围。

  IN运算符提供了一个逗号分隔的列表,其中包含了可接受的值。

  下面是一个用到IN运算符的子查询:

  …WHERE InvoiceNumber IN (SELECT InvoiceNumber FROM BadOrders)

  子查询最先执行,然后WHERE子句将包含BadOrders表中所有有InvoiceNumber的行。最终,可选的ORDER BY子句可以指定返回行的顺序。再一次地,你可以指定输出中没有的列。

  以下是更多的ORDER BY的例子:

  …ORDER BY DateOrdered

  …ORDER BY DateOrdered DESCENDING

  …ORDER BY DateOrdered,InvoiceNumber

  默认的排序顺序是升序,当然你也可以指定DESCENDING关键字来进行降序排序。最后一个例子是进行两列的排序:输出行首先按照日期顺序排序,然后有相同DateOrdered值的再按照发票号排序。

  这里我想指出的是,你可以根据匹配的行来选择一个子集,例如:

  SELECT TOP 10 * FROM Orders WHERE OrderAmount > 5000 ORDER BY DateOrdered DESCENDING

  这个查询抓取了那些订单金额超过5000的行,并根据日期降序排序。然后将发送给你前十行,其中包含了表中的所有列。

  你还可以指定…TOP 10 PERCENT…而不是一个固定的数。

  总结一下,这些对于从服务器抓取想要的数据是非常有用的。类似地,BOTTOM关键字的作用是和TOP正好相反的。

作者

Don Jones
Don Jones

投稿作者

翻译

孙瑞
孙瑞

相关推荐