select语句可以更新SQL Server中的数据吗?

select语句可以更新SQL Server中的数据吗?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我刚刚得到了数百个SQL视图、存储过程和函数 我喜欢直观地查看数据,以便更好地理解对象的功能 如果我运行select语句并执行查询,是否可以假设它不会修改记录/数据 我只是担心有一些SQL技巧可以通过select语句更新数据 有什么要注意的吗?任何我必须注意的提示或关键字?一个简单的SELECT语句本身不会更新任何数据 即使SELECT语句调用了一个或多个函数s,您也可以放心,这些函数s都不会修改数据库中的任何数据** **看 列出的功能的第一个限制是 用户定义的函数不能用于执行修改 数据库状态

我刚刚得到了数百个SQL视图、存储过程和函数 我喜欢直观地查看数据,以便更好地理解对象的功能

如果我运行select语句并执行查询,是否可以假设它不会修改记录/数据

我只是担心有一些SQL技巧可以通过select语句更新数据


有什么要注意的吗?任何我必须注意的提示或关键字?

一个简单的
SELECT
语句本身不会更新任何数据

即使
SELECT
语句调用了一个或多个
函数
s,您也可以放心,这些
函数
s都不会修改数据库中的任何数据**

**看 列出的功能的第一个限制是

用户定义的函数不能用于执行修改 数据库状态

我甚至尝试编写一个
函数
,在返回返回值之前执行
插入
,得到的错误如下。[感谢@Aaron和@John让我保持诚实]

Msg 443, Level 16, State 15, Procedure CRUDFunction, Line 5
Invalid use of a side-effecting operator 'INSERT' within a function.

正常的基本选择不会修改数据。然而,有几件事你应该注意

如果代码使用动态SQL构建SELECT语句,则必须担心攻击。除非您在参数化动态SQL时非常小心,否则攻击者几乎可以执行当前登录所能执行的任何操作。例如,
删除表格
删除数据库
,等等。请参阅维基百科上的链接文章


此外,请注意带有
INTO
子句的
SELECT
可用于创建表并向其中插入记录。有关更多信息,请参阅和

一个函数不能执行副作用,所以除非他们做了一些疯狂的事情,比如…谢谢提醒函数。看起来只有20-30个函数,它们都有相应的标签。如果有任何不合理的地方,只需执行sp_helptext“ObjectName”就会给出该对象的定义,看看里面发生了什么。不必担心视图,但我建议在接触存储过程和函数定义之前查看它们。这如何回答他的问题。他在问题中没有提到SQL注入攻击。OP询问是否有SQL技巧会导致
SELECT
语句更新数据。我想说,SQL注入攻击肯定是一种“伎俩”,有人可以使用它来强制动态SQL
SELECT
语句更改数据。另外,请注意,我编辑了我的答案,提到选择进入。+1用于记住选择进入!谢谢你更新你的答案。