如何阻止SELECT 語句

2021-09-22 20:51:53 字數 1467 閱讀 4687

原文:

如何阻止select * 語句

我們每個人都知道是個不好的做法,但有時我們還是要這樣做:我們執行select * 語句。這個方法有很多弊端:

現在的問題是你如何阻止select *語句?當然你可以進行**審核,你可以提供最佳模式指導,但誰最終會留意這些?基本上沒有人——很遺憾這就就是令人傷心的事實……

但有乙個非常簡單方法來阻止select *語句,在表裡用技術層面來解決。

這個問題的解決方法非常簡單:在你的表定義上增加乙個產生除零錯誤的的計算列。這個方法超簡單,但卻真正有效。我們來看下面的表定義:

1

--create a ****** table with a computed column that generates2--

a divide by zero exception.

3create

table

foo4

(5 col1 int

identity(1, 1) not

null

primary

key,

6 col2 char(100) not

null

,7 col3 char(100) not

null

,8 developerspain as (1/0

)9)10

go11

12--

insert some test data

13insert

into foo values ('

a', '

a'), ('

b', '

b'), ('

c', 'c'

)14go

如你所見,我這裡增加了乙個進行除零的計算列。這表示當是查詢這個列時,你會得到乙個錯誤資訊——例如在select * 語句裡:

但另一方面如果你通過名稱指定查詢列,你不會反悔計算列,你的查詢如願正常執行:

很不錯吧,是不是?

在各個交流會上我經常提到:有時我們只是變得太複雜了!這個用計算列的方法非常簡單——肯定需要表架構修改。但下次設計新錶的時候,要記得用這個方法。

感謝關注!

基本Select語句

一.基本select語句 select from table 1.select from departments 查詢所有的 2.select department id,location id from departments 指定列 算術表示式 按優先順序 1.select last name,...

巢狀SELECT語句

巢狀select語句也叫子查詢,形如 02 03select name from bbc where region select region from bbc where name brazil 04 05乙個 select 語句的查詢結果可以作為另乙個語句的輸入值。06 07上面的sql語句作用...

select 語句優化

select cd friend.fid,cd user.name from cd friend left join cd user on cd user.uid cd friend.fid where cd friend.uid 1312 limit 6 這條語句的本意是查詢id為1312 的使用...