限制和排序数据问题

限制和排序数据问题


1. 以下哪个子句用于限制从 SELECT 查询中检索的行数?

  1. 限制
  2. 在哪里

答案:B . WHERE 子句用于限制从 SELECT 查询返回的行数。

2. 选择可以在 SELECT 查询的 WHERE 子句中比较其值的数据库元素。

  1. 柱子
  2. 顺序
  3. 程序
  4. 文字

答案:A、 D。WHERE 子句可用于比较来自列、文字、算术函数和函数的值。

3. SELECT 查询的 WHERE 子句谓词中未包含哪些元素?

  1. 比较运算符
  2. 比较条件
  3. 列名
  4. 表名

答案:D . WHERE 子句谓词中不需要表名。

4. WHERE 子句条件求值后不能返回下列哪些值?

  1. 未知
  2. 真的
  3. 错误的
  4. 无效的

答案: A.如果 WHERE 子句中条件的结果未知,则返回 NULL。在所有其他情况下,返回 TRUE 或 FALSE。

5. SELECT 查询中必须出现的 WHERE 子句的最少数量是多少?

  1. 1
  2. 2
  3. 0
  4. 3

答案: C。WHERE 子句是SELECT 查询中的一个可选子句,仅用于限制行数。

6. SELECT 查询中最多可以包含多少个 WHERE 子句?

  1. 1
  2. 2
  3. 0
  4. 3

答: A. WHERE 子句是 SELECT 查询中的一个可选子句,它只能使用一次以限制行数。

7. 下列关于 WHERE 子句的说法正确的是?

  1. 列别名可用于 WHERE 子句中以引用列
  2. 比较运算符是 WHERE 子句条件中的可选元素
  3. 函数可以用作 WHERE 子句中的操作数
  4. SELECT 查询中可以有多个 WHERE 子句

答案:C . WHERE 子句必须有比较运算符来评估条件。它可以使用函数作为操作数之一。SELECT 查询中只允许一个 WHERE 子句。

8. 编写一个 SELECT 查询以从 EMP 表中列出唯一的部门?

  1. SELECT deptno FROM emp;
  2. SELECT DISTINCT deptno FROM emp;
  3. SELECT DISTINCT (deptno) FROM emp;
  4. SELECT empno, DISTINCT deptno FROM emp;

答案:B & C。关键字 DISTINCT 用于从 SELECT 查询中过滤掉重复的行。

9. date 和timestamp 列允许进行以下哪些操作?

  1. 分配
  2. 添加
  3. 减法
  4. 级联

答案:B、C 和 D。加法、减法和串联是允许对日期和时间戳列进行的操作。

10. 以下运算符中,哪一个具有最高优先级?

  1. 分配 (/)
  2. 乘法 (*)
  3. 括号 ( () )
  4. 减法

答案:C.括号内的表达式具有最高优先级。

11. 解释以下 SELECT 查询返回的输出

SELECT ename, (sysdate - hiredate)
FROM emp;
  1. 本年的天数
  2. 一年中雇用员工的天数
  3. 员工在公司度过的天数
  4. 查询引发异常“ORA-00932:不一致的数据类型:预期的数字有日期”

答案:C . 表达式 (sysdate-hiredate) 返回员工在公司工作的天数。

12. 以下哪项正确描述了 Oracle 中的 DUAL 表?

  1. DUAL表是Oracle数据库中的临时表
  2. DUAL 表仅包含一种称为 DUMMY 的字符类型列
  3. 无法删除 SYS 拥有的 DUAL 表
  4. 用户可以在自己的模式中创建名为 DUAL 的表

答案:B、C、D。Oracle 中的DUAL 表归SYS 所有,并且包含一个类型为VARCHAR2(1) 的DUMMY 列。

13. 确定以下查询返回的输出类型

SELECT sysdate - hiredate
FROM emp
WHERE empno=7369;
  1. 日期数据类型
  2. NUMBER 数据类型
  3. VARCHAR2 数据类型
  4. 查询引发错误,因为无法对日期列执行算术运算

答案:B . 两个日期之间的减法导致两个日期之间天数的数字差异

14. 哪些表达式不返回 NULL 值?

  1. SELECT ((10 + 20) * 50) + null from dual;
  2. SELECT 'this is a '||null||'test with nulls' from dual;
  3. SELECT null/0 from dual;
  4. SELECT null||'test'||null as “Test” from dual;

