Rob*_*ble 35
DELETE FROM table
Run Code Online (Sandbox Code Playgroud)
在我输入并执行它之后看到,我忘记了WHERE子句.现在我总是首先运行一个SELECT语句,并在我确信正确的行会受到影响后将SELECT更改为DELETE.
Dou*_* T. 25
经典的xkcd当然是:
WHERE name = ROBERT'); DROP TABLE students;--
Run Code Online (Sandbox Code Playgroud)
sho*_*osh 13
最糟糕的是每次使用 SQL查询:
一个SELECT查询,它计算对应于某个条件的行数,在for循环的停止条件中调用.
像这样的东西:
for(int i = 0; i < query("SELECT COUNT .... WHERE ..."); i++)
{
}
Run Code Online (Sandbox Code Playgroud)
不,查询的结果不会每次迭代都改变.是的我意识到服务器将缓存结果.
客户在varchar字段(经典ASP应用程序)中存储了3个值的逗号分隔列表,因此它们具有如下所示的存储过程:
SELECT *
FROM
SomeTable
WHERE
Field LIKE @Param + ',%'
OR
Field LIKE '%,' + @Param + ',%'
OR
Field LIKE '%,' + @Param
Run Code Online (Sandbox Code Playgroud)
应该很明显为什么它太可怕了:)
select * from users where clue > 0;
0 results found.
Run Code Online (Sandbox Code Playgroud)
我自己的,这里发布的时间很长 - 现在关闭3500线
我必须真正与一个绝对可怕的架构分担责任.最开始的一个简单的练习是使用一些工会转动非规范化数据,这变成了一个笨拙的噩梦.它非常需要维修.
亚军是这样的:
select
case datepart(mm,getdate())
when 1 then 'Jan'
when 2 then 'Feb'
when 3 then 'March'
when 4 then 'Apr'
when 5 then 'May'
when 6 then 'Jun'
when 7 then 'July'
when 8 then 'Aug'
when 9 then 'Sept'
when 10 then 'Otc'
when 11 then 'Nov'
when 11 then 'Dec'
end
Run Code Online (Sandbox Code Playgroud)
该帖子中没有拼写错误 - 这就是它的编写方式.谢谢,咨询美元!
我当然用Select left重构(datename(mm,getdate()),3)
当我第一次获得目前的工作时,我的第一个项目是创建一个应用程序,用于汇总我们计算机实验室中的许可证使用数据。他坚持认为他不希望后端数据库被规范化,因为连接“太贵了”。这是我的第一周,我没有资格争论。
现在,为了从数据库中提取任何有用的数据,必须在需要提取摘要以删除每一行中的重复数据的每个查询中“撤消”非规范化。当然,这些是唯一实际使用的查询。你会看到很多嵌套的选择,如果数据被规范化,这些选择是完全没有必要的,例如:
select location, sum(login_time) as total_login_time
from
(select location, session_id, max(login_time) as login_time
from sessions
where location in ('lab1','lab2')
and session_start >= @start_date
and session_end <= @end_date
group by location, session_id) tbl
group by location
Run Code Online (Sandbox Code Playgroud)
虽然,查询本身并不是特别难看——尽管有些是——每次必须跳过箍以撤消不必要的非规范化伤害的过程。
现在boss走了,但我没时间重写……