1、SQL 查询语句精华使用简要(转)一、 简单查询 91Y2f*Mz4B简单的 Transact-SQL 查询只包括选择列表、 FROM 子句和 WHERE 子句。它们分别说明所查询列、查询的_y L# E-表或视图、以及搜索条件等。例如,下面的语句查询 testtable 表中姓名为“张三”的 nickname 字段和 email 字段。SSELECT nickname,emailFROM testtable 疯狂学习网,学习,www.c,考研WHERE name=张三(一) 选择列表选择列表(select_list) 指出所查询列,它可以是一组列名列表、星号、表达式、变量( 包括局部变疯狂学
2、习网, 视频资料,视频教程, 视频学习,,学习资料,学习论坛,视频教程,IT 培训资料, 考研资料,考研论坛,疯狂下载 ,视频教学 ,MP3 下载, 学习论坛 ,cisco 视频,华为资料,系统集成资料 ,外语资料,法律资料, 管理资料,ccnp 视频,ccna 视频,oracle 视频, 教育论坛,计算机资料,视频,课件,高校课程,大学课程,大学课件,学习视频下载, 下载论坛 ,视频下载,,疯狂学习,学习资料 FTP,FTP 下载,视频学习论坛 %._5j1uMx量和全局变量)等构成。 la(/rK 1、选择所有列例如,下面语句显示 testtable 表中所有列的数据:SELECT *疯狂
3、学FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。例如:SELECT nickname,email疯 FROM testtable3、更改列标题在选择列表中,可重新指定列标题。定义格式为:列标题=列名列名 列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:SELECT 昵称=nickname,电子邮件=emailFROM testtable 疯狂学习网,视频资料, 视频教程,视频学习,, 学习资料, 学习论坛,视频教程,IT 培训资料,考研资料,考研论坛,疯狂下载,视
4、频教学,MP4、删除重复行SELECT 语句中使用 ALL 或 DISTINCT 选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为 ALL。使用 DISTINCT 选项时,对于所有重复的数据行在 SELECT 返回的结果集合中只保留一行。5、限制返回的行数疯狂学使用 TOP n PERCENT选项限制返回的数据行数,TOP n 说明返回 n 行,而 TOP n PERCENT 时,说明 n是表示一百分数,指定返回的行数等于总行数的百分之几。例如:SELECT TOP 2 *FROM ZS/t+L61aYkSELECT TOP 20 PERCENT * FROM testtable
5、(二)FROM 子句 FROM 子句指定 SELECT 语句查询及与查询相关的表或视图。在 FROM 子句中最多可指定 256 个表或视图,1+n6WZfh%n O_它们之间用逗号分隔。在 FROM 子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在 usertable 和 citytable 表中同时存在 cityid 列,在查询两个表中的 cityid 时应疯狂学习网,视频资料, 视频教程,视频学习,,学习资料,学习论坛,视频教程,IT 培训资料,考研资料,考研论坛, 疯狂下载,视频教学,MP3 下载, 学习论坛,cisco 视频,华为资
6、料,系统集成资料, 外语资料,法律资料,管理资料,ccnp 视频,ccna 视频,oracle 视频, 教育论坛,计算机资料,视频,课件,高校课程,大学课程,大学课件,学习视频下载,下载论坛 ,视频下载,,疯狂学习, 学习资料 FTP,FTP 下载,视频学习论坛 )YxD ?+R使用下面语句格式加以限定:1u i5C#nlsSELECT username,citytable.cityidFROM usertable,citytable 疯狂学习网,视频资料,视频教程,视频学习,,学习资料,学习论坛, 视频教程,IT 培训资料,考研资料,考研论坛,疯狂下载,视频教学,MWHERE usertab
7、le.cityid=citytable.cityid在 FROM 子句中可用以下两种格式为表或视图指定别名:表名 as 别名表名 别名 v9?/F g9Q2U cF5O(二) FROM 子句FROM 子句指定 SELECT 语句查询及与查询相关的表或视图。在 FROM 子句中最多可指定 256 个表或视图,它们之间用逗号分隔。在 FROM 子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列eY4Za(km E所属的表或视图。例如在 usertable 和 citytable 表中同时存在 cityid 列,在查询两个表中的 cityid 时应疯狂学习网,视频资料,
8、 视频教程,视频学习,,学习资料,学习论坛,视频教程,IT 培训资料,考研资料,考研论坛, 疯狂下载,视频教学,MP3 下载, 学习论坛,cisco 视频,华为资料,系统集成资料, 外语资料,法律资料,管理资料,ccnp 视频,ccna 视频,oracle 视频, 教育论坛,计算机资料,视频,课件,高校课程,大学课程,大学课件,学习视频下载,下载论坛 ,视频下载,,疯狂学习, 学习资料 FTP,FTP 下载,视频学习论坛 YDc5QoSb使用下面语句格式加以限定:SELECT username,citytable.cityidFROM usertable,citytableWHERE user
9、table.cityid=citytable.cityid狂在 FROM 子句中可用以下两种格式为表或视图指定别名: 疯狂学习网 8qQ/O)kxX表名 as 别名表名 别名例如上面语句可用表的别名格式表示为:SELECT username,6qI_ -Rv9kFROM usertable a,citytable bWHERE a.cityid=b.cityid$zGm4l1nSELECT 不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。例如:SELECT a.au_fname+a.au_lnameFROM authors a,titleauthor ta(SEL
10、ECT title_id,tm!Y$zP-PFROM titles 疯狂学习网,视频资料, 视频教程,视频学习,,学习资料,学习论坛,视频教程,IT 培训资料,考研资料,考研论坛, 疯狂下载,视频教学,MP3 p4m J Y gWHERE ytd_sales10000) AS tWHERE a.au_id=ta.au_idAND ta.title_id=t.title_id 疯此例中,将 SELECT 返回的结果集合给予一别名 t,然后再从中检索数据。(三) 使用 WHERE 子句设置查询条件疯WHERE 子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于 20 的数据:SELE
11、CT *FROM usertableWHERE age20WHERE 子句可包括各种条件运算符:疯狂学习网,比较运算符(大小比较):、= 、= 、!、!=10 AND age、=、!。 疯狂学习网n -Rm4G-qr3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。例,下面使用等值连接列出 authors 和 publishers 表中位于同一城市的作者和出版社:疯狂学习网, 视频资料,视频教程, 视频学习,,学习资料,学习论坛, 视频教程,IT 培训资料,考研资料,考研论坛SELECT *FROM auth
12、ors AS a INNER JOIN publishers AS p 疯狂学习网,视频资料,视频教程,视频学习,, 学习资料,学习论坛,视频教程,IT 培训资料,考研资料, 考研论坛,疯狂下载, 视频教学,MP3,课件,高校课程,大学课程,大学课件,学习视频下载, 下载论坛 ,视频下载,,疯狂学习,学习资料 FTP,FTP 下载, 视频学习论坛 7q$A9 eRFON a.city=p.city F|又如使用自然连接,在选择列表中删除 authors 和 publishers 表中重复列(city 和 state):疯狂学习网, 视频资料,视频教程,视频学习,,学习资料, 学习论坛,视频教程
13、,IT 培训资料, 考研资料,考研论坛, 疯狂下载,视频教学,MP3下载,学习论坛 ,cisco 视频,华为资料,系统集成资料,外语资料,法律资料,管理资料,ccnp 视频,ccna 视频,oracle 视频,教育论坛, 计算机资料,视频 ,课件,高校课程,大学课程,大学课件,学习视频下载,下载论坛 ,视频下载,, 疯狂学习, 学习资料 FTP,FTP 下载,视频学习论坛 l3r3?-y0vSELECT a.*,p.pub_id,p.pub_name,p.countryW_*FROM authors AS a INNER JOIN publishers AS p 疯狂学习网,视频资料,视频教程
14、,视频学习,, 学习资料,学习论坛,视频教程,IT 培训资料,考研资料, 考研论坛,疯狂下载, 视ON a.city=p.city(二)外连接内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件)DW%D5z/m$B8u7M的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。l如下面使用左外连接将论坛内容和作者信息连接起来:疯狂xSELECT a.*,b.* FROM luntan LEFT JOIN usertable as bON
15、a.username=b.username 疯狂学习网 ,视频资料, 视频教程,视频学习,,学习资料,学习论坛,视频教程,IT 培训资料,考研资料,考研论坛,疯狂, 课件,高校课程,大学课程,大学课件,学习视频下载,下载论坛 ,视频下载,,疯狂学习,学习资料 FTP,FTP 下载,视频学习论坛 #_5s Id下面使用全外连接将 city 表中的所有作者以及 user 表中的所有作者,以及他们所在的城市:)H/rC:UV0TKPSELECT a.*,b.*FROM city as a FULL OUTER JOIN user as bON a.username=b.username疯狂( 三 )交*连接 X3N交*连接不带 WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles 表中有 6 类图书,而 publishers 表中有 8 家出版社,则下列交*连接检索到的记录数将等于 6*8=48 行。SELECT type,pub_nameFROM titles CROSS JOIN publishersORDER BY type