资讯详情

SQLServer学习笔记五:查询基础

学习目标

  • 了解查询机制
  • 使用SELECT条件查询语句
  • 掌握查询排名
  • 查询使用表达式、运算符和函数

查询机制

查询是针对表中已经存在的数据行,可以简单地理解为筛选 例如,从学生表中查询所在班级=S202的记录集。

学生编号 学生姓名 地址 所在班级
001 张三 山东济南 S201
002 张三 山东青岛 S202
003 张三 山东潍坊 S203
004 张三 山东烟台 S202
005 张三 东威 S203
006 张三 山东济宁 S202
007 张三 山东淄博 S204

SELECT 学生编号,学生姓名, 地址, 所在班级 FROM 学生表 WHERE 所在班级='S202' 

学生编号 学生姓名 地址 所在班级
002 张三 山东青岛 S202
004 张三 山东烟台 S202
006 张三 山东济宁 S202

在接受查询请求时,数据表可以理解为逐行判断,以判断是否符合查询条件。如果符合要求,提取,然后组织所有选定的行,形成另一个类似表的结构,即查询结果,通常称为记录集(Record Set)。

由于记录集的结构和表结构类似,都是由行组成,因此在记录集上依然可以进行再次查询。

使用SELECT查询句子

SELECT <列名> FROM <表名> [WHERE <表达式查询条件>] [ORDER BY <排序的列名> [ASC 或 DESC]] 

其中,WHERE可选择条件。如果没有限制,请查询返回所有银行的数据项。ORDER BY用于排序。

查询所有数据行和列

列出表中的所有行和列相对简单,此时可以使用*表示所有列:

SELECT * FROM students 

查询部分行或列

查词部分列需要列出不同的列,查询部分行需要使用WHERE条件限制子句。

SELECT sno, sname, saddress FROM students WHERE saddress='山东威海' 

以上查询句只会查询地址为山东威海的学生,只会显示编号、姓名和地址列。同样,以下句子用于查询地址不是山东威海的学生信息。

SELECT sno, sname,saddress FROM students WHERE saddress <> 山东威海 

查询中使用列的别名

AS可用于改变结果集列的名称,也可以为组合或者计算出的列指定名称,还有一种情况是让标题列的信息更易懂,例如,把SCode列名查询后显示为“学生编号”。例如:

SELECT sno AS 学生编号, sname AS 学生姓名, saddress AS 地址
FROM students
WHERE saddress <> '山东威海'

还有一种情况是为计算、合并得到的新列进行命名。例如,假设在某数据库的雇员表Employee中存在FirstName列和 LastName列,现在需要将这两列合并成一个叫作“姓名”的列,可以使用下面的查询语句。

SELECT FirstName+'.'+LastName AS 姓名
FROM Employees

重新命名列名还可以使用=,例如:

SELECT 姓名=FirstName +' .' + LastName
FROM Employees

查询空值

在SQL语句中采用IS NULL或者IS NOT NULL来判断是否为空,因此,如果要查询学生信息表中没有填写Email信息的学生,可以使用以下查询语句。

SELECT sname 
FROM students 
WHERE semail IS NULL

在查询中使用常量列

有时接,需要将一些常量的默认信息添加到查询的输出中,以方便统计或计算。例如,查询学生信息的时候,学校名称统一都是“威海职业学院”,查询语句如下:

SELECT 姓名=snmae, 地址=saddress, '威海职业学院' AS 学校名称
FROM students

查询就多了一列“学校名称”,该列的所有数据都是“威海职业学院”。

查询返回限制的行数

一些查询需要返回限制的行数。例如,在测试的时候,如果数据库中有上万条记录,而只要查前面十行数据是否有效就可以了,没有必要查询输出全部的数据,以提高查询速度,这时候就用到限制返回行数的查询。

在T-SQL中,限制行数使用TOP关键字来约束。例如,要查询返回众多学生记录中前五位女生的姓名和地址信息,查询语句如下。

SELECT TOP 5 sname, saddress
FROM students WHERE gender='女'

还有一种情况是需要从表中按一定的百分比提取记录,这时候还需要用到PERCENT 关键字来限制。例如,要提取20%的女生数据如下。

SELECT TOP 20 PERCENT sname, saddress
FROM Students WHERE gender='女'

查询排序

如果需要按照一定顺序排列查询语句选中的行,则需要使用ORDER BY子句,并且排来可升序(ASC)或者降序(DESC)、如果不指定ASC或者DESC,结果集按默认ASC升序排序。 上面讲述过的SQL语句,都可以在其后面再加上ORDER BY来进行排序。

例如,查询学生成绩的时候,如果把所有成绩都降低10%后加5分,再查询及格成绩并技绩高低来进行排列,SQL语句如下。

SELECT sno AS 学生编号,(grade*0.9+5) AS 综合成绩
FROM score
WHERE (grade*0.9+5)>60
ORDER BY score

还可以按照多个列进行排序。例如,要在学生成绩排序的基础上,再按照课程ID进行排序的语句如下。

SELECT sno AS 学生编号,cno AS 课程ID, grade AS 成绩
FROM score
WHERE grade >60
ORDER BY grage,cno

在查询中使用函数

SQL Sever 提供了一些内部函数,每个函数都实现不同的功能,不同类别的函数都可以和SELECTUPDATEINSERT语句联合使用。 常用的有四类函数,分别是字符串函数、日期函数、数学函数、系统函数。

字符串函数

函数 功能 示例
CHARINDEX() 返回指定字符串在原串中的位置 Select CHARINDEX('G', 'KING') 结果为4

标签: 固态继电器s203zl

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台