欢迎来到天天文库
浏览记录
ID:53799898
大小:78.50 KB
页数:4页
时间:2020-04-07
《高级查询技术.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、高级杳询技术高级杏询技术主要是涉及多个表的链接杏询技术、嵌入SELECT语句的子查询技术,把多个杳询联合起來的联合技术等。1.连接查询需要同吋从两个或者连个以上的表中检索数据。链接就是允许同时从两个表或者两个以上的表屮检索数据,指定这些表中的某个或者某些列作为连接条件。在SQLServer«
2、',可以使用两种连接语法的形式,一种是ANSI链接语法形式,这是连接条件出现在FROM子句中;另外一种SQLServer链接语法形式,这是连接条件出现在WHERE条件中。1.ANSI链接链接错做可以同时杳询两个或者多个表中的数据,所生成的结果集包含多个表中的字段,需要使用连个表中共
3、同拥有的字段以连接多个表。进行连接操作时,SQL一行一行地比较所指定的字段,然后把比较后的结果和满足条件的数据合并,并生成新的记录。有三种连接方式:内连接、外连接和交叉连接。在一个SELECT语句中,可以连接多个表;链接通过扩展SELECT语句的FROM字句,增加了两个关键字:JOIN和ONJOIN:指定要了链接的表ON:指定这些表共同拥有的字段在表的主键和外部键的基础上,指定连接条件。ANSI链接语法形式如下所示:SELECTtable_namexolumn_name,table_name4、OINtable^nameONsearch.conditions}WHERE[search_conditions]其中[join」ype]可以为如下三个关键字形式:INNER(内连接):链接查询结果集中仅包含满足条件的行,内连接是SQLServer缺省的连接方式,可以把INNERJOIN简写成JOIN;OUTER(外连接):链接查询结果集中既包含哪些满足条件的行,还包含其中某个表的全部行,有三种形式的外连接:左外连接、右外连接、全外连接。例如:已经选修了4号课程的同学信息的示例,该示例涉及到了学生表和选修课:SELECT学生表FROM学生表JOIN选课表ON学生表.学号5、选课表•学号WHERE选课表课程号=42.SQLServer链接多表连接,可以在FROM子句后直接指定多个表,语义上表示从这几个表的笛卡尔积中检索数据,可以用WHERE子句设定过滤条件。SQLServer链接语法形式如-卜:SELECTtable_name.column_name,table_name.column_naine,FROM{table_name,table_name,}WHEREtable_name.column_namejoin_operatortable_name.column_name在此种语法形式中,FROM子句列出了连接时所使用到的全部衣名,WH6、ERE子句指定哪些行应该出现在结果集中,即用WHERE子句设定过滤条件。在WHERE子句中,在两个连接的列中使用链接运算符。例如:检索出至少已经有一门课程及格的同学的信息示例:SELECTDISTINCT学生农*FROM学生表选课表WHERE学生表.学号二选课表.学号AND选课表.成绩=601.子杳询子杳询是一系列SELECT语句。SELECT语句可以嵌套在其他许多语句中,例如SELECT.INSERT.UPDATE、DELETE等,这些嵌套的SELECT语句就称为子杏询。子杏询可以把一个复杂的查询分解成一系列的逻辑步骤,这样就可以用一个单个的语句解决一个复杂的查询问题7、。当一个杏询依赖于另一个查询的结果时,子查询会很有用。使用子查询时,应注意:子查询要用括号起來只需要一个值或一系列的值,就可以用子查询代替一个表达式子查询中不能査询包含数据类型是text或image的字段子杳询中也可以再包含子查询,嵌套可以多至32层1.把子查询用作派生的表可以用子查询产生一个派生的表,用于代替FROM子句中的表。派生表示FROM子句中子杳询的一个特殊用法,用一-个别名或用户自定义的名字來引用这个派生表。FROM子句中的子杳询将返冋一个结果集,这个结果集所形成的表将被外层SELECT语句使用。例如:内层杳询用子杳询产生了一个派生的农,外层杳询将使用内层杏8、询的结果集。在功能上,派生表本身就等同于一个完報的查询SLECTA*FROMselect学号,姓名,年龄from学生农Where班级='GZ02计6'asa2.把子查询用作表达式在T-SQL中,所有使用表达式的地方,都可以用子杳询来代替。此吋子查询必须返冋单个的值或某一个字段的值。子查询可以返冋一系列的值来代替出现在WHERE子句中的IN关键了的表达式。例如:杳询GZ02计7班同学的平均年龄以及每个同学年龄与平均年龄的差SELECTavg(年龄)FROM学生表as平均年龄英计算结果作为选择列表中的一•个输出列,并作为算术农达式的一部分输出
4、OINtable^nameONsearch.conditions}WHERE[search_conditions]其中[join」ype]可以为如下三个关键字形式:INNER(内连接):链接查询结果集中仅包含满足条件的行,内连接是SQLServer缺省的连接方式,可以把INNERJOIN简写成JOIN;OUTER(外连接):链接查询结果集中既包含哪些满足条件的行,还包含其中某个表的全部行,有三种形式的外连接:左外连接、右外连接、全外连接。例如:已经选修了4号课程的同学信息的示例,该示例涉及到了学生表和选修课:SELECT学生表FROM学生表JOIN选课表ON学生表.学号
5、选课表•学号WHERE选课表课程号=42.SQLServer链接多表连接,可以在FROM子句后直接指定多个表,语义上表示从这几个表的笛卡尔积中检索数据,可以用WHERE子句设定过滤条件。SQLServer链接语法形式如-卜:SELECTtable_name.column_name,table_name.column_naine,FROM{table_name,table_name,}WHEREtable_name.column_namejoin_operatortable_name.column_name在此种语法形式中,FROM子句列出了连接时所使用到的全部衣名,WH
6、ERE子句指定哪些行应该出现在结果集中,即用WHERE子句设定过滤条件。在WHERE子句中,在两个连接的列中使用链接运算符。例如:检索出至少已经有一门课程及格的同学的信息示例:SELECTDISTINCT学生农*FROM学生表选课表WHERE学生表.学号二选课表.学号AND选课表.成绩=601.子杳询子杳询是一系列SELECT语句。SELECT语句可以嵌套在其他许多语句中,例如SELECT.INSERT.UPDATE、DELETE等,这些嵌套的SELECT语句就称为子杏询。子杏询可以把一个复杂的查询分解成一系列的逻辑步骤,这样就可以用一个单个的语句解决一个复杂的查询问题
7、。当一个杏询依赖于另一个查询的结果时,子查询会很有用。使用子查询时,应注意:子查询要用括号起來只需要一个值或一系列的值,就可以用子查询代替一个表达式子查询中不能査询包含数据类型是text或image的字段子杳询中也可以再包含子查询,嵌套可以多至32层1.把子查询用作派生的表可以用子查询产生一个派生的表,用于代替FROM子句中的表。派生表示FROM子句中子杳询的一个特殊用法,用一-个别名或用户自定义的名字來引用这个派生表。FROM子句中的子杳询将返冋一个结果集,这个结果集所形成的表将被外层SELECT语句使用。例如:内层杳询用子杳询产生了一个派生的农,外层杳询将使用内层杏
8、询的结果集。在功能上,派生表本身就等同于一个完報的查询SLECTA*FROMselect学号,姓名,年龄from学生农Where班级='GZ02计6'asa2.把子查询用作表达式在T-SQL中,所有使用表达式的地方,都可以用子杳询来代替。此吋子查询必须返冋单个的值或某一个字段的值。子查询可以返冋一系列的值来代替出现在WHERE子句中的IN关键了的表达式。例如:杳询GZ02计7班同学的平均年龄以及每个同学年龄与平均年龄的差SELECTavg(年龄)FROM学生表as平均年龄英计算结果作为选择列表中的一•个输出列,并作为算术农达式的一部分输出
此文档下载收益归作者所有