SELECT语句的基本语法

  • 格式:pdf
  • 大小:380.98 KB
  • 文档页数:5

2016-04-05

SELECT语句的基本语法格式如下: SELECT

[ INTO ] FROM

[ WHERE ]

[GROUP BY [HAVING ] ]

[ ORDER BY [ ASC | DESC ] ]

|(竖线) 分隔括号或大括号中的语法项。只能选择其中一项。

[ ](方括号) 可选语法项。不要键入方括号。

< >(小括号) 必选语法项。不要键入小括号。

参数说明如下: SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、

变量等。 INTO子句用于指定所要生成的新表的名称。 FROM子句用于指定要查询的表或者视图,最多可以指定个表或者视图,用逗号相互隔开。

WHERE子句用来限定查询的范围和条件。

GROUP BY子句是分组查询子句。

HAVING子句用于指定分组子句的条件。GROUP BY子句、HAVING子句和集合函数一起

可以实现对每个组生成一行和一个汇总值。 ORDER BY子句可以根据一个列或者多个列来排序查询结果。

在SELECT语句中,可以在SELECT子句中选择指定的数据列、改变列标题、执行数据运

算、使用ALL关键字、使用DISTINCT关键字等。

--------------------------------------------------------------------------------------------------------- --1.查询所有的列。SELECT语句中使用使用*表示查询所有列。

--【例-1】查询所有学生的信息。

SELECT * FROM students

--2.查询指定的列。选择部分列并指定它们的显示次序,选择的列名必须存在,但列名称

之间的顺序既可以与表中定义的列顺序相同,也可以不相同。 --【例-2】检索所有学生的学号、姓名和性别信息。

SELECT studentid,name,sex from students

/*3.更改列标题

改变列标题有以下三种方法:

()采用“列标题=列名”的格式

()采用“列名列标题”的格式 ()采用“列名as 列标题”的格式*/

--【例-3】查询每个学生的学号、姓名,并在每人的学号标题上显示“学号”,姓名标题上显

示“学生姓名”。 SELECT 学号=studentid,name as 学生姓名from students

--【例-4】查询每个学生的姓名、院系,并在每人的姓名标题上显示“学生姓名”,院系列标

题显示为“学生所在院系”。 SELECT name 学生姓名,departmentid as 学生所在院系FROM students

/*4.使用TOP 关键字限制返回的行数。使用关键字TOP n [PERCENT]选项可以限制返回

的数据行数,TOP n说明返回n行,而使用TOP n PERCENT时,n是表示一百分数,指定

返回的行数等于总行数的百分之几。*/ --【例-5】检索E_bill(电费收费单)表中前条电费缴费记录。

SELECT top 10 * from E_bill --【例-6】检索E_bill表中前%电费缴费记录,包括缴费编号、缴费时间和缴费人。

SELECT top 10 percent billid,amount,operatortime from E_bill

/*5.使用DISTINCT 关键字删除重复行。SELECT语句中使用ALL或DISTINCT选项分别来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。*/ --【例-7】从students表中查询所有学生的院系编号信息,并消去重复记录。

SELECT distinct departmentid from students

/*6.使用计算列。可以在SELECT关键字后面列出的列项中使用各种运算符和函数从而产生计算列。这些运算符和函数包括算术运算符、数学函数、字符串函数、日期和时间函数、

系统函数等。*/ --【例-8】使用字符串函数,查看每个学生学号的长度。

SELECT len(studentid) as 学号长度from students

/*7.使用聚合函数。在SELECT子句中可以使用聚合函数进行运算,运算结果作为新列出现

在结果集中。 表-1 常见的聚合函数

函数名称 说明

MIN(表达式) 计算一列中的最小值

MAX(表达式) 计算一列中的最大值

SUM(表达式) 按列计算值的总和

AVG(表达式) 按列计算平均值

COUNT(表达式) 计算记录数

*/ --【例-9】查看students表的学生总数。

