b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

常用SQL语句摘要

电脑杂谈  发布时间:2020-04-04 22:04:35  来源:网络整理

常见语句_常见sql注入语句_sql语句创建表

别名表和列也可以

在开发过程中,我经常遇到我开始给某个字段命名为field1的情况,但是后来我感觉到field1字段未完全指定,因此我将该字段更改为field2. 使用字符串field1,该程序对field1进行了大量处理,这时您可以将其用作

例如,将表A中的原始选择字段1更改为从表A中选择字段2作为字段1

代码基本上是固定的.

2插入自增字段

在开发过程中,我经常遇到一种IDENTITY字段类型,它是一种自增长类型,但是由于特殊需要,我必须插入数据

需要暂时将其删除,可以使用以下语句将IDENTITY_INSERT表名设置为开,处理完成后,使用以下语句将IDENTITY_INSERT表名的设置恢复为关闭

3组以获取每组的前N个数据

在开发过程中,您还需要先对一组数据进行分组,然后对每组进行前n条记录

不妨尝试以下代码

/ *

按CurrentNodeLevel列分组,每个组按NodeID排序,并取出每个组中的前3个元素

* /

声明@temp表(NodeID int,CurrentNodeLevel int,rowNumber int)-定义临时表

插入@temp

选择NodeID,CurrentNodeLevel,ROW_NUMBER()

OVER(按CurrentNodeLevel分区

按NodeID排序)为rowNumber

来自SchoolTerminalStruct ---将数据插入临时表

从@temp中选择*,其中rowNumber <= 3-从临时表中获取数据

4生成随机数

希望此方法只能作为存储过程而不是函数编写

-----返回Max,Min之间的随机数不能写为函数

创建proc [dbo]. [getRAND]

@最大整数,最大值

@最小整数,-最小值

AS

开始

DECLARE @result int

SELECT @结果= RAND()*(@最大值-@最小值)+ @最小值

END

5用逗号分隔满足某些条件的数据

这也可能是一个很常见的句子,通常以一对多的关系出现并在外部显示,要求将子表中的数据取出并用逗号或其他符号分隔

/ *

常见语句_常见sql注入语句_sql语句创建表

用逗号组合满足t2.NodeID = t1.NodeID的tableA的字段NodeName,并将其合并到字段输出中

* /

选择*,东西((选择,+ t1. 来自tableA t1,tableB t2的节点名称

其中t2.NodeID = t1.NodeID

对于xml路径()),1、1)为文本

来自表A

6处理中间的异常

参数在输出参数后附加输出标志,并通过TRY和CATCH捕获异常

创建过程[dbo]. [sp_UpdateFunctionTree]

@nodename int,

@Result int输出--- 2,操作失败; 0操作成功

AS

开始

开始

开始尝试

更新FunctionTree设置

设置@结果= 0-操作成功

结束尝试

开始观看

设置@结果= -2-操作失败

结束观看

结束

END

查询中的7个条件判断

经常遇到在某些情况下应查询此字段,而在其他情况下则需要其他字段的情况. 可以通过unoin完成,但是也可以通过CASE WHEN

完成

/ *

当State = 0时返回field1,当State = 1时返回field2,否则返回field3;

* /

SELECT(在State = 0 THEN field1时,当State = 1 THEN field2时的情况

ELSE字段3 END)作为状态

FROM表名

处理8个单引号

包含单引号时应转义两个单引号

dbo.sp_executesql @statement = N选择indexID,性别=(当Sex = 0时为公,否则为母)

来自表名

sql语句创建表_常见sql注入语句_常见语句

9使用光标

声明@temp表(TaskID int,NodeId int)-声明临时表

插入@temp中,从表A A,表B B中选择A.TaskID,A.NodeId

其中A.TaskID = B.TaskID-//-将记录插入已声明的临时表中

DECLARE tnames_cursor CURSOR LOCAL FORWARD_ONLY READ_ONLY-声明光标

从@temp中选择TaskID,NodeId;-光标需要使用的列

打开tnames_cursor-打开游标

DECLARE @TaskID int,@ NodeId int;-声明变量

从tnames_cursor INTO @ TaskID,@ NodeId中移至下一个-移动光标以为变量分配一个值常见语句,该值应对应于光标需要使用的列.

在(@@ FETCH_STATUS = 0)循环时

开始

开始

exec TaskType @ TaskID,@ NodeId-调用存储过程

