ImageVerifierCode 换一换
格式:DOC , 页数:81 ,大小:437KB ,
资源ID:7681051      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7681051.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(sql语句妙用各种sql语句的详细用法与讲解.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

sql语句妙用各种sql语句的详细用法与讲解.doc

1、学习SQL应知道的动态SQL语句基本语法 1 、普通SQL语句可以用Exec执行 9Kp=A   ' CdaFr1   eg: Select * from tableName Wsc+A:<"   Exec('select * from tableName') #Btn(   Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N %BfplhE1a   AN&)OIDc   2、字段名,表名,数据库名之类作为变量时,必须用动态SQL H2k3./Ip   :=r|8#8a  

2、eg: }"|M# MB   declare @fname varchar(20) WH$1[Gv7   set @fname = 'FiledName' @#D[C;VvrE   Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 J!_C^,7#   Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 \Adve]kD$5   w/r;'\>   当然将字符串改成变量的形式也可 :? Gf%y  

3、 declare @fname varchar(20) r~j >XK3   set @fname = 'FiledName' --设置字段名 !i9mD!G   w( IfnsP   declare @s varchar(1000) 7A _?mu   set @s = 'select ' + @fname + ' from tableName' ezCY_T9m   Exec(@s) -- 成功 W=Q!_X$   exec sp_executesql @s -- 此句会报错 vOwTKUb   By4-}_T+A   2#sv-v6oH

4、   declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) "A^!?UOE   set @s = 'select ' + @fname + ' from tableName' (/Hv6n3Z&   Exec(@s) -- 成功 ix9 Hh{   exec sp_executesql @s -- 此句正确 ]7UXt*w   LBf0at0   3、输出参数 "kz/7 E\/A   % +>n

5、0) EIA]sr   set @sqls='select count(*) from tableName' qh C5@Do   exec(@sqls) A;vBkAD   --如何将exec执行结果放入变量中? f$9`I=j">   ~p.M^M`7E   declare @num int, 3^={\CUh   @sqls nvarchar(4000) cI)

