SQL SERVER设计与高级查询 第四章 学习笔记

SQL SERVER设计与高级查询

第四章  高级查询

【基础回顾】

内联接查询

FROM子句中使用INNER JOIN...ON子句实现

SELECT C.IP,U.UserName,U.Dept

FROM ComputerList AS C INNER JOIN UserList AS U ON(C.ID=U.ID)

WHERE U.UserName!=''

 

左外联接Left Outer Join

SELECT C.IP AS IP地址,U.UserName AS 用户名,U.Dept as 部门

FROM ComputerList AS C

LEFT OUTER JOIN UserList AS U ON C.ID=U.ID

 

右外联结……

 

【高级查询】

--简单子句格式

select * from TableName where 字段> (子查询)

--例句:查询比某同学年龄大的学员信息

select * from stuInfo

where stuAge > (select stuAge from stuInfo where stuName = '梅超风')

--表连接都可以用子查询替换,反之不一定

--子查询适合做查询筛选条件,表连接适合做多表查询

 

-- IN NOT IN 子查询

--IN 后面的子查询可以返回多条记录

--例句:查询参加过考试学院信息/ 未参加考试的学员信息使用NOT IN

select * from stuInfo

where stuNo  in (select stuNo from stuMarks)

 

in和比较运算符区别是:运算结果是否为一

 

--EXISTS NOT EXISTS 子查询

--一般用于IF语句的存在检测,也可以作为WHERE语句的子查询

--子句查询结果(结果集)非空,则EXISTS(子查询)返回true,否则返回false

if exists (子查询)

       语句

--例句:如果笔试成绩有人达到分,每人+2分,否则,每人+5

if exists(select writtenExam from stuMarks where writtenEam >80)

       begin

              print '本班笔试成绩有人高于分,每人加分,加分后的成绩是:'

              update stuMarks set writtenExam = writtenExam +2

              select * from stuMarks

       end

else

       begin

              print '本班笔试成绩没有人高于分,每人加分,加分后的成绩是:'

              select * from stuMarks

       end

 

(如果有不对的或需要补充的地方,还请老师和同学们帮忙指出来,谢谢!)

 

2010/3/14 整理

你可能感兴趣的:(SQL SERVER设计与高级查询 第四章 学习笔记)