首页 百科知识 查询的语句

查询的语句

时间:2022-11-25 百科知识 版权反馈
【摘要】:在SQL语言中,查询是通过SELECT语句实现的。SELECT之后输入目标表的列名称,即字段名,这些字段将构成查询结果的字段。例如下列语句可以输出年龄在20岁和21岁之间的学生信息。例如,对于前面提到的从图2-9的三个表中查询的问题,通过SELECT FROM语句,我们可以很容易实现第一步操作。有时,我们都希望按查询结果的记录进行排序,这就必须借助于ORDER BY子句。

2.3.2 SQL查询的SELECT语句

在SQL语言中,查询是通过SELECT语句实现的。一个完整的SELECT语句包括6个子句,其中前面的2个子句是必不可少的。

SELECT与FROM子句

SELECT之后输入目标表的列名称,即字段名,这些字段将构成查询结果的字段。比如,在SELECT之后输入的是“姓名”、“年龄”、“籍贯”,那么,得到的查询结果就是由这三个字段构成的一个视图。另外,有时候我们需要查看整张表格的内容,当然,我们可以把目标表的所有列名都输入到SELECT之后,不过这种做法太过繁琐。此时,只需在SELECT之后输入通配符“*”,就可以代表表中的全部字段。

FROM之后输入的是目标表的表名。例如,上述三个字段均是来自“学生基本信息表”,那么,FROM之后就应该输入“学生基本信息表”。

例如,下列语句将得到学生信息表中所有的信息。

img19

有时,我们希望去掉查询结果中的重复记录,此时可以在SELECT后面加上“DISTINCT”。例如,下列语句

img20

如果直接输入:SQL>SELECT籍贯FROM学生基本信息表;,输出结果中将会有重复记录出现,如在列名之前加上DISTINCT就可以消除重复记录。DISTINCT在SQL查询应用中有着很重要的作用,比如,学校想了解一下学生生源情况,显然,我们需要像例题二那样,去掉籍贯记录中那些重复的部分。

WHERE子句

WHERE子句是SELECT查询的条件部分,其后的查询条件形式多样,能满足用户个性化的查询需求。例如我们想知道学生中有多少人是来自北京的,或者有哪些同学是90后,这些查询都要用到WHERE子句。根据WHERE子句内容的不同,我们可以把查询分成比较查询、范围查询、集合查询、部分匹配查询、多重条件查询等。需要说明,WHERE子句的内容是非常丰富的,其涵盖的内容远远超过了这几种基本的分类,但是,这些分类包括了最基本的知识,有了这些基础知识,读者就可以根据自己的需求构造各种复杂的条件查询。

比较查询中的操作符主要有等于(=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)以及不等于(!=或者<>)。例如,通过下面的SQL语句,就可以得到所有年龄小于等于18岁的学生的记录。

img21

范围查询是通过“BETWEEN…AND…”来限定某个字段的取值范围。例如下列语句可以输出年龄在20岁和21岁之间的学生信息。注意,BETWEENAND所确定的范围是包括边界的。

在本例中,我们查询的是籍贯为湖南或云南的同学,其实,要实现这一操作还有其他的方法,如:SQL>SELECT*FROM学生基本信息表WHERE籍贯='湖南OR'籍贯='云南';。这个查询用到了逻辑运算符OR,除了OR之外,还有AND,NOT两种逻辑运算符,使用逻辑运算符可以把多个查询条件组合起来,这就是上文提到的多重条件查询。总之,要满足某一查询要求,查询命令的形式可以是多样的。

部分匹配查询。下列语句将输出所有籍贯以“湖”字开头的学生的姓名、性别和籍贯。

img23

在LIKE表达式中“%”是一种通配符,它表示可能在“湖”中出现的其他信息。如“%南”表示籍贯以“南”结尾的记录,“南%”表示籍贯以“南”开头的记录,而“%南%”则表示籍贯中含有“南”字的记录。在LIKE语句中,如果想查找在某一确定的位置上含有特定字符的数据时,就要用到另外一个通配符下画线“_”。例如,在企业“顾客信息表”中输入: SQL>SELECT*FROM CUSTOMER WHERE FIRSTNAME LIKE'_L%';,我们将得到“顾客信息表”中姓氏第二个字母是“L”的所有记录。

表的连接

在此之前,我们学习的查询都是单一表格的查询。在数据库中,各个表中存放着不同的数据,用户往往需要用多个表中的数据来获取所需要的信息。如果没有这个功能的话,将不得不将一个应用程序所需的所有数据放在一张表中,关系数据库的表格就不再是“小表”了。

要实现表的连接操作,必须完成两个步骤:第一,准确表示要选择的列;第二,正确描述连接条件。例如,对于前面提到的从图2-9的三个表中查询的问题,通过SELECT FROM语句,我们可以很容易实现第一步操作。如:SQL>SELECT*FROM供应商表,零件表,零件供应表;。但是,这里有一个问题,就是供应商表和零件供应表两张表中均有“代号”字段,零件表和零件供应表两张表中均有“编号”字段。因此,常用的做法是为每一字段前面加上表的名称,即写成“表名.字段名”的形式。

如何准确地描述连接是表的连接查询的重点,最常见的连接条件是由比较运算符连接的,其基本的格式是:表名1.列名1<比较运算符>表名2.列名2(其中比较运算符主要有:=、>、<、>=、<=、!=)。当然,如果涉及多个条件的话,要使用AND、OR与NOT三种逻辑运算符将多个条件连接起来。例如,下列SQL语句可以从图2-9的三个表中得到“从北京机床厂购进了哪些零部件”。

WHERE条件部分的前两个条件都是连接条件,分别实现了供应商表与零件供应表的连接、零件表与零件供应表的连接,第三个条件是一个选择条件,从供应商表中选取除了满足条件的行。这三个条件必须同时满足。

SELECT语句中的其他内容

有时,我们都希望按查询结果的记录进行排序,这就必须借助于ORDER BY子句。ORDER BY子句一般都出现在其他子句之后,排序方式可以指定,ASC为升序,DESC为降序,默认为升序。例如,下列SQL语句的输出记录首先是按照年龄降序排列,年龄相同的记录则按照学号升序排列。

在SQL语句中,使用GROUP BY子句可以对查询结果分组。此外,SQL语句还有丰富的函数功能,支持汇总函数、日期与时间函数、字符函数、数学函数、转换函数等。限于篇幅,这些内容不再详细叙述。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