文档介绍:第4章数据库的查询和视图
连接、选择和投影
选择(Selection)
学号
姓名
专业名
性别
出生时间
总学分
备注
001101
王林
计算机
男
1980-02-10
50
001102
程明
计算机
男
1981-02-01
50
001103
王燕
计算机
女
1979-10-06
50
选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。
选择运算的记号为σF(R)。
其中σ是选择运算符,下标F是一个条件表达式,R是被操作的表。
【】。
上式中F:性别=“女”,。
学号
姓名
专业名
性别
出生时间
总学分
备注
001103
王燕
计算机
女
1979-10-06
50
投影(Projection)
投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为:ΠA(R)。
其中A是属性名(即列名)表,R是表名。
【】、姓名和总学分投影,运算式为:
Π学号,姓名,总学分(学生)
。
学号
姓名
总学分
001101
王林
50
001102
程明
50
001103
王燕
50
连接(JOIN)
T1
T2
T3
T4
T5
1
A
1
3
M
2
B
2
0
N
连接(JOIN)
数据库的查询
要选择XSCJ为当前数据库,使用语句:
USE XSCJ
一旦选择了当前数据库后,若对操作的数据库对象加以限定,则其后的命令均是针对当前数据库中的表或视图等进行的。
下面介绍SELECT语句,它是T-SQL的核心。
语法格式:
SELECT <select_list> /*指定要选择的列或行及其限定*/
[ INTO <new_table> ] /*INTO子句,指定结果存入新表*/
FROM <table_source> /*FROM子句,指定表或视图*/
[ WHERE <search_condition> ] /*WHERE子句,指定查询条件*/
[ GROUP BY <group_by_expression> ] /*GROUP BY子句,指定分组表达式*/
[ HAVING <search_condition> ] /*HAVING子句,指定分组统计条件*/
[ ORDER BY <order_expression> [ ASC | DESC ]]
/*ORDER子句,指定排序表达式和顺序*/
选择列
通过SELECT语句的<select_list>项组成结果表的列。
<select_list>::=
SELECT [ ALL | DISTINCT ] [ TOP n [ PERCENT ] [ WITH TIES ] ]
{ * /*选择当前表或视图的所有列*/
| { table_name | view_name | table_alias } .* /*选择指定的表或视图的所有列*/
| { colume_name | expression | IDENTITYCOL | ROWGUIDCOL }
[ [ AS ] column_alias ] /*选择指定的列*/
| column_alias = expression /*选择指定列并更改列标题*/
} [ , … n ]
1. 选择一个表中指定的列
使用SELECT语句选择一个表中的某些列,各列名之间要以逗号分隔。
【】查询XSCJ数据库的XS表中各个同学的姓名、专业名和总学分。
USE XSCJ
SELECT 姓名,专业名,总学分
FROM XS
选择列
。
选择列
【】查询XS表中计算机专业同学的学号、姓名和总学分。查询XS表中的所有列。
SELECT 学号,姓名,总学分
FROM XS
WHERE 专业名= ‘计算机’
GO
SELECT *
FROM XS
GO
当在SELECT语句指定列的位置上使用*号时,表示选择表的所有列。
选择列
2. 修改查询结果中的列标题
当希望查询结果中的某些列或所有列显示时使用自己选择的列标题时,可以在列名之后使用AS子句来更改查询结果的列标题名。其中column_alias是指定的列标题。
【】查询XS表中计算机系同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark