我正在開發一個系統,以便用戶可以將查詢輸入系統并且系統驗證查詢。當用戶輸入更新陳述句時,我希望將該 WHERE 子句重用于內部選擇陳述句。
例如,假設用戶輸入:
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
我想WHERE CustomerID = 1為系統選擇陳述句重用(很可能通過使用子字串)來驗證最近更新的行是否采用有效格式:
系統進入:
SELECT * FROM Customers
WHERE CustomerID = 1;
這安全嗎?是否所有 SQL 陳述句都以 WHERE 子句結尾?
uj5u.com熱心網友回復:
我會查看官方檔案以了解您的特定 SQL 風格,因為實作會有所不同。例如,
- MySQL允許在 UPDATE...WHERE 之后使用 ORDER BY 和 LIMIT 子句。
- Microsoft SQL Server有一個可以跟在 WHERE 后面的可選 OPTION 子句。
- Oracle 的 SQL看起來像 WHERE 安全地是 UPDATE 的最后一部分(至少對于此處鏈接的版本)。
- PostgreSQL允許使用 RETURNING 子句。
- 等等。
當然,可以省略 WHERE 子句,盡管這通常不是您想要做的。
uj5u.com熱心網友回復:
不。
類似的 SQL 陳述句
UPDATE Customers
SET ContactName = 'Alfred Schmidt';
將簡單地更新表中的所有條目,而對 where 子句中要更新的行沒有任何限制。
uj5u.com熱心網友回復:
是否所有 SQL 陳述句都以 WHERE 子句結尾?
好問題。
作為定義嘗試“什么是 SQL 陳述句?”:如果您的意思是常見的 SQL 而不是所有特定于 DBMS 的風格,那么我會說最流行的日常使用的標準SQL陳述句可能只是少數, Select, Update, Delete, 可以有Where子句,而Insert不能。和MergeAKAUpsert有一個When. 而且我認為很多人會假設,至少在可擴展的背景關系中,*可以有一個Where,通常也有 *do 甚至 *應該有一個的那三個。industrial
uj5u.com熱心網友回復:
SQL 更新陳述句對 aTable和有效column = value。但是,不使用任何過濾器通常被認為是不好的形式。此外,where不是唯一可能的過濾器還有連接having或on連接的一部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424993.html
標籤:sql
