数据库

在实际应用中,我们经常遇到需要转换数据的显示方式,比如将横表转为纵表,或将纵表转为横表的情况
请运用SQL实现一下数据转换:
(转换前)
select * from test
grade_id subject_name max_score
1 语文 98
2 数学 95
2 政治 87
5 语文 97
5 数学 100
5 政治 92
(转换后)
年级 语文 数学 政治
一年级 98 0 0
二年级 0 95 87
五年级 97 100 92

Select grade_id ,sum(decode(subject_name,’语文’, max_score,0)) as 语文, sum(decode(subject_name,’数学’, max_score,0)) as 数学,
Sum(decode(subject_name,’政治’,max_score,0)) as 政治from text group by grade_id;
2.4 【问题】
在进行数据逻辑集合比较的时候,ORACEL提高了方便的操作供我们选用。
包括UNION , INTERSECT , MINUS 请分别指出这几个操作的含义。

Union : 求两个查询的合集!
Intersect: 求两个查询的交集,即两个查询结果的公共部分!
Minus: 求两个查询的差集,即,从第一个查询中去掉第二个查询的结果,为最后的返回结果!

如果TEST1 ,TEST2 两个表都只有一个字段A NUMBER,且其中有重复数据
SELECT A FROM TEST1
UNION
SELECT A FROM TEST2

SELECT A FROM TEST1
UNION ALL
SELECT A FROM TEST2
结果一样么??请对你的结论说明原因。

第一种用法会删除重复的资料。
第二种用法不会删除重复的资料。


2.5 【问题】
数据库为我们提高了定时调用存储过程和脚本的机制,该功能通过DBMS_JOB来实现的
请写出调用该过程的语句。


我们可以通过查看数据库中的那个试图来监控队列任务的基本情况???
DBA_JOBS, USER_JOBS

2.6 【问题】
请阅读一下代码,
procedure test
as
begin
create table test_pp (a number);
insert into test_pp values(1);
commit;
end;
如有错误之处请修改,并说明修改原因。如果没有不必作答。

没有
2.7 【问题】
请简单说明一下建立分区表的意义。(分区表的好处)

为了改善大型表的可伸缩性和可管理性




create table guestbook
(
id number(16) primary key,
username varchar2(64),
sex varchar2(2),
email varchar2(256),
expression varchar2(128),
content varchar2(4000),
time date,
ip varchar2(64))
partition by range(time)
(partition g_2000q4 values less than(‘2001-01-01’)<0 tablespace users,
partition g_2001q1 values lsee than(’2001-04-01’)<0 tablespace users,
partition g_2001q2 values less than(’2001-07-01’)<0 tablespace users,
)
以time字段分区,标准
分区名: g_2000q4 范围:<'2001-01-01' (日期)
分区名: g_2001q1 范围:>'2001-01-01' <'2001-04-01'
分区名: g_2001q2 范围:>'2001-04-01' <'2001-07-01'
请修改上述代码,将guestbook建成一个分区表。
2.8 【问题】
现在我们需要对A 表和 B 表进行连接操作,需要关联A ,B 表的USER_NO字段和ACCT_MONTH字段
SELECT A.USER_NO,A.ACCTMOTNH,COUNT(*) FROM TEST1 A,TEST2 B
WHERE A.USER_NO=B.USER_NO AND A.ACCT_MONTH=B.ACCT_MONTH
为了提高该SQL的效率需要在B表上建立索引,请问应该怎么建立。写出相应的SQL。
如果B表上在USER_NO上已经建立了索引,下面的查询会用到该索引么??
SELECT * FROM TEST2 B
WHERE TO_NUMBER(USER_NO)='222313';

Create index B_index on B (user_no,acct_month);

用不到 因为 有函数 TO_NUMBER


3. Java问卷(Java程序员应答,其他跳过)
3.1 【问题】
简述对Vector类的理解,并写出常用到的对向量的增、删、插、定位及获取长度的方法。


增:
public Boolean add( Object o);
Public void add (int index,Object element)

删: public Object remove(int index)
Public Boolean remove(Object o)

插: public Object set(int index,Object element)

定位:public int indexOf(Object elem)
Public Object get(int index)

长度:public int size()


3.2 【问题】
请给出下面一段程序的执行结果:
public class Base{
void Iam(Base b){
System.out.pirntln(“Base;Overload”);
}
void Iam(Child c){
System.out.println(“Child;Overload”);
}
public static void main(String[] args){
Base[] test = new Base[] {new Base(),new Child();}
For(int i=0;i<test.length;I++){
Test[i].Iam(new Child());
}
}
}

class Child extends Base{
void Iam(Base b){
System.out.println(“Base;Override”);
}
void Iam(Child c){
System.out.println(“Child;Override”);
}
}

System.out.println(“Child;Overload”);
System.out.println(“Child;Override”);
3.3 【问题】
Jsp的两种跳转方式分别是什么?有什么区别?

1. forword:在当前连接中引入要转向的页面!
2. Response.sendRedirect :断开当前页面连接,重新打开新的页面!

3.4 【问题】
请找出下面一段程序出现的问题,并给出合理的解决方案或者修改程序(前面的数字表示行号)
  1 OutputStreamWriter out = ...
  2 java.sql.Connection conn = ...
  3 try {
  4 Statement stat = conn.createStatement();
  5 ResultSet rs = stat.executeQuery(
  6 "select uid, name from user");
  7 while (rs.next())
  8 {
  9 out.println("ID:" + rs.getString("uid")
  10 ",姓名:" + rs.getString("name"));
  11 }
  12 conn.close();
  13 out.close();
  14 }
  15 catch(Exception ex)
  16 {
  17 ex.printStackTrace();
  18 }


对象rs和stat应在后面关闭!while语句 一般不写在TRY中!这样会降低执行的效率!