答案:B、D。任何带有 NULL 的算术运算都会导致 NULL。

15. 确定以下查询的输出

SELECT 'Tutorial''s Point compiles technical tutorials' FROM DUAL;
  1. Tutorial’s Point 编译技术教程
  2. Tutorial’s Point 编译技术教程
  3. 《教程》之点编译技术教程
  4. 引发异常“ORA-01756:引用的字符串未正确终止”

答案:B。

16. 检查如下所示的 TRAINING 表:

 Name                                      Null?    Type
 ----------------------------------------- -------- -------------

 TRAINING_ID                               NOT NULL NUMBER(5)
 TRAINING_LOCATION                                  NUMBER(7,2)
 START_DATE                                         DATE
 END_DATE                                           DATE


哪两条 SQL 会成功执行?
(选择两项)

  1. SELECT NVL (ADD_MONTHS (END_DATE,1),SYSDATE) FROM training;
  2. SELECT TO_DATE (NVL(SYSDATE-END_DATE,SYSDATE)) FROM training;
  3. SELECT NVL(MONTHS_BETWEEN(START_DATE,END_DATE),’In Progress’) FROM training;
  4. SELECT NVL(TO_CHAR(MONTHS_BETWEEN(START_DATE,END_DATE)),’In Progress’) FROM training;

答案:A、D。当为NULL 时使用NVL 函数为列提供替代值。

17. SELECT 语句中的列选择称为什么?

  1. 恢复
  2. 选择
  3. 投影
  4. 限制

答案:C.投影是在 SELECT 语句中仅选择所需列的能力。

18. SELECT 语句返回的行的限制是什么?

  1. 恢复
  2. 投影
  3. 限制
  4. 选择

答案:C。限制是通过放置某些条件来限制行数的能力。

19.关于下面给出的查询,下列哪项是正确的?

SELECT col1, col2 
FROM tab1
ORDER BY col1;
  1. COL1 列的所有行将按降序排序。
  2. COL1 列的所有行将按升序排序。
  3. 查询将给出错误,因为查询中没有 WHERE 子句。
  4. 查询将给出错误,因为 ORDER BY 子句应包括 SELECT 子句中的所有列。

答案:B . 默认情况下,ORDER BY 子句按升序对值进行排序。

20. 关于下面给出的 SQL 查询,下列哪项是正确的?

SELECT col1,col2
FROM tab1
WHERE col1 = 'A'
ORDER BY col2 DESC, col1;
  1. 它将显示 col1 值为 ‘A’ 的行,按 col1 降序排列,然后按降序排列 col2。
  2. ORDER BY 子句将不起作用,因为关键字 DESC 应始终写在 ORDER BY 子句的末尾,而不是在查询中给出的中间。
  3. 上面的查询将仅基于 col2 进行降序排序,并且将放弃在 ORDER BY 子句中使用 col1。
  4. 当 ORDER BY 子句的执行发生在 SELECT 语句中的列顺序时,它将显示 col1 值为 ‘A’ 的行,该行由 col1 排序,然后是 col2。

答案:C。由于 COL1 已经在查询中被过滤并固定为标量值,因此不会在 COL1 的基础上进行排序。

21. 下面给出的查询正确的是什么?

SELECT col1, col2
FROM  tab1
ORDER BY col1,col2
WHERE col2 = 'B';
  1. 它执行成功
  2. 它给出了所需的结果,COL2 值为“B”,但没有按列 COL1 和 COL2 排序,因为 ORDER BY 子句出现在 WHERE 子句之前。
  3. 它将显示具有 COL2 值的行,按 COL1、COL2 排序为“B”。
  4. 它抛出错误,因为 ORDER BY 子句不能写在 Oracle 中的 WHERE 子句之前。

答案:D . ORDER BY 子句必须出现在 SELECT 语句中的 WHERE 子句之后

22. SELECT 语句的哪两个子句对于选择和投影是必需的?

  1. 选择,从
  2. 订购方式,地点
  3. 选择,在哪里
  4. 选择、订购

答案:C。

23. 以下哪个 WHERE 子句不适合下面的 SELECT 查询?

SELECT ename, deptno, sal 
FROM emp;
  1. WHERE HIREDATE IN (’02-JUN-2004′);
  2. WHERE SAL IN (‘1000′,’4000′,’2000’);
  3. 工作地点(销售、文员);
  4. COMM 介于 0.1 和 0.5 之间;