END

从tnames_cursor INTO @任务ID,@ NodeId,@ TaskRunCYCType中移出下一个-移动光标以为变量分配值应对应于光标需要使用的列,序列类型应一致

END

CLOSE tnames_cursor-关闭光标

DEALLOCATE tnames_cursor-释放光标

10个合并更新并插入

在开发中的大多数情况下,insert和update传递的参数基本相同,所以为什么不合并它们

创建proc [dbo]. [Save_TableName]

@ field1 varchar(50),

@ field2 varchar(200),

@ID int,

@insertOrUpdate-小于0的插入大于0的更新

开始

如果(@insertOrUpdate <0)

开始

INSERT INTO TableName(字段1,字段2,ID)

值(@ field1,@ field2,@ ID);

结束

其他

开始

常见语句_sql语句创建表_常见sql注入语句

UPDATE TableName SET field1 = @ field1,field2 = @ field2

其中的ID;

结束

结束

11定义功能

当不满足要求时,可以定义功能,但是在使用定义的功能时需要添加架构名称

创建功能[dbo]. [CheckTime]

@startTime日期时间,

@endTime datetime-,

RETURNS int

AS

开始

DECLARE @result int

SET @ result = DATEDIFF(小时,@ startTime,@ endTime)-

如果(@ result = 0)小时相同,则比较分钟数

开始

SET @ result = DATEDIFF(分钟,@ startTime,@ endTime)

如果(@ result = 0)分钟与秒相比是相同的

开始

SET @ result = DATEDIFF(秒,@ startTime,@ endTime)

结束

结束

返回@结果

END

调用此功能

dbo.CheckTime(@ startTime1,@ startTime2)-需要添加架构名称

12个递归读取数据

在实际应用中,我们经常会遇到树状表,但是阅读起来会更加麻烦. 这里有足够的功能要提及

/ *

函数返回一个表,返回给定节点的所有后代,而不仅仅是子代

* /

创建功能[dbo]. [GetChildren](@ NodeID Int)

返回@Tree表(NodeID整数常见语句,NodeName Varchar(50),ParentID整数)

常见语句_常见sql注入语句_sql语句创建表

开始

从Treetable中插入@Tree选择NodeID,NodeName,ParentID,其中ParentID = @NodeID

@@行数> 0

插入@Tree选择A.NodeID,A.NodeName和A.ParentID

从树表A

内部加入@Tree B

在A.ParentID = B.NodeID和A.NodeID不在的情况下(从@Tree中选择NodeID)

返回

结束

13默认情况下重载存储过程

可以将默认值用于存储过程,估计该值是已知的,但这可以实现类似的函数重载的效果

例如,由于以下存储过程使用默认值,因此您可以传递一个参数,两个,三个不带参数的

创建过程dbo.my_proc

@first int = NULL,-NULL默认值

@second int = 2,默认值为2

@third int = 3-默认值3

按SELECT @ first,@ second,@ third;

中有14个拼写字符串,您也可以使用参数

在实际开发中,在某些情况下不可避免地需要在中拼写字符串,但是我担心某些特殊字符会导致拼写SQL出现问题. 实际上,您还可以使用中的参数来拼写字符串. 使用dbo.sp_executesql可以避免由SQL注入和特殊字符引起的错误

如果

DECLARE @IntVariable INT;-定义变量

DECLARE @SQLString NVARCHAR(500);-存储拼写出的SQL

DECLARE @ParmDefinition NVARCHAR(500); ---将参数存储在详细的SQL中

/ *一次构建SQL字符串. * /

SET @SQLString =

NSELECT *来自AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID;

/ *一次指定参数格式. * /

SET @ParmDefinition = int;-分配

/ *使用第一个参数值执行字符串. * /

SET @IntVariable = 275;-分配

执行dbo.sp_executesql @ SQLString,@ ParmDefinition,

@SalesID = @IntVariable;

/ *使用第二个参数值执行相同的字符串. * /

SET @IntVariable = 276;

执行dbo.sp_executesql @ SQLString,@ ParmDefinition,

@SalesID = @IntVariable;

16个需要注意的触发问题

使用触发器时出现问题. 也许很少有人注意到,当一条更新语句一次更新十条记录时,会触发多少个触发器?只有一次! !这很奇怪,但这是事实,因此请务必注意,如果不注意,大量数据将被泄漏


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-164104-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...