1樓:匿名使用者
這兩個在效能上應該是沒什麼差別的,或者說差別不大,也沒人去考證這個事實。
但是這兩個sql在安全上卻有很大的差別,舉個例子,比如說你寫的是第一個:
select * from stu where id=1
假如你傳入的值是1,簡單的連線可能是這樣***jsp?id=1。然後拼接字串就可以得到上面那個語句了。
但是,懂資料庫的人可以通過一定的手段來檢視不應該檢視的資料,比如他在位址列手動輸入***jsp?id=1 or 1=1。這樣的話拼接字串,那個sql就變成:
select * from stu where id=1 or 1=1 這樣就把所有的資料都查上來了。這就是所謂的sql注入攻擊,想想都害怕,而用select * from stu where id=?則不會出現這個問題。
當然我舉的是個最簡單的例子,沒有那個程式設計師會出如此錯誤,但是這說明一個問題,就是第一個sql不安全,nb的人大有人在。你不是最nb,那就用比較安全點的吧,當然也沒有絕對的安全。
我知道的就這麼多,希望你對這兩個sql能有所感悟。
2樓:匿名使用者
id=1是查詢id為1的資料,id=?同求。
sql語句的問題?
3樓:匿名使用者
在sql server中兩者沒有區別,但在oracle的sql語句中,delete * from是不標準的語法,執行無法通過。
oracle下執行delete from語句(成功):
oracle下執行delete * from語句(失敗):
sql常用語句,幫我歸納出來,謝謝 20
4樓:匿名使用者
sql常用的無非就是增、刪、查、改。
更新 update ..set語法:
update 表名 set 列名=更新值 where=更新條件。
(一般update都是有條件更新的)
查詢語法:select 列名 from 表名 或者select * from 表名(這是查詢整張表)
刪除語法:刪除資料:
delete from 表名 where name='張三' (delete是足行刪除,不可以單個刪除)
truncate table 表名 (truncate table 刪除表中的所有行,不會刪除表結構、列、約束、索引等)
刪除資料庫:
drop database 資料庫名。
刪除表:drop table 表名。
增加語法:單行增加:
insert 表名(列名) values(增加的資料)
多行增加:insert 表名 (列名)
select 增加的資料 union(最後一行資料後面不要union)
這些都是常用的sql語句。
建議樓主去買《sql server 必知必會》這本書,挺好的,希望能幫到你!
常用sql語句,看這篇就夠了
sql查詢語句的問題,sql查詢語句問題?
日期欄位存的是日期型別 2020 03 25 還是時間型別 2020 03 25 12 03 01 如果是後者,那查詢時需要帶上時間點 日期 2020 03 25 and 日期 2020 03 25 23 59 59 前面不帶時間的預設是2020 03 25 00 00 00,後面帶時間的包含了25...
sql查詢問題,sql語句的問題?
定位字串中 取子串,轉為整數,儲存在一個記憶體表中。執行動態了。sql語句的問題?在sql server中兩者沒有區別,但在oracle的sql語句中,delete from是不標準的語法,執行無法通過。oracle下執行delete from語句 成功 oracle下執行delete from語句...
一個SQL語句的問題,sql語句的問題?
在select 後面沒有引用到 卻在group by 裡面有用到,那是不行的 select 單位名稱,資產名稱,規格型號,count 數量,單價,sum 合計,購置日期,資金 from tblasset t left join tblorg o on left join tblassettype p...