参见《SQL Sever 2005 数据库基础及应用技术教程与实训》周奇
1. Compute 子句
Compute 子句用来计算总计或进行分组小计,总计值或小计值作为附加的新行出现在查询结果中. 该子句用在WHERE子句之后.
例子:查询出版社”中国长安”出版图书的本数,包括编号,书名,ISBN号和出版社,并计算平均定价。
USE book
GO
SELECT [编号]
,[ISBN号]
,[书名]
,[定价]
,[出版社]
FROM [book].[dbo].[book1]
WHERE 出版社='中国长安'
COMPUTE AVG(定价)
GO
2. Compute By 子句
Compute By 子句对 By 后面给出的列进行分组显示,并计算该列的分组小计。 使用 Compute By 子句时必须按照 Order By 和 Compute By 中 By 指定的列进行排序。
例子:按各出版社显示 book1 表中的编号,书名,定价,出版社,并计算每个出版社的平均定价。
USE book
GO
SELECT [编号]
,[ISBN号]
,[书名]
,[定价]
,[出版社]
FROM [book].[dbo].[book1]
ORDER BY 出版社
COMPUTE AVG(定价) BY 出版社
GO
3. Exists
select * from 表A where exists(select * from 表B where 表B.id=表A.id)
这句相当于
select * from 表A where id in (select id from 表B)
exits适合内小外大的查询,in适合内大外小的查询
4. 对多个表进行查询
有两个表 book1 和 teacher, 表结构如下图
(1) 内连接 inner join
select [编号]
,[ISBN号]
,[书名]
,[定价]
,[出版社]
,[出版日期]
,A.[作者编号]
,[作者姓名]
,[性别]
,[职称]
,[联系电话] from [book].[dbo].[book1] A
inner join [book].[dbo].[teacher] B
on A.[作者编号] = B.[作者编号]
(2) 左外连接 left join
select [编号]
,[ISBN号]
,[书名]
,[定价]
,[出版社]
,[出版日期]
,A.[作者编号]
,[作者姓名]
,[性别]
,[职称]
,[联系电话] from [book].[dbo].[book1] A
left join [book].[dbo].[teacher] B
on A.[作者编号] = B.[作者编号]
(3) 右外连接 right join
select [编号]
,[ISBN号]
,[书名]
,[定价]
,[出版社]
,[出版日期]
,A.[作者编号]
,[作者姓名]
,[性别]
,[职称]
,[联系电话] from [book].[dbo].[book1] A
right join [book].[dbo].[teacher] B
on A.[作者编号] = B.[作者编号]
(4) 全外连接 full join
select [编号]
,[ISBN号]
,[书名]
,[定价]
,[出版社]
,[出版日期]
,A.[作者编号]
,[作者姓名]
,[性别]
,[职称]
,[联系电话] from [book].[dbo].[book1] A
full join [book].[dbo].[teacher] B
on A.[作者编号] = B.[作者编号]