1、left join和Inner join的区别,举例说明
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录。 inner
join(等值连接)只返回两个表中联结字段相等的行。 left join 理解为“有左显示”,比如on
a.fieId=b.fieId,则显示A表中存在的全部数据及a\b中都有的数据。a有b没有的数据用null显示。 inner join
理解为“有效连接”,两张表都有的数据才会显示。
2、union和union all的区别
一、区别1:取bai结果的交集
1、union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct,
同时进行默认规则的排序;
2、union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;二、区别2:获取结果后的操作
1、union: 会对获取的结果进行排序操作
2、union all: 不会对获取的结果进行排序操作三、区别3:
1、union看到结果中ID=3的只有一条
select * from student2 where id < 4
union
select * from student2 where id > 2 and id < 6
2、union all结果中ID=3的结果有两个
select * from student2 where id < 4
union all
select *from student2 where id > 2 and id < 6
3、Oracle中获取时间的方法是什么?
select sysdate from dual;
4、能举例,子查询的代码吗
select from 用户信息表 where 用户名 in(
select 用户名 from 订单表 group by 用户名 having sum( 订单额 ) <1000 )
and 性别=‘男‘
5、什么是游标,在哪里使用?执行过程是怎样的
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录并赋给主变量,交由主语言进一步处理。
游标通常在存储过程中有使用,创建的游标在使用完后是需要关闭和释放的,所以是找不到游标文件的,用完就关闭释放了。
游标的执行步骤:
(1) 声明游标 (declare)
(2) 打开游标 (open)
(3) 读取游标 (fetch)
(4) 关闭游标(close)
(5) 释放游标 (deallocate)
6、存储过程是什么?事务是什么?
存储过程:是事先经过编译并存储在数据库中的一段语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
优点:
1、重复使用:存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量:存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性:参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
4、存储过程是预编译过的,执行效率高
事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)。
7、decode的含义,在 SQL server中,如果没有 decode,该怎么实现相同的
IF 条件=值1 THEN
RETURN(返回值1)
ELSIF条件=值2THEN
RETURN(返回值2)
......
ELSIF条件=值nTHEN
RETURN(返回值n)
ELSE
RETURN(缺省值)
ENDIF
decode(X,A,B,C,D,E)
这个函数运行的结果是,当X = A,函数返回B;当X != A 且 X = C,函数返回D;当X != A 且 X != C,函数返回E。 其中,X、A、B、C、D、E都可以是表达式,这个函数使得某些sql语句简单了许多。
8、Oracle中如何获取A表的10至50条数据?
查询表:hs-test
select * from (select t.*,rownum num from hs_test t) where num > 10 and num < 50
9、java把 String类型转化INT的方法
int a = Integer.parseInt(i);
int a = Integer.valueOf(i).intValue();
10、下记两种写法哪个更好,原因是什么
A.Apple. equals(“”)
B(“”). equals(Apple)
b更好,不会出现空指针的错误
11、如何判断输入的一串字符是否是电话号码,用代码:
(尽量代码说明,无法用代码表示的话请简述解决方案)
正则表达式:
public class CheckPhoneFormatUtils {
/** 正则表达
* 手机号码由11位数字组成,
* 匹配格式:前三位固定格式+后8位任意数
* 此方法中前三位格式有:
* 13+任意数
* 15+除4的任意数
* 18+除1和4的任意数
* 17+除9的任意数
* 147
*/
private static boolean isNumLegal(String str) throws PatternSyntaxException {
String regExp = "^((13[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$";
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(str);
return m.matches();
}
}
12、String和StringBuffer的区别,何种场合使用
String:
1.是对象不是原始类型。
2.为不可变对象,一旦被创建,就不能修改它的值。
3.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
4. String是final类,即不能被继承。
StringBuffer:
1.是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象
2.它只能通过构造函数来建立,StringBuffer subffer=new StringBuffer();
3. 对象被建立以后,在内存中就会分配内存空间,并初始保存一个null,通过它的append方法向其赋值 subffer.append(“hello word”);
使用String类的场景:在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算。
使用StringBuffer类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装。
13、java中编写代码查找&在字符串”name=admin&pass=123”中的位置并写出结果。
String str=" name=admin&pass=123";
System.out.println(str.indexOf("&"));