改为:
1 OutputStreamWriter out = ...
  2 java.sql.Connection conn = ...
  3 try {
  4 Statement stat = conn.createStatement();
  5 ResultSet rs = stat.executeQuery(
  6 "select uid, name from user");
}
  7 catch(Exception ex)
  8 {
  9 ex.printStackTrace();
  10 }
  11 while (rs.next())
  12 {
  13 out.println("ID:" + rs.getString("uid")
  14 ",姓名:" + rs.getString("name"));
  15 }
16try{
17 rs.close()
18 stat.close()
  19 conn.close();
  20 out.close();
  21 }
  22 catch(Exception ex)
  23 {
  24 ex.printStackTrace();
  25 }

3.5 【问题】
请完成一个java类,要求:将ResultSet 转换为Vector,并实现类似ResultSet的GetString(int FieldIndex) 、Next()方法。
3.6 【问题】
如何防止Form的重复提交?(可以用文字描述)
获取提交的信息,以获取的信息为条件查找数据库,返回结果集,如果结果集不为空,表明已经提交过了
3.7 基础题

多项选择题(在每小题的五个备选答案中选出正确答案,并将正确答案的序号填入题干后面的括号内,错选多选,漏选均不得分。)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

c
abd
c
C d
abcd
A,e
ade
abc
c
ad
bc
d
ac
b
b
c
b
ad
abc
c
1、给出如下代码:
class Test{
  private int m;
  public static void fun() {
    // some code...
  }
}
如何使成员变量m 被函数fun()直接访问?
A、将private int m 改为protected int m
B、将private int m 改为 public int m
C、将private int m 改为 static int m static 访法中只能调用static 变量
D、将private int m 改为 int m


2、下面哪几个函数是public void example(){...}的重载函数?
A、 public void example( int m){...}
B、public int example(){...}
C、public void example2(){...}
D、 public int example ( int m, float f){...}
重载是型的方法了怎样都行 就是名相同即可

3、给出下面的代码段:
public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;
z=c;
}
}
在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?
A、 Base(a,b);
B、x=a, y=b;
C、x=a; y=b;
D、this(a,b); 构造方法中怎么能调构造方法呢


4、已知如下定义:String s = "story";
下面哪个表达式是合法的?
A、 s += "books";
B、char c = s[1];
C、int len = s.length;
D、String t = s.toLowerCase(); “story”是String的对象不可用下表取值
它有cd两种方法


5、Java中main()函数的值是什么?
A、 String
B、int
C、char
D、void main函数是可以重载的


6、如下哪些字串是Java中的标识符?
A、 fieldname
B、super
C、3number
D、#number
E、$number 以字母或下划线或美元符号开头

7、如下哪些是Java中有效的关键字?
A、 const
B、NULL
C、false
D、this
E、 native false true null 都是保留字


8、如下哪些是Java中正确的整数表示?
A、22
B、0x22
C、022
D、22H


9、下面的代码段中,执行之后i 和j 的值是什么?
int i = 1;
int j;
j = i++;
A、 1, 1
B、1, 2
C、2, 1
D、2, 2


10、下面句话是正确的?
A、 >> 是算术右移操作符.
B、>> 是逻辑右移操作符.
C、>>> 是算术右移操作符
D、>>> 是逻辑右移操作符


11、下面哪个赋值语句是合法的?
A、float a = 2.0
B、double b = 2.0
C、int c = 2
D、long d = 2


12、下面哪个是main()函数的合法参数?
A、char args[]
B、char args[][]
C、String arg[]
D、String args[]


13、下面哪个语句是创建数组的正确语句?
A、 float f[][] = new float[6][6];
B、float []f[] = new float[6][6];
C、float f[][] = new float[][6];
D、float [][]f = new float[6][6];
E、float [][]f = new float[6][];


14、已知表达式int m[] = {0, 1, 2, 3, 4, 5, 6 };
下面哪个表达式的值与数组下标量总数相等?
A、 m.length()
B、m.length
C、m.length()+1
D、m.length+1


15、已知如下的命令执行 java MyTest a b c
请问哪个语句是正确的?
A、 args[0] = "MyTest a b c"
B、args[0] = "MyTest"
C、args[0] = "a"
D、args[1]= 'b'


16、已知如下代码:
public class Test
{
long a[] = new long[10];
public static void main ( String arg[] ) {
System.out.println ( a[6] );
}
}
请问哪个语句是正确的?
A、Output is null.
B、Output is 0.
C、When compile, some error will occur.
D、When running, some error will occur.


17、已知如下代码:
boolean m = true;
if ( m == false )
System.out.println("False");
else
System.out.println("True");
执行结果是什么?
A、False
B、True
C、None
D、An error will occur when running.


18、已知如下代码:
public class Test
{
public static void main(String arg[])
{
int i = 5;
do {
System.out.println(i);
} while (--i>5)
System.out.println("finished");
}
}
执行后的输出是什么?
A、 5
B、4
C、6
D、Finished
E、None


19、下面代码执行后的输出是什么?
outer: for(int i=0;i<3; i++)
inner: for(int j=0;j<2;j++)
{
if(j==1) continue outer;
System.out.println(j+ "and "+i);
}
A、 0 and 0
B、0 and 1
C、0 and 2
D、1 and 0
E、1 and 1
F、1 and 2
G、2 and 0
H、 2 and 1
I、 2 and 2


20、已知如下代码:
switch (m)
{
case 0: System.out.println("Condition 0");
case 1: System.out.println("Condition 1");
case 2: System.out.println("Condition 2");
case 3: System.out.println("Condition 3");break;
default: System.out.println("Other Condition");
}
当m 的值为什么时输出"Condition 2"?
A、 0
B、1
C、2
D、3
E、4
F、None
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值