答案:C.字符字面量必须用单引号括起来

24. 选择从 DEPT 表中提取包含字符文字“er”的 DNAME 值的 WHERE 子句。

  1. WHERE DNAME IN (‘%e%r’);
  2. WHERE DNAME LIKE ‘%er%’;
  3. ‘e’ 和 ‘r’ 之间的 DNAME;
  4. DNAME 包含 ‘e%r’ 的地方;

答案:B . LIKE 运算符用于在 SQL 查询中执行通配符搜索。

25. 以下哪两个条件是等价的?

  1. 哪里 comm 为空
  2. WHERE comm = NULL
  3. WHERE comm IN (NULL)
  4. WHERE NOT(comm 不为空)

答案:A、 D。NOT 运算符可用于否定其操作数的效果。因此 (COMM IS NULL) 等价于 (NOT (COMM IS NOT NULL))。

26. 下列哪些子句在 SQL 查询中是必需的?

  1. 选择,从
  2. 选择,从,哪里
  3. 选择,哪里
  4. 选择、地点、顺序

答:A. SELECT 和FROM 是SELECT 查询中的强制子句。

27. 以下哪三个 WHERE 子句条件彼此等效?

  1. 其中 SAL <=5000 和 SAL >=2000
  2. 哪里销售 (2000,3000,4000,5000)
  3. 2000 年和 5000 年之间的销售
  4. 其中 SAL > 1999 和 SAL < 5001

答案:A、C、D。可以使用 IN、BETWEEN 和关系运算符使条件等效

28. 对于以下查询,下列哪项是正确的?

SELECT empno, ename, job
FROM emp
WHERE ename like '_ith%';
  1. 它获取那些名字中出现“ith”的员工的员工 ID、姓名和工作。
  2. 它获取姓名以“ith”开头的员工的员工 ID、姓名和工作。
  3. 查询抛出错误,因为字符串匹配的两个表达式不能写在一起。
  4. 它获取那些姓名以任何字母数字字符开头、后跟“ith”以及“ith”之后的任何字母数字字符的员工的员工 ID、姓名和工作。

答案:D。

29. 以下哪一项用于结束 SQL 查询?

  1. ;
  2. .
  3. /

答案:B、D。分号 (;) 或反斜杠 (/) 用于终止 SQL* Plus 和 SQL Developer 中的查询。

30. 员工 JAMES 和 MILLER 想通过查询数据库来知道他们的部门 ID。以下哪个查询会给出所需的结果?

  1. SELECT ename, deptno FROM emp WHERE ename = 'JAMES';
  2. SELECT ename, deptno FROM emp WHERE ename = 'MILLER';
  3. SELECT ename, deptno FROM dept
  4. SELECT ename, deptno FROM emp WHERE ename = 'JAMES' OR ename = 'MILLER' 

答案:D.可以使用 OR 子句连接多个条件。如果两者之一为真,则查询执行成功。

31. 以下关于 WHERE 子句的说法错误的是?

  1. WHERE 可以比较列、文字、算术表达式或函数中的值。
  2. WHERE 子句包含列名
  3. 列别名可以在 WHERE 子句中使用。
  4. WHERE 子句不能包含值或常量的列表。

答案:C、D。

32. Oracle 中默认的日期格式是什么?

  1. DD-MON-YY
  2. DD-MON-YYYY
  3. DD-MM-RR
  4. DD-MON-RR

答案: D。DD-MON-RR 是 Oracle 中的默认日期格式。

33. 预测以下 SQL 查询的输出。

SELECT ename, deptno, sal, comm
FROM emp
WHERE job = 'SALES'
AND hiredate = ”01-JAN-97”;
  1. 它获取所有 SALES 员工的员工数据
  2. 它抛出错误“ORA-00904:“01-JAN-13”:标识符无效”
  3. 查询执行成功但没有返回结果
  4. 它获取在 1997 年 1 月 1 日雇用的所有 SALES 员工的数据

答案:B.日期文字必须用单引号括起来。

34. 您需要显示 EMPLOYEES 表中所有名字为“GARRY”的员工的姓名。以下哪个查询将满足要求?

  1. SELECT first_name FROM employees WHERE first_name LIKE 'GARRY%';
  2. SELECT first_name FROM employees WHERE first_name LIKE '%GARRY%';
  3. SELECT first_name FROM employees WHERE first_name LIKE 'GARRY';
  4. SELECT first_name FROM employees WHERE first_name LIKE '_ARRY%';

