2020.02.06

1.存储过程与SQL的区别?

存储过程是一组预编译的SQL语句,经编译后存储在数据库中,可包含一个或多个SQL语句。能够完成一定功能的子程序,需要的时候用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它,存储过程可以包含数据操作语言,逻辑和调用函数等;它又可分为系统存储过程和用户自定义的存储过程。
SQL指结构化查询语言,是一种ANSI的标准计算机语言。

2.如何创建视图?

语法:create view 视图名 as <select 语句>

3.Oracle数据库如何提高访问性能?

1)避免在索引列上使用is null 和 is not null操作。
避免在索引中使用任何可以为空的列,Oracle将无法使用该索引。对于单列索引,如果列包含空值,索引中将不存在此记录。对于复合索引,如果每个列都为空,索引中同样不存在此记录。如果至少有一个列不为空,则记录存在于索引中。
2)用union替换or(适用于索引列)
通常情况下,用union替换where子句中的or将会起到较好的效果。对索引列适用or将造成全表扫描。注意,以上规则只针对多个索引列有效。如果有column没有被索引,查询效率可能会因为你没有选择or而降低。
3)分离表和索引
总是将你的表和索引建立在不同的表空间内(tablespaces)。决不要将不属于Oracle内部系统的对象存放到system表空间里。同时,确保数据表空间和索引表空间置于不同硬盘上(通过指定表空间的凡是可以实现这个要求)
4)共享SQL语句
为了不重复解析相同的SQL语句,在第一次解析之后,Oracle将SQL语句存放在内存中。这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同,Oracle就能很快获取已经被解析的语句以及最好的执行路径。Oracle的这个功能大大地提高了SQL的执行性能并节省了内存的使用。当你向Oracle提交一个SQL语句,Oracle会首先在这块内存中查找相同的语句。这里需要注明的是,Oracle对两者采取的是一种严格匹配,要到达成共享,SQL语句必须完成相同(包括空格,换行等)。
5)where子句中的连接顺序。
Oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其他where条件之前,那些可以过滤掉最大数量记录的条件必须写在where子句的末尾。
6)select子句中避免使用***
当你想在select子句中列出所有的column时,使用动态SQL列引用**()是一个方便的方法。不幸的是,这是一个非常低效的方法。实际上,Oracle在解析过程中,会将)**一次转换成所有列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。
7)使用decode函数来减少处理时间
使用decode函数可以避免重复扫描相同记录或重复连接相同的表。
8)用truncate替代delete
当删除表中的记录时,在通常情况下,回滚段(rollback segment)用来存放可以被恢复的信息。如果你没有commit事务,Oracle会将数据恢复到删除之前的状态。而当运用truncate时,回滚段不再存放任何可被恢复的信息,当命令运行后,数据不能被恢复。因此很少资源被调用,执行时间也会很短。(注意:truncate只在删除全表适用,truncate是ddl不是dml)
9)尽量多使用commit
只要有可能,在程序中尽量对使用commit,这样程序的性能得到提高,需求也会因为commit所释放的资源而减少。
COMMIT 所释放的资源:
a. 回滚段上用于恢复数据的信息.
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE 为管理上述 3 种资源中的内部花费
(注意: 在使用 COMMIT 时必须要注意到事务的完整性,现实中效率和事务完整性往往是 鱼和熊掌不可得兼) j
10)用where子句替代having子句
避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个 处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面 的开销.
11)用exists替代in
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种 情况下, 使用 EXISTS(或 NOT EXISTS)通常将提高查询的效率.
12)用not exists替代not in
在子查询中,NOT IN 子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN 都是 最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用 NOT IN ,我们可 以把它改写成外连接(Outer Joins)或 NOT EXISTS.

4.Java中常用的运算符有哪些?这些运算符之间的优先级怎么样?

1)算术运算符,2)比较运算符,3)赋值运算符,4)逻辑运算符。
运算符之间的优先级:
算术运算符>比较运算符>逻辑运算符>赋值运算符。

5.在Java中定义一个生产10-100之间的随机数的公式?

int random = (int)(Math.random()*(max-min)+min);
int random = (int)(Math.random()*(100-10)+10);

6.switch语句中的表达式可以是什么类型数据?

表达式的值可以是byte,short,int,char和枚举类型的数据。在JDK1.7以后,支持String类型数据。

7.while循环结构和do…while循环结构的不同?

while结构在循环的开始判断下一个迭代是否应该继续。do…while结构在循环的末尾来判断是否将继续下一轮的迭代。do…while的循环结构至少会执行一次循环体。

8.程序中break、continue、return跳转语句的不同?(重点)

1.break:跳出循环体而执行循环后面的语句。
2.continue:跳出循环体中剩余的语句而执行下一次循环。
3.return:结束方法的调用。

9.使用数组四步走是什么?

1.声明数组,2.分配空间,3.赋值,4.处理数据。

10.数组的定义有哪些方式?

int[] arr = new int[5];
int arr[] = new int[5];
int[] arr = new int[]{1,2,3,4,5};
int[] arr = {1,2,3,4,5};
发布了33 篇原创文章 · 获赞 16 · 访问量 6122

猜你喜欢

转载自blog.csdn.net/qq_37881565/article/details/104191673