教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

学习SQL应知道的动态SQL语句基本语法

来源:网络收集 时间:2026-09-07
导读: 学习SQL应知道的动态SQL语句基本语法 学习SQL应知道的动态SQL语句基本语法 1、普通SQL语句可以用Exec执行 eg:Select*fromtableName Exec('select*fromtableName') Execsp_executesqlN'select*fromtableName'--请注意字符串前一定要加N 2、字段名,表名,数据

学习SQL应知道的动态SQL语句基本语法

学习SQL应知道的动态SQL语句基本语法

1、普通SQL语句可以用Exec执行

eg:Select*fromtableName

Exec('select*fromtableName')

Execsp_executesqlN'select*fromtableName'--请注意字符串前一定要加N

2、字段名,表名,数据库名之类作为变量时,必须用动态SQL

eg:

declare@fnamevarchar(20)

set@fname='FiledName'

Select@fnamefromtableName--错误,不会提示错误,但结果为固定值FiledName,并非所要。

Exec('select'+@fname+'fromtableName')--请注意加号前后的单引号的边上加空格

当然将字符串改成变量的形式也可

declare@fnamevarchar(20)

set@fname='FiledName'--设置字段名

declare@svarchar(1000)

set@s='select'+@fname+'fromtableName'

Exec(@s)--成功

execsp_executesql@s--此句会报错

declare@sNvarchar(1000)--注意此处改为nvarchar(1000)

set@s='select'+@fname+'fromtableName'

Exec(@s)--成功

execsp_executesql@s--此句正确

3、输出参数

declare@numint,

@sqlsnvarchar(4000)

set@sqls='selectcount(*)fromtableName'

exec(@sqls)

--如何将exec执行结果放入变量中?

declare@numint,

@sqlsnvarchar(4000)

set@sqls='select@a=count(*)fromtableName'

学习SQL应知道的动态SQL语句基本语法

execsp_executesql@sqls,N'@aintoutput',@numoutput

select@num

此外,如果想要在SQL语句字符串中使用单引号''可以使用''''

SQLServer数据库中经常用到的identity列

发布时间:2008.03.2404:59来源:赛迪网作者:Alice

【赛迪网-IT技术报道】SQLServer中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便。但它有时还会带来一些麻烦。

示例一:当表中被删除了某些数据的时候,自增长列的编号就不再是一个连线的数列。这种时候我们可以用以下方案来解决。

允许将显式值插入表的标识列中,当设置为ON时,这时可能在INSERT操作时手工指定插入到标识列中的编号,同时必须在操作完成后,将IDENTITY_INSERT还原成OFF,否则下次插入的时候必须指定编号,那不然就无法完成INSERT操作。

示例二:当表中的记录被全部删除,但此时标识列的值越来越大的时候,如果不加以重置,它还会无休止的增长。这个时候我们就要用到:

将把指定表的种子值强制重设为1。然而,你可能不想将种子重设为1,在这种情况下,你可以用你想用的种子值替代第三个参数。有时候你可能想知道当前的种子,而不是想重设种子,这时你就要用到NORESEED,而不用再去顾忌第三个参数。

“一网打尽”通用SQL数据库的查询语句(1)

学习SQL应知道的动态SQL语句基本语法

发布时间:2008.01.0404:40来源:赛迪网作者:20933

通用SQL数据库的查询语句:

(注释:本文中Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。)

一、简单查询

简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。

例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。

(一)选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。

1、选择所有列

例如,下面语句显示

testtable表中所有列的数据:

2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。

学习SQL应知道的动态SQL语句基本语法

3、更改列标题在选择列表中,可重新指定列标题。定义格式为:

列标题=列名

列名列标题

如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:

4、删除重复行

SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。

5、限制返回的行数

使用TOPn[PERCENT]选项限制返回的数据行数,TOPn说明返回n行,而TOPnPERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。

(二)FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。

在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:

学习SQL应知道的动态SQL语句基本语法

在FROM子句中可用以下两种格式为表或视图指定别名:

表名as别名

表名别名

例如上面语句可用表的别名格式表示为:

SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。

学习SQL应知道的动态SQL语句基本语法

此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。

(三)使用WHERE子句设置查询条件

WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:

WHERE子句可包括各种条件运算符:比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<

范围运算符(表达式值是否在指定的范围):BETWEEN…AND…

NOTBETWEEN…AND…

列表运算符(判断表达式是否为列表中的指定项):IN(项1,项2……)

NOTIN(项1,项2……)

模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOTLIKE

空值判断符(判断表达式是否为空):ISNULL、NOTISNULL

逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR

1、范围运算符例:ageBETWEEN10AND30相当于age>=10ANDage<=30

2、列表运算符例:countryIN('Germany','China')

3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。

可使用以下通配字符:

学习SQL应知道的动态SQL语句基本语法

百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。

方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[]相同,但它要求所匹配对象为指定字符以外的任一个字符。

例如:

限制以Publishing结尾,使用LIKE'%Publishing'

限制以A开头:LIKE'[A]%'

限制以A开头外:LIKE'[^A]%'

4、空值判断符例WHEREageISNULL

5、逻辑运算符:优先级为NOT、AND、OR

(四)查询结果排序

使用ORDERBY子句对查询返回的结果按一列或多列排序。ORDERBY子句的语法格式为:

其中ASC表示升序,为默认值,DESC为降序。ORDERBY不能按ntext、text和image数据类 …… 此处隐藏:3251字,全部文档内容请下载后查看。喜欢就下载吧 ……

学习SQL应知道的动态SQL语句基本语法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/110247.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)