關於數據庫的考題

2010-10-01  张海江 

 

一、选择题

1、 Oracle存储结构正确的是()

A. tablespace--segment--osblock--block

B. tablespace--segment--extent--block

C. tablespace-- extent -- segment--block

D. tablespace-- extent -- block -- segment

 

2、 EMPLOYEES结构为

(

  EMPLOYEE_ID    NUMBER(6) not null primary key,

  FIRST_NAME     VARCHAR2(20) unique,

  LAST_NAME      VARCHAR2(25),

  EMAIL          VARCHAR2(25) not null,

  PHONE_NUMBER   VARCHAR2(20),

  HIRE_DATE      DATE,

  JOB_ID         VARCHAR2(10),

  SALARY         NUMBER(8,2),

  COMMISSION_PCT NUMBER(2,2),

  MANAGER_ID     NUMBER(6),

  DEPARTMENT_ID  NUMBER(4)

)

以下哪几个语句可算出表中记录,多选 ()

A.select count(*) from EMPLOYEES

B.select count(EMPLOYEE_ID) from employees

C.select count(FIRST_NAME) from employees

D.select count(EMAIL) from employees

E.select count(JOB_ID) from employees

 

3、 EMPLOYEES的结构为:

(

EMP_ID NUMBER(4) NOT NULL

LAST_NAME VARCHAR2(30) NOT NULL

FIRST_NAME VARCHAR2(30)

DEPT_ID NUMBER(2)

JOB_CAT VARCHAR2(30)

SALARY NUMBER(8,2)

)

下面哪条语句可以查出各个dept_id的最大salary值和最小salary

并且它的最值小于5000最大值大于15000?()

A. SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

WHERE MIN(salary) < 5000 AND MAX(salary) > 15000;

B. SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

WHERE MIN(salary) < 5000 AND MAX(salary) > 15000

GROUP BY dept_id;

C. SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

D. SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

GROUP BY dept_id

HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

E. SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

GROUP BY dept_id, salary

HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

 

4、 SQL Server中在A数据库下如何访问B数据库中的C表:()

A.在A数据库中通过建立数据库链接指向B,然后直接访问select * from c

B.在B数据库中授权给A,然后直接访问select * from c

C.直接访问select * from c

D.直接访问select * from B..c

 

5、 Oracle数据库中用户A的一个存储过程用到用户B下的表Tab_B及函数Fun_B,正确的赋权语句是( )

    A.A用户模式执行 grant select on Tab_B to A; grant execute on Fun_B to A;

    B.B用户模式执行 grant select on Tab_B to A; grant execute on Fun_B to A;

    C.A用户模式执行 grant select on Tab_B to B; grant execute on Fun_B to B;

    D.B用户模式执行 grant select on Tab_B to B; grant execute on Fun_B to B;

 

6、 以下数据库是Oracle语法的是:()

A.select sysdate into v_time from dual;

B.select v_time = sysdate;

C.set v_time:=sysdate;(v_time为已定义的时间类型变量)

D. v_time=sysdate

 

7、 分别用 1.Insert, 2.delete, 3.update处理1000条数据,对数据库资源(回滚段)使用率由高到低的顺序是().

    A.123

    B.132

C.231

    D.312

8、 请看以下oracle中存储过程

begin

  begin

   <语句1>

   exception

    when others then

     dbms_output.put_line('错误1');

  end;

  begin

  <语句2>

   dbms_output.putline('错误2');

  end;

 exception

  when others then

  dbms_output.put_line("错误3");

end;

请问,<语句1>,<语句2>出错时,该存储过程输出字符串分别是什么?(  )

 A.错误1,错误3

 B.错误1,错误2

 C.错误1,错误2,错误3

 D.错误2,错误3

9、 SQL Server数据库中获取系统时间的内部函数是:()

A.sysdate

B.getdate()

C.currentdate

D.date()

10.Oracle数据库中,请描述语句SELECT decode(sign(-1),1,'a','b') FROM dual返回结果:()

 A.1

 B.-1

 C.a

 D.b

二、简答题

1、  Oracle数据库中,如何增加表空间userdata的大小,请写出具体数据库语句?(以windows操作系统为例说明)

2、 简要叙述TRUNCATE, DROP, DELETE之间的关系。

3、举例说明while..loop/for..loop循环语句,插入1..10的值到一个单字段数据表(结构自定义)

4解释data block , extent segment的区别这里建议用英文术语

5已知表T1A字段含有重复的数据(A字段非空),请在空白处完成SQL语句,其中第一条语句查询T1标准的记录总数,第二条语句查询T1标准A字段不重复记录总数

三、编程题(10个空格,每个空格2分):

1、  作家信息表Auths包含两个字段

Author_Code

VARCHAR2(50)

Salary

NUMBER(10)

其中Author_Code为作家代码,主键。Salary为作家工资额,非空。

现由于工资调整,对于作家代码在'A00001''A00006';之间的作家工资少于或等于五百,则给该作家增加15%的工资,对于大于5001000之间则增加12%,其它则增加10%。如下程序是通过游标方式实现的,请填写程序中相应的空格。

DECLARE

   -- 声明两个变量,用来接收游标返回的工资和作家代码

   v_Salary ()

 v_Code ()

   v_ErrText VARHCAR(200);

   -- 声明游标c_Salary,该游标的结果集是Auths表中作家代码(Author_Code)值是

   -- 'A00001''A00006'的工资值(Salary)和作家代码值(Author_Code)

   CURSOR c_Salary IS

    SELECT Salary,

           Author_Code

     FROM Auths

    WHERE Author_Code >='A00001'

       AND Author_Code <='A00006';

BEGIN

   -- 打开游标

      LOOP

      --游标循环,将游标查询结果集中的一行保存到两个临时变量中

      () c_Salary INTO v_Salary, v_Code;

      -- 当结果集中没有行是退出

      EXIT WHEN ();

      -- 如果该作家的工作少于或等于五百,则给该作家增加15%的工资

      -- 5001000之间则增加12%,其他增加10%

      IF v_Salary <= 500 THEN

         UPDATE Auths

             SET Salary = ()

          WHERE Author_Code = v_Code;

      ELSIF v_Salary <= 1000 THEN

          UPDATE Auths

             SET Salary = Salary + Salary * 0.12

          WHERE Author_Code = v_Code;

      ()

          UPDATE Auths

             SET Salary = Salary + Salary * 0.1

          WHERE Author_Code = v_Code;

      END IF;

   END LOOP;

   ();

   ();

  EXCEPTION

   WHEN OTHERS THEN

   CLOSE c_Salary;

   ROLLBACK;

   v_ErrText := ();

   DBMS_OUTPUT.PUT_LINE('程序异常终止,出现一下错误:'||v_ErrText);

END;

391°/3858 人阅读/6 条评论 发表评论

姜丹  2010-10-07

不附答案吗


雷雨  2010-10-08

越看越觉得自己的数据库差啊~


徐明明  2010-10-09

我第一题就没做出来。。。还好之后的基本没问题。。。


夏浩淋  2010-10-09

能答出的在少数啊,oracle DB的知识懂得的更少了....存起问老师,呵


熊志男  2010-10-09

第一题答案是B 表空间-段-范围-数据块


叶欢  2010-10-10

感觉自己不行啊


登录 后发表评论