6、'@a int output',@num output *JA z^&/   select @num j3SSiM   Ft*Ow%Djzm   此外,如果想要在SQL语句 字符串中使用 单引号 '' 可以 使用 '''' SQL Server数据库中经常用到的identity列 发布时间:2008.03.24 04:59     来源:赛迪网    作者:Alice 【赛迪网-IT技术报道】SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便。但它有时还会带来一些麻烦。 示例一 :当表中被删除了某些数据

7、的时候,自增长列的编号就不再是一个连线的数列。这种时候我们可以用以下方案来解决。 SET IDENTITY_INSERT [TABLE] [ON|OFF] 允许将显式值插入表的标识列中,当设置为ON时,这时可能在INSERT操作时手工指定插入到标识列中的编号,同时必须在操作完成后,将IDENTITY_INSERT还原成OFF,否则下次插入的时候必须指定编号,那不然就无法完成INSERT操作。 示例二:当表中的记录被全部删除,但此时标识列的值越来越大的时候,如果不加以重置,它还会无休止的增长。这个时候我们就要用到: DBCC CHECKIDENT(TABLE, [RESEED|NO

8、RESEED], [1]) 将把指定表的种子值强制重设为1。然而,你可能不想将种子重设为1,在这种情况下,你可以用你想用的种子值替代第三个参数。有时候你可能想知道当前的种子,而不是想重设种子,这时你就要用到NORESEED,而不用再去顾忌第三个参数。 “一网打尽”通用SQL数据库的查询语句 (1) 发布时间:2008.01.04 04:40     来源:赛迪网    作者:20933 通用SQL数据库的查询语句: (注释:本文中Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。) 一、 简单查询 简单的Tran

9、sact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 SELECT nickname,email FROM testtable WHERE name= '张三 ' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: S

10、ELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名 列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、

11、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM

12、 testtable (二)FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: SELECT username,citytable.cityid FROM usertable,citytable WHERE usertable.c

13、ityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名 表名 别名 例如上面语句可用表的别名格式表示为: SELECT username,b.cityid FROM usertable a,citytable b WHERE a.cityid=b.cityid SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 例如: SELECT a.au_fname+a.au_lname FROM authors a,ti

14、tleauthor ta (SELECT title_id,title FROM titles WHERE ytd_sales> 10000 ) AS t WHERE a.au_id=ta.au_id AND ta.title_id=t.title_id 此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 (三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: SELECT * FROM use

15、rtable WHERE age> 20 WHERE子句可包括各种条件运算符: 比较运算符(大小比较):> 、> =、=、 <、 <=、 <> 、!> 、! < 范围运算符(表达式值是否在指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) NOT IN (项1,项2……) 模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE 空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL 逻辑运算符(用于多条件的逻辑连接)

16、NOT、AND、OR 1、范围运算符例:age BETWEEN 10 AND 30相当于age> =10 AND age <=30 2、列表运算符例:country IN ( 'Germany ', 'China ') 3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。 可使用以下通配字符: 百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。 下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。 方括号

17、[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。 例如: 限制以Publishing结尾,使用LIKE '%Publishing ' 限制以A开头:LIKE '[A]% ' 限制以A开头外:LIKE '[^A]% ' 4、空值判断符例WHERE age IS NULL 5、逻辑运算符:优先级为NOT、AND、OR (四)查询结果排序 使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为: ORDER BY {column_

18、name [ASC ¦DESC]} [,…n] 其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排序。 例如: SELECT * FROM usertable ORDER BY age desc,userid ASC 另外,可以根据表达式进行排序。 二、 联合查询 UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为: select_statement UNIO

19、N [ALL] selectstatement [UNION [ALL] selectstatement][…n] 其中selectstatement为待联合的SELECT查询语句。 ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。 联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。 在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式

20、应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。 在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如: 查询1 UNION (查询2 UNION 查询3) 三、连接查询 通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作

21、给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。 连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。 SQL-92标准所定义的FROM子句的连接语法格式为: FROM join_table join_type join_table [ON (join_condition)] 其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也

22、可以对多表操作,对同一个表操作的连接又称做自连接。 join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外

23、连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。 交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。 连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。 无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。例如: SELECT p1.pub_id,p2.pub_id,p1.pr_info

24、 FROM pub_info AS p1 INNER JOIN pub_info AS p2 ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info) (一)内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种: 1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。 2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括> 、> =、

25、 <=、 <、!> 、! <和 <> 。 3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。 例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社: SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city 又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):

26、 SELECT a.*,p.pub_id,p.pub_name,p.country FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city (二)外连接 内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:

27、 SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b ON a.username=b.username 下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市: SELECT a.*,b.* FROM city as a FULL OUTER JOIN user as b ON a.username=b.username (三)交叉连接 交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行

28、的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等。 于6*8=48行。 SELECT type,pub_name FROM titles CROSS JOIN publishers ORDER BY type [Post=0][/Post] 教你快速掌握一些异常精妙的"SQL"语句 发布时间:2008.03.11 04:58    

29、 来源:赛迪网    作者:钱海歌 【赛迪网-IT技术报道】精妙的"SQL"语句: ◆复制表(只复制结构,源表名:a 新表名:b) SQL: select * into b from a where 1<>1    ◆拷贝表(拷贝数据,源表名:a 目标表名:b) SQL: insert into b(a, b, c) select d,e,f from b;   ◆显示文章、提交人和最后回复时间 SQL: select a.title,a.username,b.adddate from table a, (select max(adddate) adddat

30、e from table where table.title=a.title) b   ◆说明:外连接查询(表名1:a 表名2:b) SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c ◆日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5    ◆两张关联表,删除主表中已经在副表中没有的信息 SQL: delete from info where not

31、exists ( select * from infobz where info.infid=infobz.infid ) ◆说明: SQL: SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE FROM TABLE1,(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE, 'YYYY/MM

32、') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, (SELECT NUM, UPD_DATE, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(TO_DATE (TO_CHAR(SYSDATE, 'YYYY/MM') ¦¦ '/01',' YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, WHERE X.NUM = Y.NUM (+)AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <>

33、 X.STOCK_ONHAND ) B WHERE A.NUM = B.NUM    ◆说明: SQL: select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称 ='"&strprofessionname&"' order by 性别,生源地,高考总成绩 实例讲解SQL Server中"Update"的用法 发布时间:

34、2008.02.28 05:07     来源:赛迪网    作者:Alizze SQL Server中"Update"的用法: 例子: 在表中有两个字段:id_no (varchar) , in_date (datetime) ,把in_date相同的记录的in_date依次累加1秒, 使in_date没有相同的记录。 以下为原始的数据: id_no in_date 5791 2003-9-1 14:42:02 5792 2003-9-1 14:42:02 5794 2003-9-1 14:42:02 5795 2003-9-

35、1 14:42:03 5796 2003-9-1 14:42:03 5797 2003-9-1 14:42:03 5831 2003-9-1 14:42:04 5832 2003-9-1 14:42:14 5833 2003-9-1 14:42:14 结果为: id_no in_date 5791 2003-9-1 14:42:02 5792 2003-9-1 14:42:03 5794 2003-9-1 14:42:04 5795 2003-9-1 14:42:05 5796 2003-9-

36、1 14:42:06 5797 2003-9-1 14:42:07 5831 2003-9-1 14:42:08 5832 2003-9-1 14:42:14 5833 2003-9-1 14:42:15 处理的方法: --建立测试环境 create table a(id_no varchar(8),in_date datetime) go insert into a select '5791','2003-9-1 14:42:02' union all select '5792','2003-9-1 14:42:02' union all

37、select '5794','2003-9-1 14:42:02' union all select '5795','2003-9-1 14:42:03' union all select '5796','2003-9-1 14:42:03' union all select '5797','2003-9-1 14:42:03' union all select '5831','2003-9-1 14:42:04' union all select '5832','2003-9-1 14:42:04' union all select '5833','2003-9-1 14:42:

38、04' union all select '5734','2003-9-1 14:42:02' union all select '6792','2003-9-1 14:42:22' union all select '6794','2003-9-1 14:42:22' union all select '6795','2003-9-1 14:42:23' union all select '6796','2003-9-1 14:42:23' union all select '6797','2003-9-1 14:42:23' union all select '6831',

39、'2003-9-1 14:42:34' union all select '6832','2003-9-1 14:42:34' union all select '6833','2003-9-1 14:42:54' union all select '6734','2003-9-1 14:42:22' go --生成临时表,按照in_date排序 select * into # from a order by in_date --相同的时间,加一秒。加完了不带重复的 declare @date1 datetime,@date2 datetime,@date datetime

40、 update # set @date=case when @date1=in_date or @date2>=in_date then dateadd(s,1,@date2) else in_date end, @date1=in_date, @date2=@date, in_date=@date --更新到基本表中去 update a set a.in_date=b.in_date from a a join # b on a.id_no=b.id_no select * from a drop table #,a

41、 三种数据库利用SQL语句进行高效果分页 发布时间:2008.01.21 04:50     来源:赛迪网    作者:10687 在程序的开发过程中,处理分页是大家接触比较频繁的事件,因为现在软件基本上都是与数据库进行挂钓的。但效率又是我们所追求的,如果是像原来那样把所有满足条件的记录全部都选择出来,再去进行分页处理,那么就会多多的浪费掉许多的系统处理时间。为了能够把效率提高,所以现在我们就只选择我们需要的数据,减少数据库的处理时间,以下就是常用SQL分页处理: 1、SQL Server、Access数据库 这都微软的数据库,都是一家人,基本的操作都是差不多

42、常采用如下分页语句: PAGESIZE:每页显示的记录数 CURRENTPAGE:当前页号 数据表的名字是:components 索引主键字是:id select top PAGESIZE * from components where id not in (select top (PAGESIZE*(CURRENTPAGE-1)) id from components order by id)order by id 如下列: select top 10 * from components where id not in (select top 10*10

43、id from components order by id) order by id 从101条记录开始选择,只选择前面的10条记录 2、Oracle数据库 因为Oracle数据库没有Top关键字,所以这里就不能够像微软的数据据那样操作,这里有两种方法: (1)、一种是利用相反的。 PAGESIZE:每页显示的记录数 CURRENTPAGE:当前页号 数据表的名字是:components 索引主键字是:id select * from components where id not in(select id from components where

44、 rownum<=(PAGESIZE*(CURRENTPAGE-1))) and rownum<=PAGESIZE order by id; 如下例: select * from components where id not in (select id from components where rownum<=100) and rownum<=10 order by id; 从101到记录开始选择,选择前面10条。 (2)、使用minus,即中文的意思就是减去。 select * from components where rownu

45、m <=(PAGESIZE*(CURRENTPAGE-1)) minus select * from components where rownum <=(PAGESIZE*(CURRENTPAGE-2)); 如例:select * from components where rownum<=10 minus select * from components where rownum<=5;. (3)、一种是利用Oracle的rownum,这个是Oracle查询自动返回的序号,一般不显示,但是可以通过select rownum from [表名]看到,注意,它是从1到当前的

46、记录总数。 select * from (select rownum tid,components. * from components where rownum<=100) where tid<=10; 深入讲解SQL Server数据库的嵌套子查询 发布时间:2008.02.02 05:05     来源:赛迪网    作者:Liulian 很多人对子查询(subqueries)的使用都感到很迷惑,尤其对于嵌套子查询(即子查询中包含一个子查询)。现在,就让我们追本溯源地探究这个问题。 有两种子查询类型:标准和相关。标准子查询执行一次,结果反馈给父查询。

47、相关子查询每行执行一次,由父查询找回。在本文中,我将重点讨论嵌套子查询(nested subqueries)(我将在以后介绍相关子查询)。 试想这个问题:你想生成一个卖平垫圈的销售人员列表。你需要的数据分散在四个表格中:人员.联系方式(Person.Contact),人力资源.员工(HumanResources.Employee),销售.销售订单标题(Sales.SalesOrderHeader),销售.销售订单详情(Sales.SalesOrderDetail)。在SQL Server中,你从内压式(outside-in)写程序,但从外压式(inside-out)开始考虑非常有帮助,即可

48、以一次解决需要的一个语句。 如果从内到外写起,可以检查Sales.SalesOrderDetail表格,在LIKE语句中匹配产品数(ProductNumber)值。你将这些行与Sales.SalesOrderHeader表格连接,从中可以获得销售人员IDs(SalesPersonIDs)。然后使用SalesPersonID连接SalesPersonID表格。最后,使用ContactID连接Person.Contact表格。 USE AdventureWorks ; GO SELECT DISTINCT c.LastName, c.FirstName FROM Pers

49、on.Contact c JOIN HumanResources.Employee e ON e.ContactID = c.ContactID WHERE EmployeeID IN (SELECT SalesPersonID FROM Sales.SalesOrderHeader WHERE SalesOrderID IN (SELECT SalesOrderID FROM Sales.SalesOrderDetail WHERE ProductID IN (SELECT ProductID FROM Production.Produc

50、t p WHERE ProductNumber LIKE'FW%'))); GO 这个例子揭示了有关SQL Server的几个绝妙事情。你可以发现,可以用IN()参数替代SELECT 语句。在本例中,有两次应用,因此创建了一个嵌套子查询。 我是标准化(normalization)的发烧友,尽管我不接受其荒谬的长度。由于标准化具有各种查询而增加了复杂性。在这些情况下子查询就显得非常有用,嵌套子查询甚至更加有用。 当你需要的问题分散于很多表格中时,你必须再次将它们拼在一起,这时你可能发现嵌套子程序就很有用。 使用SQL视图查出所有的数据库字典 发布时间:20

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服