数据库简单测试题整理

it2022-05-09  26

1、如果在没有指定模式的情况下创建表,它会在哪种模式中 ?(D) A. 他会是孤表,没有模式 B. 创建会失败 C. 会在SYS模式下 D. 会在当前用户创建它的模式下 解析:默认情况下,在哪个用户下面创建表,表就属于当前用户创建模式 2、下列那些语句会因为表名不合法而创建失败? (D、E) A. create table “SELECT”(id number); B. create table “lower”(id number); C. create table number1(id number); D. create table 1number(id number); E. create table update(id number); 解析:表名不能以数字开头,表名不能用数据库中的特殊字符,若要使用需要加双引号 3、 分析下面语句: create table t1 as select * from emp where 1=2; 结果是以下选项哪一个? (C) A. 会因为不可能的条件而创建失败 B. 不会创建表,因为条件返回FALSE C. 会创建表T1,但是不会插入行,因为条件返回FALSE D. 会创建表T1,也会插入emp表中的所有行数据 4、下列哪些约束强制要求使用索引? (C、D) A. CHECK B. NOT NULL C. PRIMARY KEY D.UNIQUE E. FOREIGN KEY 解析:当一个列上设置了主键约束或者是唯一约束的时候就会自动的创建索引 5、研究下面的视图创建语句: create view dept30 as select dep_id,emp_id,last_name from employees where dep_id=30 with check option; 下列更新语句执行结果是(选择一个最佳答案) (C) update dept30 set dep_id=10 where emp_id=114; A.会成功 ,但除非另外指定,否则视图会被创建为WITH READ ONLY B.会失败,视图太复杂而不允许DML操作 C.会失败,WITH CHECK OPTION 会拒绝任何修改DEP_ID 的语句 (答案) D. 该语句会成功 6、分析下面三条语句: create synonym s1 for employees; create public synonym s1 for departments; select * from s1; 下面哪个结果是正确的? (B) A. 第二个语句会失败,因为对象S1已经存在 B. 第三个语句会显示EMPLOYEES 的内容 C. 第三个语句会显示DEPARTMENTS的内容 D. 第三个语句会显示表S1的内容(如果此当前模式中存在这样一个表的话) 7、一个视图和一个同义词的创建语句如下: create view dept_v as select * from dept; create sysnonym dept_s for dept_v; 然后删除表DEPT。如果查询同义词DEPT_S会发生什么事? (D) A. 不会有错误,因为该同义词引用了依然存在的视图,但是不会有行返回 B. 如果先用命令ALTER VIEW DEPT_V COMPILE FORCE 重新编译视图,就不会有错误 C. 会有一个错误,因为该同义词将是无效的 D. 会有一个错误,因为视图将是无效的 (答案) E. 会有一个错误,因为删除表时会隐式删除视图 解析:会返回错误,删除基表,视图已经无效,但不会删除视图 8、创建一个序列,语句如下: create sequence seq1 maxvalue 50; 如果当前值已经是50,当视图选择SEQ1.NEXTVAL 时会发生什么情况? (D) A. 序列会循环,并发出0 B. 序列会循环,并发出1 C. 序列会重新发出50 D. 会出现一个错误 解析:默认序列不循环 9、下面哪些命令会删除表中的所有行? (A、C) A. 没有WHERE子句的DELETE命令 B. DROP TABLE 命令 C. TRUNCATE命令 D. UPDATE 命令,将各列设置为NULL,且不包含WHERE子句 10、 下面哪些命令可以回滚? (B、C、D) A. COMMIT B. DELETE C. INSERT D. UPDATE E. TRUNCATE 11、考察下面SQL语句的结果: SQL>select * from t1; 如果发出语句: insert into t1 (c1,c2) values (select c1,c2 from t1); 以下哪个分析正确? (D) A. 会失败,因为没有为所有表的列提供值:C3和C4应为NULL B.会失败,因为子查询返回多行:它需要WHERE 子句将返回的行数限制为1 C. 会失败,因为子查询不是标量:它应该使用MAX或MIN来生成标量值 D. 会失败,因为VALUES关键字和子查询不能同时使用 E. 会成功,但插入的C3,C4行都为NULL 12、我们需要锁定来阻止会话同时处理同一数据,如果一个用户更新一行数据时没有指定任何锁定,会对其他会话带来什么影响? (B) A. 其他会话可以读写其他行,但不能读写第一个会话处理的行 B. 其他会话可以读取第一个会话处理的行,但不能写入它 C. 其他会话可以读写第一个会话处理的行,但在第一个会话提交或回滚之前,会挂起COMMIT D. 其他会话不能写入任何行,因为默认情况下,第一个会话在整个表上施加了一个锁 13、在一张表中,SAL字段的数据类型是NUMBER(8,2),则在该列不允许出现以下哪些SAL值? (A、C) A. 12345678 B. 123456.78 C. 1234567.8 D. 123456 E. 12.34 14、下面哪几条语句条件意思一样? (A、C) A. where sal<=5000 and sal>=2000 B. where sal in(2000,3000,4000,5000) C. where sal between 2000 and 5000 D. where sal>2000 and <5000 E. where sal>=2000 and <=5000 15、执行下面语句之后会返回什么值?01-JAN-2009是星期四: select next_day(‘01-JAN-2009’,‘wed’) from dual; (A) A. 07-JAN-2009 B. 31-JAN-2009 C. 星期三 D. 以上都不对 16、 下面语句返回的结果是? (C) select count(*) from dual; A. NULL B. 0 C. 1 D. 以上都不对 17、下面关于分组函数的陈述,正确的说法是? (B) A. 只有存在GROUP BY子句时,才能使用分组函数 B. 分组函数每次可以作用于多行 C. 分组函数每次只可以作用于一行 D. 在一个组中分组函数可以多次执行 18、执行下面语句的返回值是? (C)