答案:C.如果搜索字符串的某些字符未知,则可以使用通配符。

35. 您需要显示所有在第二个职位的姓氏中包含字母“s”和部门 ID 为 100 的员工的员工 ID。以下哪个查询将获取所需的结果?

  1. SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '%s%';
  2. SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '%s_';
  3. SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '_s_%';
  4. SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '_s%';

答案:D . 通配符下划线 (_) 用于替换单个字符。

36. 以下查询的结果是什么?

SELECT first_name, last_name, dept_id 
FROM employees
WHERE hire_date LIKE '%98';
  1. 将显示所有在 1998 年加入的员工的名字、姓氏和部门 ID。
  2. 将显示所有在 2098 年加入的员工的名字、姓氏和部门 ID。
  3. 不会返回任何结果。
  4. 将显示在 1998 年 1 月 1 日至 1998 年 12 月 31 日之间加入 1998 年的所有员工的名字、姓氏和部门 ID。

答案: D。LIKE 运算符用于对字符和日期文字执行通配符搜索。

37. 以下哪一项用于根据值范围获取行?

  1. 联合所有
  2. 之间

答案:C。 BETWEEN 运算符用于根据值范围检索行。

38、需要显示工资在20000(含)和50000(含)之间的员工的员工ID。以下哪个查询将获取所需的结果?

  1. SELECT emp_id FROM employees WHERE salary >=20000 AND salary <=50000;
  2. SELECT emp_id FROM employees WHERE salary IN (20000, 50000);
  3. SELECT emp_id FROM employees WHERE salary >20000 AND salary <50000;
  4. SELECT emp_id FROM employees WHERE salary between 20000 AND 50000;

答案:A、D。对于更大范围的值,BETWEEN 和关系运算符最适合查询。不建议将 IN 运算符用于大范围的值。

39. 关于下面的查询,什么是正确的?

SELECT first_name, last_name 
FROM employees 
WHERE last_name BETWEEN 'B%' AND 'E%';
  1. 它将显示姓氏以字母 ‘B’ 到 ‘E’ 开头的所有员工,包括 B 和不包括 E。
  2. 它会抛出一个错误,因为 BETWEEN 只能用于数字而不是字符串。
  3. 它将显示所有姓氏以“B”开头并以“E”结尾的员工。
  4. 它将显示所有姓氏在起始字母范围内的员工为“B”和“E”,但不包括以“B”和“E”开头的姓名。

答案: A. BETWEEN 运算符也适用于字符值范围。

40. 下面提到的查询的结果是什么?

SELECT employee_id, last_name, first_name, salary, manager_id 
FROM employees 
WHERE manager_id IN (200,100,300);


ORDER BY manager_id ASC;

  1. 它将显示所有在经理之下的员工的 ID 范围从 100 到 300。
  2. 它将显示 ID 为 100、200 或 300 的经理下的所有员工。
  3. 它会抛出错误,因为经理 ID 应该放在引号中。
  4. 它将抛出错误,因为 WHERE 子句中 manager_id 的排序与 ORDER BY 子句冲突。

答案:B . IN 运算符可用于提供小而有限数量的范围。

41. 以下哪个条款定义了会员条件?

  1. 之间
  2. 一片空白
  3. 输入(不输入)

答案:D . IN 运算符定义了一个成员资格条件,该条件可以使用一系列值或子查询。

42. IN 运算符中可以使用以下哪些数据类型?

  1. VARCHAR2
  2. 数字
  3. 日期
  4. 全部

答案:D . IN 运算符适用于所有类型的值。

43. 您需要显示名字以“Bryan”或“Jason”开头的所有员工的列表。以下哪个查询将满足要求?

  1. SELECT emp_id, last_name, first_name FROM employees WHERE first_name LIKE 'Bryan%' OR first_name LIKE 'Jason%';
  2. SELECT emp_id, last_name, first_name FROM employees WHERE first_name BETWEEN 'Bryan' and 'Jason' ;
  3. SELECT emp_id, last_name, first_name FROM employees WHERE first_name IN ('Bryan', 'Jason');
  4. SELECT emp_id, last_name, first_name FROM employees WHERE first_name = 'Bryan' OR first_name = 'Jason'

