前言 由于之前是做Java开发的,所以对数据库部分知识的掌握也是必须的,在做开发的时候需要自己写SQL语句,这里就总结一下自己在平时工作中遇到的一些关于SQL语句的问题,希望对大家有所帮助。 Update语句 update语句会一次性更新所有满足条件的记录,所以可能会有多行记录受到影响 使用update语句更新多列时,使用“,”(逗号)分隔,而不是用and,例如 HQL语句 如果使用过Hibernate的话,应该知道HQL语句,它是一种面向对象的SQL语句。 如果在HQL语句中使用了多个表的话,则返回的List结果中,每一个元素都是由多个表单独构成的。例如以下的SQL语句 在上述的SQL语句中涉及到了两个表,在返回的查询结果中,每个元素都是数组的形式,数组中的元素来自于不同的表,可以通过索引[0],[1]来访问具体值,调试过程可以看出List中包含的内容。 删除表数据而不删除表 如果只想删除表中的数据,而不想删除表的结构,可以有两种方式: truncate delete truncate相比于delete命令,在执行速度上会更快,因为truncate只记录整个数据页的释放,而delete会记录每条记录的删除操作。 如果有rollback命令,delete语句会回滚,而truncate语句不会回滚,在使用上truncate语句要更小心。 在Java中使用复杂的SQL语句 有的时候我们会遇到这样一种情况,在SQL语句的命令行或者可视化界面中,SQL语句是可以执行的,而在Java的程序中执行却会报错。 我们看个具体的例子,有这样一段SQL语句 这段SQL语句在navicate for mysql中是可以正常执行的,但是如果利用Hibernate的query.list()方法查询时却会报错。 这是因为在SQL语句中没有使用别名,m.`name`和p.`name`会出现重复的字段名。而在navicate中会自动重新命名,所以不会出错。 解决方法如下: 总结 今天这篇文章简单的总结了下平时工作中SQL语句的使用经验,你学会了吗?