SELECT count(*) as 总数from students --【例-10】查看电费缴费记录的总额。

SELECT sum(amount) as 总额from E_payment

2016-04-12

通过在SELECT语句中使用INTO子句,可以创建一个新表并且将查询结果添加到新表中。

INTO子句基本语法格式如下: SELECT value1, value2 ,…

INTO Table2

FROM Table1

SELECT INTO语句要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将

Table1中指定字段数据复制到Table2中。 【例-11】使用INTO子句创建一个包含学生[学号]和[姓名]的新表new_student。

在查询编辑器窗口中,输入如下的Transact-SQL语句。 USE Fee

GO

--select studentid '学号',name '姓名' from students SELECT studentid,name INTO new_student FROM students

--select * into student_bak from students

FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中可指定多个[表]或

[视图],它们之间用逗号分隔。 【例-12】使用表别名查询学生表的所有信息。

在查询编辑器窗口中,输入如下的Transact-SQL语句。

USE Fee

GO

SELECT s.* FROM students as s --as后指定数据表的别名

--select * from area,e_bill

在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这

些列所属的表或视图。例如在表和表中同时存在id列,在查询两个表中的id时应使用下面语句

格式加以限定。 SELECT 表.id,表.id

FROM 表, 表

WHERE表.id=表. Id

使用WHERE子句的目的是为了从表格的数据集中过滤出符合条件的行。 WHERE子句的基本语法格式如下:

WHERE < 查询条件表达式>

WHERE子句中的查询条件常用的有以下种。

1.比较运算符

比较运算符是搜索条件中最常使用的。WHERE子句的语法允许在列名称和列值之间使用比较运算符。 运算符号 说明

= 用于测试两个表达式是否相等的运算符。

<> 用于测试两个表达式是否彼此不相等的运算符。

!= 用于测试两个表达式是否彼此不相等的运算符。

> 用于测试一个表达式是否大于另一个表达式的运算符。 >= 用于测试一个表达式是否大于或等于另一个表达式的运算符。

!> 用于测试一个表达式是否不大于另一个表达式的运算符。

< 用于测试一个表达式是否小于另一个表达式的运算符。

<= 用于测试一个表达式是否小于或等于另一个表达式的运算符。

!< 用于测试一个表达式是否不小于另一个表达式的运算符。

【例-13】查询姓名为“王敏”的学生信息。

在查询编辑器窗口中,输入如下的Transact-SQL语句。 USE Fee GO

SELECT * FROM students WHERE name<>'王敏' --使用单引号把字符型数据括起来 【例-14】查询用电量大于度的记录。

在查询编辑器窗口中,输入如下的Transact-SQL语句。 USE Fee GO

SELECT * FROM E_bill WHERE usednum>200

2.列表运算符

列表运算符用来判断给定的列值是否在所给定的一个列表中。列表运算符包括IN和NOT IN。IN关键字给出表达式的取值范围。

IN关键字的基本语法格式如下:

WHERE 表达式[NOT] IN (值, 值,…值n) 【例-15】在department(院系)表中,查询院系编号为、和的院系信息。

在查询编辑器窗口中,输入如下的Transact-SQL语句。 SELECT * FROM department WHERE departmentid in(1,6,10)

SELECT * FROM department WHERE departmentid > 5

3.逻辑运算符

指定一个查询条件并不能满足用户的需求,此时需要指定多个条件来限制查询,那么就要在WHERE子句中使用逻辑运算符把若干个搜索条件合并起来,组成复合搜索条件。

运算符 说明 NOT 对谓词指定的布尔表达式求反。

AND 组合两个条件,并在两个条件都为TRUE时取值为TRUE。

OR 组合两个条件,并在任何一个条件为TRUE时取值为TRUE。 【例5-16】在学生表(student)中,查询楼栋编号为3的女生的姓名和房间信息。

在查询编辑器窗口中,输入如下的Transact-SQL语句。

USE Fee

GO SELECT name,room FROM student WHERE buildid=3 and sex='女'