答案:C、D。 IN 运算符检查定义为成员资格条件的任何值。

44. 您需要提取名称中包含字符串“_DXX”的部门的详细信息。可以在 SELECT 语句中使用以下哪个 WHERE 子句来获得所需的输出?

  1. WHERE dept_id LIKE ‘%_DXX%’ ESCAPE ‘_’
  2. WHERE dept_id LIKE ‘%\_DXX%’ ESCAPE ‘\’
  3. WHERE dept_id LIKE ‘%_D123%’ ESCAPE ‘%_’
  4. WHERE dept_id LIKE ‘%\_D123%’ ESCAPE ‘\_’

答案:B。

45. 关于 ORDER BY 子句的默认行为,哪项陈述是正确的?

  1. 在字符排序中,值区分大小写。
  2. 排序操作根本不考虑 NULL 值。
  3. 只有在 SELECT 列表中指定的那些列才能在 ORDER BY 子句中使用。
  4. 如果数值有小数位,则从最大值到最小值显示数值。

答案: A. ORDER BY 子句对字符值进行区分大小写的排序。

46. 您需要根据以下条件从 EMPLOYEES 表生成所有员工的报告: 1. 员工名字不应以“T”或“N”开头。2. Employee 的工资应该在 20000 以上。 3. Employee 应该是在 2010 年 1 月 1 日之后被录用的。哪个 WHERE 子句会给出要求的结果?

  1. WHERE first_name NOT LIKE ‘T%’ OR first_name NOT LIKE ‘N%’ AND 工资 > 20000 AND 雇佣日期 > ‘1-JAN-10’
  2. WHERE (first_name NOT LIKE ‘T%’ AND first_name NOT LIKE ‘N%’)OR 工资 > 20000 或租用日期 > ‘1-JAN-10’
  3. WHERE first_name NOT LIKE ‘T%’ AND first_name NOT LIKE ‘N%’ AND 工资 > 20000 AND 雇佣日期 > ‘1-JAN-10’
  4. WHERE (first_name NOT LIKE ‘%T%’ OR first_name NOT LIKE ‘%N%’) AND(salary > 20000 ANDhiring_date > ‘1-JAN-10’)

答案:C。

47. 使用 EMPLOYEES 表,您需要显示 2013 年 1 月 1 日之后雇用的所有员工的姓名,从新生开始。哪个查询会给出所需的结果?(选择所有适用的选项。)

  1. SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY 2 DESC;
  2. SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY first_name DESC;
  3. SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY 1 DESC;
  4. SELECT first_name, hire_date "START DATE" FROM employees WHERE hire_date > '01-JAN-13' ORDER BY "START DATE" DESC;

答案:A、D。

48. 使用 EMPLOYEES 表,您需要找出在 12 年 3 月 15 日至 13 年 10 月 15 日的时间间隔内在部门 100 和 101 中雇用的所有员工的姓名和工资。哪两个查询会给出所需的结果?(选择两项。)

  1. SELECT first_name, salary FROM employees WHERE dept_id IN (100,101) AND hire_date BETWEEN '15-MAR-12' AND '15-OCT-12';
  2. SELECT first_name, salary FROM employees WHERE dept_id = 100 OR dept_id =101 AND hire_date >='15-MAR-12' OR hire_date <='15-OCT-12';
  3. SELECT first_name, salary FROM employees WHERE (dept_id BETWEEN 100 AND 101) AND (hire_date IN ('15-MAR-12','15-OCT-12'));
  4. SELECT first_name, salary FROM employees WHERE (dept_id = 100 OR dept_id =101) AND (hire_date >='15-MAR-12' AND hire_date <='15-OCT-12');

答案:A、D。

49. 使用 EMPLOYEES 表,您发出以下查询以生成姓名、当前工资和评估后增加 25% 的工资。所有员工的加薪应在30000以上。

SELECT first_name, salary,
salary + (salary *0.25) "INCREASED_SALARY"
FROM employees
WHERE increased_salary >30000;

查询抛出错误 ORA-00904。错误的原因是什么?

  1. SELECT 语句中使用的表达式中缺少括号。
  2. 必须使用单引号来定义列别名。
  3. WHERE 子句中不能使用列别名。
  4. WHERE 子句中的列别名必须用双引号括起来。

答案:C。列别名不能在 WHERE 子句条件中使用,但可以在 SELECT 语句和 ORDER BY 子句中使用。

