我正在开发一个系统,这样用户就可以将查询输入到系统中,系统就可以验证查询了。当用户输入update语句时,我希望为内部select语句重用WHERE子句。
例如,假设用户输入:
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;我想重用系统select语句的WHERE CustomerID = 1 (最可能的方法是接受子字符串),以验证最近更新的行是否为有效格式:
系统输入:
SELECT * FROM Customers
WHERE CustomerID = 1;这安全吗?所有SQL语句都以WHERE子句结尾吗?
发布于 2022-02-16 17:11:22
不是的。
这样的SQL语句
UPDATE Customers
SET ContactName = 'Alfred Schmidt';只需更新表中的所有条目,而不对where子句中要更新的行进行任何限制。
发布于 2022-02-16 19:23:09
所有的SQL语句都以WHERE子句结尾吗?
问得好。
作为一个定义,尝试“什么是SQL语句?”:如果您指的是普通的SQL,而不是所有特定于DBMS的类型,那么我想说最流行的标准SQL语句可能只有少数几个,可以有Where子句的Select、Update、Delete和不能使用的Insert。还有Merge AKA Upsert,它有一个When。我认为很多人都会假设,这三个人可以拥有一个Where,通常也可以*do,甚至*应该有一个,至少在可伸缩的industrial上下文中是这样。
发布于 2022-02-16 17:24:22
SQL语句对Table和column = value有效。然而,关闭任何过滤器通常被认为是不好的形式。另外,where不是唯一的筛选器,也可能有having或连接的on部分。
https://stackoverflow.com/questions/71146206
复制相似问题