2016-04-05
SELECT语句的基本语法格式如下:
SELECT<;输出列表>
[ INTO<;新表名>]
FROM<;数据源列表>
[ WHERE <;查询条件表达式> ]
[GROUP BY <;分组表达式> [HA VING<;过滤条件> ] ]
[ ORDER BY <;排序表达式> [ ASC | DESC ] ]
|(竖线)分隔括号或大括号中的语法项。只能选择其中一项。
[ ](方括号)可选语法项。不要键入方括号。
< >(小括号)必选语法项。不要键入小括号。
参数说明如下:
SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。
INTO子句用于指定所要生成的新表的名称。
FROM子句用于指定要查询的表或者视图,最多可以指定个表或者视图,用逗号相互隔开。WHERE子句用来限定查询的范围和条件。
GROUP BY子句是分组查询子句。
HA VING子句用于指定分组子句的条件。GROUP BY子句、HA VING子句和集合函数一起可以实现对每个组生成一行和一个汇总值。
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 常见的聚合函数
select distinct from函数名称说明
MIN(表达式)计算一列中的最小值
MAX(表达式)计算一列中的最大值
SUM(表达式)按列计算值的总和
A VG(表达式)按列计算平均值
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_bil l
在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='女'
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论