50. 您需要显示 EMPLOYEES 表中属于 Department id 100 且最低工资为 2000 或 4000 且没有 job_id 的员工姓名。您发出以下查询。

SELECT first_name, dept_id, salary
FROM employees
WHERE dept_id = 100 AND (salary = 2000 OR salary = 4000) 
AND job_id <> '';

关于上述查询,哪个说法是正确的?

  1. 它成功执行但不返回任何结果。
  2. 它成功执行并返回所需的结果。
  3. 它生成错误,因为为 job_id 指定的条件无效。
  4. 它生成错误,因为为工资列指定的条件无效。

答案: A.条件 (salary = 2000 OR salary = 4000) 的结果为 FALSE,因为员工不能同时持有多个工资。

51. 使用 Oracle 数据库内置的 SQL 函数可以执行哪三项任务?(选择三个。)

  1. 以非默认格式显示日期
  2. 查找表达式中的字符数
  3. 用指定的字符串替换文本表达式中的字符串
  4. 在输出中将两列以上的列或表达式合并为一列

答案:A、B、C。使用格式化函数(TO_CHAR、TO_DATE)和字符函数(LENGTH、REPLACE)来实现目标。

52. 您需要生成一个报表,显示 EMPLOYEES 表中工资至少比值 20000 多 25% 的所有员工的 ID。详细信息应按工资的降序显示。您发出以下查询。

SELECT emp_id
FROM employees
WHERE salary>=20000*0.25 
ORDER BY salary*0.25 DESC;

关于上述查询,哪个说法是正确的?

  1. 它执行并产生所需的结果。
  2. 它会产生错误,因为不能在 ORDER BY 子句中使用表达式。
  3. 它会产生错误,因为 DESC 选项不能与 ORDER BY 子句中的表达式一起使用。
  4. 它会产生错误,因为 ORDER BY 子句中的表达式也应该在 SELECT 子句中指定。

答案: A. ORDER BY 子句可以包含列表达式。

53.检查TRAININGS表的结构和数据:

 Name                                      Null?    Type
 ----------------------------------------- -------- -------------

 TRAINING_ID                               NOT NULL NUMBER(5)
 TRAINING_LOCATION                                  NUMBER(7,2)
 START_DATE                                         DATE
 END_DATE                                           DATE
TRAINING_ID      START_DATE                      TRAINING_COST
------ ---------------- -------------------------------------------------
11 	                 01-JAN-10 			1000
22 		  01-FEB-10 			2000
33 		  01-MAR-10 			3000

日期以默认日期格式 dd-mon-rr 存储在 TRAININGS 表中。哪三个 SQL 语句会成功执行?(选择三个。)

  1. SELECT start_date + '10' FROM trainings;
  2. SELECT * FROM trainings WHERE start_date = '01-01-10';
  3. SELECT training_cost FROM trainings WHERE training_id > '11';
  4. SELECT * FROM trainings WHERE start_date ='01-JANUARY-10';

答案:A、C、D。

54. 对于以下查询,以下哪些陈述是正确的?

SELECT emp_id, first_name 
FROM employees
ORDER BY dept_id;
  1. ORDER BY 子句应仅包含 SELECT 语句中的那些列。
  2. 上述查询将按降序对结果集进行排序。
  3. ORDER BY 子句可以包含相关表中的任何列,不一定是 SELECT 语句中的列。
  4. 它在执行时抛出错误。

答案:C . ORDER BY 子句可以使用列对列列表中未选中但包含在 FROM 子句中使用的表中的数据进行排序。

55. 下面的查询演示了 ORDER BY 子句的哪个特性?

SELECT emp_id, first_name “EmpName”
FROM employees
ORDER BY "EmpName";
  1. ORDER BY 子句应仅包含 SELECT 语句中的那些列。
  2. 上述查询将按员工名字的降序对结果集进行排序。
  3. ORDER BY 子句适用于列别名。
  4. SELECT 查询在执行时抛出错误,因为在 ORDER BY 子句中不能使用列别名。

答案:C . ORDER BY 子句与 SELECT 语句中使用的列别名一起工作正常。

56. 下面给出的查询正确的是什么?

SELECT last_name, job_id, department_id, hire_date 
FROM employees
ORDER BY 2;
  1. 它根据 JOB_ID 成功执行对查询结果的排序。
  2. ORDER BY 子句不能包含数字。
  3. ORDER BY 子句将不起作用,因为在 ORDER BY 子句中没有使用 SELECT 语句中的任何列。
  4. 查询在执行时抛出错误。

