Oracle数据库的连接查询包括:等值连接、外连接、自连接等。
where子句中加(+) 是外连接的一种。外连接分:左外连接和右外连接。
select * from emp,dept where emp.deptno=dept.deptno(+); --右外连接
select * from emp,dept where emp.deptno(+)=dept.deptno; --左外连接
where子句中加(+) 是外连接的一种。外连接分:左外连接和右外连接。
select * from emp,dept where emp.deptno=dept.deptno(+); --右外连接
select * from emp,dept where emp.deptno(+)=dept.deptno; --左外连接
带(+)侧的数据即使不存在,另一侧的数据依然可以显示出来。
delete数据时sql语句编写
在拼接字符串时,删除语句使用where(1!=1)防止没有参数传值导致的sql语句出错
@Override
public void delete(List<DcDevice> list) throws ApplicationException {
StringBuffer masterHqlBf = new StringBuffer();
StringBuffer detailHqlBf = new StringBuffer();
masterHqlBf.append(" delete from DcDevice where (1 != 1) ");
detailHqlBf.append(" delete from DcDeviceAttachment where (1 != 1) ");
for (Iterator<DcDevice> it = list.iterator(); it.hasNext();) {
DcDevice dcDevice = it.next();
masterHqlBf.append(" or (deviceId = '");
masterHqlBf.append(dcDevice.getDeviceId());
masterHqlBf.append("') ");
detailHqlBf.append(" or (dcDevice.deviceId = '");
detailHqlBf.append(dcDevice.getDeviceId());
detailHqlBf.append("') ");
}
try {
execHqlUpdate(detailHqlBf.toString());
execHqlUpdate(masterHqlBf.toString());
} catch (OPException ex) {
throw new ApplicationException("删除设备失败!", ex);
}
}