select count(*),count(salary),sum(salary) from employees; employees表中有10个员工记录,除了一条记录的salary字段是空值外,每条记录包含的salary值都为100 A. 10,10,1000 B.10,NULL,NULL C.10,9,900 D. 以上都不对 19、执行以下语句返回的值是? (C) select job_id,max_salary from jobs group by max_salary; jobs表由10条记录,job_id的值都是DBA,max_salary的值都是100 A. 包含值“DBA,100”的一行输出 B. 包含值“DBA,100”的10行输出 C. 返回一个错误 D. 以上都不对 20、执行以下语句会返回多少行数据? (B) select dept_id,sum(nvl(salary,100)) from emp group by dept_id having sum(salary) >400; EMP 表有10行,除了一行SALARY的值是空值外,每行包含的SALARY值为100.第一个5行的DEPT_ID 值为10,第二个5行的DEPT_ID 的值为20,其中一行的SALARY 值为空。 A. 两行 B. 一行 C. 零行 D. 以上都不对 21、关于下面的查询,请选择一个正确的说法: (A) select c.country_id from locations l right outer join countries c on (l.country_id=c.country_id) where l.country_id is null; A. 不返回LOCATIONS表中有COUNTRY_ID值的行 B. 不返回COUNTRIES表中有COUNTRY_ID值的行 C. 返回的行表示LOCATIONS表中所有行的COUNTRY_ID值 D. 以上说法都不对 22、从语法上看,下面哪些语句是正确的? (A) A. select jh.job_id from job_history jh right outer join jobs j on jh.job_id=j.job_id; B. select job_id from job_history jh right outer join jobs j on (jh.job_id=j.job_id); C. select job_history.job_id from job_history outer join jobs on job_history.job_id=jobs.job_id; D. 以上都不对 23、查看下面给出的select语句的一般形式 select select_list from table where condition group by expression_1 having expression_2 order by expression_3; 可以在哪里使用子查询? ( A、B、C、E) A. SELECT_LIST B. TABLE C. CONDITION D. EXPRESSION_1 E. EXPRESSION_2 F. EXPRESSION_3 24、考察下面语句: select employee_id,last_name from employees where salary >(select avg(salary) from employees); 何时执行子查询? (A)

A. 在外查询之前执行子查询 B. 在外查询之后执行子查询 C. 与外查询同时执行子查询 D. 子查询为EMPLOYEES表中的每一行都要执行一次 25、哪些比较运算符不能与多行子查询一起使用? (E) A. ALL B. ANY C. IN D. NOT IN E. 以上都可以 26、考察下面语句: select last_name,(select count(*) from departments) from employees where salary=(select salary from employees); 它有什么错误? (C) A. 没有错误,语句可以正常运行 B. 语句会失败,因为SELECT列表中的子查询引用的表不在FROM子句中 C. 如果条件子查询返回多行,语句就会失败 D. 语句会运行,但非常没有效率,因为第二个子查询需要为EMPLOYEES 表中的每一行都运行一次 27、下面哪些语句是结果是一样的? (A、B) A. SELECT employee_id FROM employees WHERE salary < ALL (SELECT salary FROM employees WHERE department_id=10); B. SELECT employee_id FROM employees WHERE salary < (SELECT min(salary) FROM employees WHERE department_id=10); C. SELECT employee_id FROM employees WHERE salary NOT >= ANY (SELECT salary FROM employees WHERE department_id=10); D. SELECT employee_id FROM employees e JOIN departments d on e.department_id=d.department_id WHERE e.salary < (SELECT salary FROM employees) AND department_id=10;


最新回复(0)