我想在Java中使用JDBC在数据库(在我的情况下是Microsoft SQL Server)中INSERTlogging。 同时,我想获得插入ID。 我怎样才能实现这个使用JDBC API?
我想运行一个查询 select … as days where `date` is between '2010-01-20' and '2010-01-24' 并返回如下数据: 天 ———- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24
SELECT GETDATE() 2008-09-22 15:24:13.790 2008-09-22 00:00:00.000我希望没有时间的date部分 我怎么能得到这个?
我如何在纯SQL中请求一个随机行(或尽可能接近真正的随机)?
可能重复: 删除MySQL中的重复行 我如何删除MySQL表中的所有重复数据? 例如,用以下数据: SELECT * FROM names; +—-+——–+ | id | name | +—-+——–+ | 1 | google | | 2 | yahoo | | 3 | msn | | 4 | google | | 5 | google | | 6 | yahoo | +—-+——–+ 我将使用SELECT DISTINCT name FROM names; 如果它是一个SELECT查询。 我怎样才能做到这一点与DELETE删除重复只保留每个logging?
我有2桌 – 预订: id | some_other_column —-+—————— 1 | value 2 | value 3 | value 和第二个表 – reservation_log: id | reservation_id | change_type —-+—————-+————- 1 | 1 | create 2 | 2 | create 3 | 3 | create 4 | 1 | cancel 5 | 2 | cancel 我只需要select未取消的预订(在本例中只有ID 3)。 我可以很容易地select取消与一个简单的“WHERE change_type =取消”条件,但我努力与NOT取消,因为简单的WHERE在这里不工作。
我见过很多人声称你应该专门在你的select查询中命名你想要的每一列。 假设我要使用所有的列,为什么我不使用SELECT * ? 即使考虑问题* SQL查询 – 从视图中select*或从视图 * selectcol1,col2,… colN ,我不认为这是一个完全重复,因为我从一个稍微不同的angular度来处理这个问题。 我们的原则之一是不要在时间之前进行优化。 考虑到这一点,似乎使用SELECT *应该是首选的方法,直到它被certificate是一个资源问题,或架构几乎成立。 正如我们所知道的,直到发展完全完成才会发生。 这就是说,有一个压倒一切的问题,不使用SELECT * ?
准备好的语句如何帮助我们防止SQL注入攻击? 维基百科说: 准备好的语句对SQL注入是有弹性的,因为稍后使用不同的协议传输的参数值不需要被正确地转义。 如果原始语句模板不是从外部input派生的,则不会发生SQL注入。 我看不出原因。 简单的英语和一些例子,简单的解释是什么?
为什么SELECT *坏习惯? 如果你添加了一个你想要的新列,这不是说更less的代码要改变吗? 我知道SELECT COUNT(*)是一些DB上的性能问题,但是如果你真的想要每一列呢?
有没有办法使Oracle查询的行为像它包含MySQL limit条款? 在MySQL中,我可以这样做: select * from sometable order by name limit 20,10 得到第21到第30排(跳过前20,给下10)。 这些行是按order byselectorder by ,所以它按字母顺序从第20个名字开始。 在Oracle中,人们提到的唯一的东西是rownum伪列,但是在 order by 之前进行评估,这意味着: select * from sometable where rownum <= 10 order by name 将返回随机设置的10行按名称sorting,这通常不是我想要的。 它也不允许指定偏移量。