答案: A.列的数字位置可以在 ORDER BY 子句中使用。

57. 您需要列出不同工作的员工详细信息,但一次只能列出一项。

SELECT emp_id, first_name, last_name FROM employees WHERE job_id....;

以下哪一项是在 SQL* Plus 中实现相同目标的更简单方法?

  1. 一次替换每个作业 ID
  2. 使用 * 列出所有员工的详细信息
  3. 每次执行查询时使用 &JOB 提示用户输入
  4. 声明会话变量以替换查询中的作业 ID 值

答案:C。 &X 表示法拖曳查询执行并在每次执行查询时提示用户输入。

58. 下列关于 SQL 中的替换变量的说法正确的是?

  1. 可以使用替换变量对不同的值执行相同的查询。
  2. 使用替换变量,每次都需要更改 WHERE 子句。
  3. Oracle 不支持替换变量。
  4. 存在一个限制,即在执行查询期间每次都应该在替换变量中输入一个值。

答案:A。

59. 下列哪种数据类型被分配给 Substitution 变量?

  1. VARCHAR2
  2. 日期
  3. 无数据类型
  4. 数字

答案:C.替换变量没有自己的数据类型,但符合使用它们的列的数据类型。

60.下列关于替代变量的说法正确的是?

  1. 在变量中输入的值保持不变,并且用户在第一次执行查询后不能更改这些值。
  2. 查询执行一次后,该值存储在变量中。
  3. 替换变量仅支持 NUMBERS。
  4. 存储在替换变量中的值(使用单个&符号)用于第一次执行并被丢弃。

答案:D。

61. 以下哪一项是 SQL* Plus 中替换变量的正确语法?

  1. :var
  2. $var
  3. &var
  4. &&var

答案:C、D。

62. 以下哪个替换变量会取一次输入的值,然后在剩余的会话中保留它?

  1. &&var
  2. &var
  3. :var
  4. ::无功

答案: A.带有双与号的替代变量重复使用用户提供的值。

63.关于替代变量,下列哪项是正确的?

  1. 只能输入 NUMBERS 作为值。
  2. 只能输入字符串作为值。
  3. 数字和字符都可以作为值输入。
  4. 以上都不是。

答案:C。

64. 下面给出的查询正确的是什么?

SELECT first_name, last_name, employee_id, salary 
FROM employees 
WHERE employee_id = &eid
  1. 它抛出错误“ORA-00904:“&eid”:无效标识符”
  2. 它执行成功。
  3. WHERE 子句不能有替换变量。
  4. 该查询提示为变量 &eid 输入一个值,并使用有效的 employee_id 值成功执行。

答案:B、D。

65. 选择下面给出的查询的正确陈述。

SELECT first_name, last_name, &&prompt_col 
FROM employees
ORDER BY &&promp_col;
  1. 由于不允许使用替换变量 prompt_col,它会引发错误。
  2. 它执行成功,但结果集未排序。
  3. 它成功执行,但忽略了在 SELECT 语句中输入的变量值。
  4. 它成功执行并且替换变量的值在整个会话期间保持不变。

答案:D . SQL 查询的所有子句都可以使用替换变量。

66. 以下哪个命令用于在 SQL* Plus 中创建替换变量并为其赋值?

  1. &var
  2. &&var
  3. 定义

答案:D.在 SQL* Plus 中使用 DEFINE 命令在会话中声明替换变量。

67. SQL* Plus 中以下活动的结果是什么?

DEFINE eid = 117 

SELECT first_name, last_name, employee_id, salary 
FROM employees 
WHERE employee_id = &eid
  1. SELECT 查询抛出错误,因为无法在会话中定义替换变量。
  2. 它提示用户输入变量 &eid 的值。
  3. 它成功执行,员工 ID 替换为 117。
  4. 它忽略 DEFINE 命令,因为声明的替换变量没有与号 (&) 符号。

答案:C。

68、删除DEFINE命令设置的替换变量值的命令是什么?

  1. 取消定义
  2. 出发
  3. 删除
  4. 清除

答案: A.使用 UNDEFINE 命令从会话中删除替换变量

69. 以下哪个命令用于检查SQL 查询执行前后的替换变量值?

  1. 定义
  2. 取消定义
  3. 显示变量
  4. 核实

