首 页IT知识库翔宇问吧收藏内容
当前位置:翔宇亭IT乐园IT知识库数据库SQL专栏

SQL语言的数据查询功能

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-09-25 09:00:00

SQL语言中最主要、最核心的部分是它的查询功能。查询语言用来对已经存在于数据库中的数据按照特定的组合、条件表达式或次序进行检索,其基本格式是由SELECT子句、FROM子句和WHERE子句组成的查询块:

SELECT<列名表> FROM<表或视图名> WHERE<查询限定条件>

也就是说,SELECT指定了想要看哪些列数据,FROM指定这些数据来自哪些表或视图,WHERE指定了想看哪些行。在SQL语言中除了查询以外,许多其他功能也都离不开SELECT语句,如创建视图,实际上是利用查询语句来实现的;又如插入数据时,有很多时候是从另外一张或多张表中选择符合条件的数据。所以,掌握查询语句是掌握SQL语言的关键。

以下是SQL Server中的SELECT语句的完整用法。

SELECT select_list [INTO new_table_] FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression [ASC | DESC]]

下面简单介绍一下常用的SQL查询语法。

(1)检索表中所有列,这是最简单的一种方法,其格式为:

SELECT * FROM TABLE_NAME

(2)检索表中特定列,其格式为:

SELECT COLUMN_NAME FROM TABLE_NAME

在查找多列内容时,用‘,’将各字段分开。

(3)用单引号加入字符串,其格式为:

SELECT COLUMN_NAME 'STRING LITERAL' FROM TABLE_NAME

(4)改变列标题。在默认情况下,显示的查询结果中的列标题是列名,但用户可以改变列标题。共有以下两种方法:

方法1 采用“列标题=列名”的格式

SELECT COLUMN_HEADING=COLUMN_NAME FROM TABLE_NAME

方法2 采用“列名列标题”的格式

SELECT COLUMN_NAME COLUMN_HEADING FROM TABLE_NAME

(5)算术运算符。在列出现的位置上,可以使用算术运算符操纵列,对查询的结果进行计算。这些算术运算符包括:+(加)、-(减)、*(乘)、/(除)和%(取模)。其格式为:

{CONSTANT | COLUMN_NAME | FUNCTION |(SUBQUERY)} [{ARITHMETIC_OPERAOR | BITWISE_OPERATOR | STRING_OPERATOR} …]

(6)基于比较的选择行,其格式为:

SELECT SELECT_LIST FROM TALBE_LIST WHERE EXPRESSION COMPARISION_OPERATOR EXPRESSION

(7)基于范围的选择行,其格式为:

SELECT SELECT_LIST FROM TABLE_LIST WHERE EXPRESSION [NOT] BETWEEN EXPRESSION AND EXPRESSION

(8)基于列表的选择行,其格式为:

SELECT SELECT_LIST FROM TABLE_LIST WHERE [NOT] EXPRESSION [NOT] IN( VALUE_LIST)

(9)基于字符选择行。查找中,有时需要对字符串进行比较。使用LIKE运算符可以完成对字符串的模糊匹配。其格式为:

SELECT SELECT_LIST FROM TABLE_LIST WHERE EXPRESSION [NOT] LIKE 'STRING'

(10)基于多个搜索条件选择行。在WHERE子句中,也可以使用“逻辑运算符”连接多个条件,构成一个更复杂的条件进行查询。可以使用以下3种逻辑运算符:AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)。具体格式如下:

SELECT SELECT_LIST FROM TABLE_LIST WHERE [NOT] EXPRESSION {AND/OR} [NOT] EXPRESSION

(11)消除重复行。可以用DISTINCT消除重复行,其格式为:

SELECT [ALL | DISTINCT] SELECT_LIST FROM TABLE_NAME WHERE SEARCH_CONDITIONS

(12)结果排序。通常用户对查询出来的数据,希望按照某种顺序显示,以便查找。通过ORDER BY子句可以改变查询结果的显示顺序。ORDER BY子句的格式为:

SELECT COLUMN_NAME FROM TABLE_NAME [ORDER BY COLUMN_NAME | SELECT_LIST _NUMBER | EXPRESSION [ASC | DESC]

(13)分组查询。就是将表中数据按照一定条件分类组合,再根据需要得到统计信息。其格式为:

SELECT COLUMN_NAME FROM TABLE_NAME WHERE SEARCH_CONDITION [GROUP BY [ALL] AGGREGAT E_FREE_EXPRESSION]

(14)COMPUTE和COMPUTE BY。可以通过COMPUTE和COMPUTE BY计算出汇总数据。语法为:

COMPUTE ROW_AGGREGATE (COLUMN_NAME)

(15)连接查询。在数据库应用中,经常要涉及从两个或更多的表中查询数据,这就需要使用连接查询。其格式如下:

SELECT COLUMN_NAME FROM TABLE_NAME WHERE TABLE_NAME.COLUMN JOIN_ OPERATOR TABLE_NAME.COLUMN

上述的连接操作符(JOIN_OPERATOR)可以是:=、>、<、>=、<=、! =、< >、! >、! <、= *、* =。在ANSI中,“=”连接应该写成Inner Join;“* =”连接应该写成LEFT OUT JOIN;“= *”连接应该写成“RIGHT OUT JOIN”。在SQL Server中,这些写法都可以用。但是,ANSI规定的写法是INNER JOIN等标志。一般而言,在任何连接中,都使用“主键=外键”的连接查询条件。

(16)执行子查询。子查询是指一条SELECT语句作为另一条SELECT语句的一部分。外层的SELECT语句称为外部查询,内层的SELECT语句称为内部查询(或子查询)。子查询分成两种:嵌套查询和相关子查询。子查询能够将比较复杂的查询分解为几个简单的查询。虽然使用子查询可以产生在表之间使用连接操作符相同的结果,但是,其操作运行速度较连接操作慢。

嵌套查询的流程是:首先执行内部查询,查询出来的数据并不显示出来,而是传递给外层语句,作为该语句的查询条件来使用。子查询可以多层次嵌套。

例如查询每个书名、ID号及拥有该书的最高百分比版权的作者ID,格式为:

SELECT TITLE_ID, AU_ID, ROYALTYPER FROM TITLEAUTHORTA WHERE ROYALTYPER = (SELECT MAX (ROYALTYPER) FROM TITLEAUTHOR WHERE TITLE_ID =TA.TITLE_ID)

(17)查询的基础上创建新表。SELECT INTO的作用是在查询的基础上创建新表。若建永久表,必须设置“SELECT INTO / BULKCOPY”;若建临时表,必须在表前设置#(局部临时表)或##(全局临时表)。新表的行和列来自查询结果。例如创建#PHONYTABLE临时表,该表的数据由每个书名的前40个字符及月平均销售量组成,格式为:

SELECT TITLE = SUBSTRING (TITLE, 1, 40), MONTHLY = YTD_SALES/12 INTO #PHONYTABLE FROM TITLES

(18)合并数据集。合并数据集(UNION)的作用是,把结果组合成一个结果集来操作两个或更多的查询结构。例如:

SELECT 'ANSI', CONVERT (varchar (30), GETDATE (), 102) AS style UNION SELECT 'Japanese', CONVERT (varchar (30), GETDATE (), 111) UNION SELECT 'Europen', CONVERT (varchar (30), GETDATE (), 113)


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2022 biye5u.com. All Rights Reserved.