答案:D.在 SQL*Plus 和 SQL Developer 中使用 VERIFY 命令检查使用替换变量的值的替换。

70. 以下哪些是 WHERE 子句的有效运算符?

  1. >=
  2. 一片空白
  3. !=
  4. 就好像

答案:A、B、C。

71. 评估以下查询:

SELECT ename || q'{'s salary is }' || sal
AS "Salary"
FROM emp;


执行上述查询时会发生什么?

  1. 给出错误,因为大括号不能与 [q] 运算符一起使用
  2. 由于数据类型不匹配而出错
  3. 执行成功并在每个员工姓名的末尾添加一个撇号 (‘s)
  4. 执行成功并在员工姓名后附加文字“{‘s start date was }”

答案:C。

72. 以下哪个 WHERE 子句谓词将正确列出部门 20 的员工?

  1. 哪里 deptno 是 20
  2. 哪里部门 20
  3. 哪里 deptno=20
  4. WHERE 20=deptno

答案:C、D。相等运算符 (=) 用于比较条件中的操作数是否相等。

73. 编写一个 SELECT 查询以列出工资大于 1000 的员工。

  1. SELECT ename, sal FROM emp WHERE sal GREATER THAN 1000 
  2. SELECT ename, sal FROm emp WHERE sal > 1000
  3. SELECT ename, sal FROM emp WHERE sal >= 1000
  4. SELECT ename, sal FROM emp WHERE sal MORE THAN 1000

答案:B . 大于运算符 (>) 用于比较条件中的操作数。

74. 在 SQL* Plus 中执行以下查询时会发生什么?

SELECT ename, sal, deptno
FROM emp
WHERE sal/10 > deptno*10;
  1. 执行成功并列出第10部分工资大于其部门编号10倍的员工
  2. 引发错误,因为表达式必须用括号括起来
  3. 引发错误,因为 WHERE 子句无法计算表达式
  4. 引发错误,因为 WHERE 子句不能使用文字

答案: A. WHERE 子句可以包含表达式。

75.确定下面SELECT语句中的错误

SELECT ename, deptno, sal
FROM emp
WHERE job=CLERK;
  1. WHERE 子句不能引用列 JOB,因为它没有出现在 SELECT 列列表中
  2. 字符文字 CLERK 必须用单引号括起来
  3. 字符文字 CLERK 必须括在括号内
  4. 查询中没有错误

答案:B.字符字面量必须用单引号括起来

76. 解释以下 SQL 查询的输出

SELECT ename, deptno, sal
FROM emp
WHERE sysdate-hiredate > 100;
  1. 该查询列出了雇用日期比当前日期早至少 100 天的员工
  2. 查询列出在公司工作超过 100 天的员工
  3. 该查询列出了当年雇用 100 天之后的员工
  4. 查询列出在公司工作时间少于 100 天的员工

答案:A、 B。WHERE 子句中可以使用日期表达式

77. 以下哪个查询将显示 1982 年 12 月 31 日之后雇用的员工?

  1. SELECT ename, deptno FROM emp WHERE hiredate > '31-DEC-1982';
  2. SELECT ename, deptno FROM emp WHERE hiredate > to_date('31-DEC-1982','DD-MM-YYYY');
  3. SELECT ename, deptno FROM emp WHERE hiredate > to_char('31-DEC-1982','DD-MM-YYYY');
  4. SELECT ename, deptno FROM emp WHERE hiredate > 31-DEC-1982;

答案:A、B。日期文字必须用单引号括起来。

78. 以下哪项 WHERE 条件将列出当前日期雇用的员工?

  1. WHERE sysdate-hiredate=0
  2. WHERE sysdate=hiredate
  3. WHERE sysdate-hiredate<1
  4. WHERE to_date (sysdate,’DD-MON-YYYY’) = to_date (hiredate=’DD-MON-YYYY’)

答案:C、D。条件 SYSDATE=HIREDATE 将不起作用,因为 SYSDATE 包含动态时间戳组件,而hiredate 是数据库中的静态值。

79. 以下哪些是可以在 WHERE 子句中使用的日期文字的有效格式?

  1. 95 年 3 月 24 日
  2. 02-12-1983
  3. 2001 年 6 月 19 日
  4. 31.04.2010

答案:A、C。日期文字的默认格式是 DD-MON-RR。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