限制和排序数据问题
限制和排序数据问题
1. 以下哪个子句用于限制从 SELECT 查询中检索的行数?
- 限制
- 在哪里
- 和
- 从
答案:B . WHERE 子句用于限制从 SELECT 查询返回的行数。
2. 选择可以在 SELECT 查询的 WHERE 子句中比较其值的数据库元素。
- 柱子
- 顺序
- 程序
- 文字
答案:A、 D。WHERE 子句可用于比较来自列、文字、算术函数和函数的值。
3. SELECT 查询的 WHERE 子句谓词中未包含哪些元素?
- 比较运算符
- 比较条件
- 列名
- 表名
答案:D . WHERE 子句谓词中不需要表名。
4. WHERE 子句条件求值后不能返回下列哪些值?
- 未知
- 真的
- 错误的
- 无效的
答案: A.如果 WHERE 子句中条件的结果未知,则返回 NULL。在所有其他情况下,返回 TRUE 或 FALSE。
5. SELECT 查询中必须出现的 WHERE 子句的最少数量是多少?
- 1
- 2
- 0
- 3
答案: C。WHERE 子句是SELECT 查询中的一个可选子句,仅用于限制行数。
6. SELECT 查询中最多可以包含多少个 WHERE 子句?
- 1
- 2
- 0
- 3
答: A. WHERE 子句是 SELECT 查询中的一个可选子句,它只能使用一次以限制行数。
7. 下列关于 WHERE 子句的说法正确的是?
- 列别名可用于 WHERE 子句中以引用列
- 比较运算符是 WHERE 子句条件中的可选元素
- 函数可以用作 WHERE 子句中的操作数
- SELECT 查询中可以有多个 WHERE 子句
答案:C . WHERE 子句必须有比较运算符来评估条件。它可以使用函数作为操作数之一。SELECT 查询中只允许一个 WHERE 子句。
8. 编写一个 SELECT 查询以从 EMP 表中列出唯一的部门?
-
SELECT deptno FROM emp;
-
SELECT DISTINCT deptno FROM emp;
-
SELECT DISTINCT (deptno) FROM emp;
-
SELECT empno, DISTINCT deptno FROM emp;
答案:B & C。关键字 DISTINCT 用于从 SELECT 查询中过滤掉重复的行。
9. date 和timestamp 列允许进行以下哪些操作?
- 分配
- 添加
- 减法
- 级联
答案:B、C 和 D。加法、减法和串联是允许对日期和时间戳列进行的操作。
10. 以下运算符中,哪一个具有最高优先级?
- 分配 (/)
- 乘法 (*)
- 括号 ( () )
- 减法
答案:C.括号内的表达式具有最高优先级。
11. 解释以下 SELECT 查询返回的输出
SELECT ename, (sysdate - hiredate) FROM emp;
- 本年的天数
- 一年中雇用员工的天数
- 员工在公司度过的天数
- 查询引发异常“ORA-00932:不一致的数据类型:预期的数字有日期”
答案:C . 表达式 (sysdate-hiredate) 返回员工在公司工作的天数。
12. 以下哪项正确描述了 Oracle 中的 DUAL 表?
- DUAL表是Oracle数据库中的临时表
- DUAL 表仅包含一种称为 DUMMY 的字符类型列
- 无法删除 SYS 拥有的 DUAL 表
- 用户可以在自己的模式中创建名为 DUAL 的表
答案:B、C、D。Oracle 中的DUAL 表归SYS 所有,并且包含一个类型为VARCHAR2(1) 的DUMMY 列。
13. 确定以下查询返回的输出类型
SELECT sysdate - hiredate FROM emp WHERE empno=7369;
- 日期数据类型
- NUMBER 数据类型
- VARCHAR2 数据类型
- 查询引发错误,因为无法对日期列执行算术运算
答案:B . 两个日期之间的减法导致两个日期之间天数的数字差异
14. 哪些表达式不返回 NULL 值?
-
SELECT ((10 + 20) * 50) + null from dual;
-
SELECT 'this is a '||null||'test with nulls' from dual;
-
SELECT null/0 from dual;
-
SELECT null||'test'||null as “Test” from dual;
答案:B、D。任何带有 NULL 的算术运算都会导致 NULL。
15. 确定以下查询的输出
SELECT 'Tutorial''s Point compiles technical tutorials' FROM DUAL;
- Tutorial’s Point 编译技术教程
- Tutorial’s Point 编译技术教程
- 《教程》之点编译技术教程
- 引发异常“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 会成功执行?(选择两项)
-
SELECT NVL (ADD_MONTHS (END_DATE,1),SYSDATE) FROM training;
-
SELECT TO_DATE (NVL(SYSDATE-END_DATE,SYSDATE)) FROM training;
-
SELECT NVL(MONTHS_BETWEEN(START_DATE,END_DATE),’In Progress’) FROM training;
-
SELECT NVL(TO_CHAR(MONTHS_BETWEEN(START_DATE,END_DATE)),’In Progress’) FROM training;
答案:A、D。当为NULL 时,使用NVL 函数为列提供替代值。
17. SELECT 语句中的列选择称为什么?
- 恢复
- 选择
- 投影
- 限制
答案:C.投影是在 SELECT 语句中仅选择所需列的能力。
18. SELECT 语句返回的行的限制是什么?
- 恢复
- 投影
- 限制
- 选择
答案:C。限制是通过放置某些条件来限制行数的能力。
19.关于下面给出的查询,下列哪项是正确的?
SELECT col1, col2 FROM tab1 ORDER BY col1;
- COL1 列的所有行将按降序排序。
- COL1 列的所有行将按升序排序。
- 查询将给出错误,因为查询中没有 WHERE 子句。
- 查询将给出错误,因为 ORDER BY 子句应包括 SELECT 子句中的所有列。
答案:B . 默认情况下,ORDER BY 子句按升序对值进行排序。
20. 关于下面给出的 SQL 查询,下列哪项是正确的?
SELECT col1,col2 FROM tab1 WHERE col1 = 'A' ORDER BY col2 DESC, col1;
- 它将显示 col1 值为 ‘A’ 的行,按 col1 降序排列,然后按降序排列 col2。
- ORDER BY 子句将不起作用,因为关键字 DESC 应始终写在 ORDER BY 子句的末尾,而不是在查询中给出的中间。
- 上面的查询将仅基于 col2 进行降序排序,并且将放弃在 ORDER BY 子句中使用 col1。
- 当 ORDER BY 子句的执行发生在 SELECT 语句中的列顺序时,它将显示 col1 值为 ‘A’ 的行,该行由 col1 排序,然后是 col2。
答案:C。由于 COL1 已经在查询中被过滤并固定为标量值,因此不会在 COL1 的基础上进行排序。
21. 下面给出的查询正确的是什么?
SELECT col1, col2 FROM tab1 ORDER BY col1,col2 WHERE col2 = 'B';
- 它执行成功
- 它给出了所需的结果,COL2 值为“B”,但没有按列 COL1 和 COL2 排序,因为 ORDER BY 子句出现在 WHERE 子句之前。
- 它将显示具有 COL2 值的行,按 COL1、COL2 排序为“B”。
- 它抛出错误,因为 ORDER BY 子句不能写在 Oracle 中的 WHERE 子句之前。
答案:D . ORDER BY 子句必须出现在 SELECT 语句中的 WHERE 子句之后
22. SELECT 语句的哪两个子句对于选择和投影是必需的?
- 选择,从
- 订购方式,地点
- 选择,在哪里
- 选择、订购
答案:C。
23. 以下哪个 WHERE 子句不适合下面的 SELECT 查询?
SELECT ename, deptno, sal FROM emp;
- WHERE HIREDATE IN (’02-JUN-2004′);
- WHERE SAL IN (‘1000′,’4000′,’2000’);
- 工作地点(销售、文员);
- COMM 介于 0.1 和 0.5 之间;
答案:C.字符字面量必须用单引号括起来
24. 选择从 DEPT 表中提取包含字符文字“er”的 DNAME 值的 WHERE 子句。
- WHERE DNAME IN (‘%e%r’);
- WHERE DNAME LIKE ‘%er%’;
- ‘e’ 和 ‘r’ 之间的 DNAME;
- DNAME 包含 ‘e%r’ 的地方;
答案:B . LIKE 运算符用于在 SQL 查询中执行通配符搜索。
25. 以下哪两个条件是等价的?
- 哪里 comm 为空
- WHERE comm = NULL
- WHERE comm IN (NULL)
- WHERE NOT(comm 不为空)
答案:A、 D。NOT 运算符可用于否定其操作数的效果。因此 (COMM IS NULL) 等价于 (NOT (COMM IS NOT NULL))。
26. 下列哪些子句在 SQL 查询中是必需的?
- 选择,从
- 选择,从,哪里
- 选择,哪里
- 选择、地点、顺序
答:A. SELECT 和FROM 是SELECT 查询中的强制子句。
27. 以下哪三个 WHERE 子句条件彼此等效?
- 其中 SAL <=5000 和 SAL >=2000
- 哪里销售 (2000,3000,4000,5000)
- 2000 年和 5000 年之间的销售
- 其中 SAL > 1999 和 SAL < 5001
答案:A、C、D。可以使用 IN、BETWEEN 和关系运算符使条件等效
28. 对于以下查询,下列哪项是正确的?
SELECT empno, ename, job FROM emp WHERE ename like '_ith%';
- 它获取那些名字中出现“ith”的员工的员工 ID、姓名和工作。
- 它获取姓名以“ith”开头的员工的员工 ID、姓名和工作。
- 查询抛出错误,因为字符串匹配的两个表达式不能写在一起。
- 它获取那些姓名以任何字母数字字符开头、后跟“ith”以及“ith”之后的任何字母数字字符的员工的员工 ID、姓名和工作。
答案:D。
29. 以下哪一项用于结束 SQL 查询?
- :
- ;
- .
- /
答案:B、D。分号 (;) 或反斜杠 (/) 用于终止 SQL* Plus 和 SQL Developer 中的查询。
30. 员工 JAMES 和 MILLER 想通过查询数据库来知道他们的部门 ID。以下哪个查询会给出所需的结果?
-
SELECT ename, deptno FROM emp WHERE ename = 'JAMES';
-
SELECT ename, deptno FROM emp WHERE ename = 'MILLER';
-
SELECT ename, deptno FROM dept
-
SELECT ename, deptno FROM emp WHERE ename = 'JAMES' OR ename = 'MILLER'
答案:D.可以使用 OR 子句连接多个条件。如果两者之一为真,则查询执行成功。
31. 以下关于 WHERE 子句的说法错误的是?
- WHERE 可以比较列、文字、算术表达式或函数中的值。
- WHERE 子句包含列名
- 列别名可以在 WHERE 子句中使用。
- WHERE 子句不能包含值或常量的列表。
答案:C、D。
32. Oracle 中默认的日期格式是什么?
- DD-MON-YY
- DD-MON-YYYY
- DD-MM-RR
- 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”;
- 它获取所有 SALES 员工的员工数据
- 它抛出错误“ORA-00904:“01-JAN-13”:标识符无效”
- 查询执行成功但没有返回结果
- 它获取在 1997 年 1 月 1 日雇用的所有 SALES 员工的数据
答案:B.日期文字必须用单引号括起来。
34. 您需要显示 EMPLOYEES 表中所有名字为“GARRY”的员工的姓名。以下哪个查询将满足要求?
-
SELECT first_name FROM employees WHERE first_name LIKE 'GARRY%';
-
SELECT first_name FROM employees WHERE first_name LIKE '%GARRY%';
-
SELECT first_name FROM employees WHERE first_name LIKE 'GARRY';
-
SELECT first_name FROM employees WHERE first_name LIKE '_ARRY%';
答案:C.如果搜索字符串的某些字符未知,则可以使用通配符。
35. 您需要显示所有在第二个职位的姓氏中包含字母“s”和部门 ID 为 100 的员工的员工 ID。以下哪个查询将获取所需的结果?
-
SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '%s%';
-
SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '%s_';
-
SELECT emp_id FROM employees WHERE dept_id = 100 AND last_name LIKE '_s_%';
-
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';
- 将显示所有在 1998 年加入的员工的名字、姓氏和部门 ID。
- 将显示所有在 2098 年加入的员工的名字、姓氏和部门 ID。
- 不会返回任何结果。
- 将显示在 1998 年 1 月 1 日至 1998 年 12 月 31 日之间加入 1998 年的所有员工的名字、姓氏和部门 ID。
答案: D。LIKE 运算符用于对字符和日期文字执行通配符搜索。
37. 以下哪一项用于根据值范围获取行?
- 联合所有
- 在
- 之间
- 像
答案:C。 BETWEEN 运算符用于根据值范围检索行。
38、需要显示工资在20000(含)和50000(含)之间的员工的员工ID。以下哪个查询将获取所需的结果?
-
SELECT emp_id FROM employees WHERE salary >=20000 AND salary <=50000;
-
SELECT emp_id FROM employees WHERE salary IN (20000, 50000);
-
SELECT emp_id FROM employees WHERE salary >20000 AND salary <50000;
-
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%';
- 它将显示姓氏以字母 ‘B’ 到 ‘E’ 开头的所有员工,包括 B 和不包括 E。
- 它会抛出一个错误,因为 BETWEEN 只能用于数字而不是字符串。
- 它将显示所有姓氏以“B”开头并以“E”结尾的员工。
- 它将显示所有姓氏在起始字母范围内的员工为“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;
- 它将显示所有在经理之下的员工的 ID 范围从 100 到 300。
- 它将显示 ID 为 100、200 或 300 的经理下的所有员工。
- 它会抛出错误,因为经理 ID 应该放在引号中。
- 它将抛出错误,因为 WHERE 子句中 manager_id 的排序与 ORDER BY 子句冲突。
答案:B . IN 运算符可用于提供小而有限数量的范围。
41. 以下哪个条款定义了会员条件?
- 之间
- 像
- 一片空白
- 输入(不输入)
答案:D . IN 运算符定义了一个成员资格条件,该条件可以使用一系列值或子查询。
42. IN 运算符中可以使用以下哪些数据类型?
- VARCHAR2
- 数字
- 日期
- 全部
答案:D . IN 运算符适用于所有类型的值。
43. 您需要显示名字以“Bryan”或“Jason”开头的所有员工的列表。以下哪个查询将满足要求?
-
SELECT emp_id, last_name, first_name FROM employees WHERE first_name LIKE 'Bryan%' OR first_name LIKE 'Jason%';
-
SELECT emp_id, last_name, first_name FROM employees WHERE first_name BETWEEN 'Bryan' and 'Jason' ;
-
SELECT emp_id, last_name, first_name FROM employees WHERE first_name IN ('Bryan', 'Jason');
-
SELECT emp_id, last_name, first_name FROM employees WHERE first_name = 'Bryan' OR first_name = 'Jason'
答案:C、D。 IN 运算符检查定义为成员资格条件的任何值。
44. 您需要提取名称中包含字符串“_DXX”的部门的详细信息。可以在 SELECT 语句中使用以下哪个 WHERE 子句来获得所需的输出?
- WHERE dept_id LIKE ‘%_DXX%’ ESCAPE ‘_’
- WHERE dept_id LIKE ‘%\_DXX%’ ESCAPE ‘\’
- WHERE dept_id LIKE ‘%_D123%’ ESCAPE ‘%_’
- WHERE dept_id LIKE ‘%\_D123%’ ESCAPE ‘\_’
答案:B。
45. 关于 ORDER BY 子句的默认行为,哪项陈述是正确的?
- 在字符排序中,值区分大小写。
- 排序操作根本不考虑 NULL 值。
- 只有在 SELECT 列表中指定的那些列才能在 ORDER BY 子句中使用。
- 如果数值有小数位,则从最大值到最小值显示数值。
答案: A. ORDER BY 子句对字符值进行区分大小写的排序。
46. 您需要根据以下条件从 EMPLOYEES 表生成所有员工的报告: 1. 员工名字不应以“T”或“N”开头。2. Employee 的工资应该在 20000 以上。 3. Employee 应该是在 2010 年 1 月 1 日之后被录用的。哪个 WHERE 子句会给出要求的结果?
- WHERE first_name NOT LIKE ‘T%’ OR first_name NOT LIKE ‘N%’ AND 工资 > 20000 AND 雇佣日期 > ‘1-JAN-10’
- WHERE (first_name NOT LIKE ‘T%’ AND first_name NOT LIKE ‘N%’)OR 工资 > 20000 或租用日期 > ‘1-JAN-10’
- WHERE first_name NOT LIKE ‘T%’ AND first_name NOT LIKE ‘N%’ AND 工资 > 20000 AND 雇佣日期 > ‘1-JAN-10’
- 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 日之后雇用的所有员工的姓名,从新生开始。哪个查询会给出所需的结果?(选择所有适用的选项。)
-
SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY 2 DESC;
-
SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY first_name DESC;
-
SELECT first_name, hire_date FROM employees WHERE hire_date > '01-JAN-13' ORDER BY 1 DESC;
-
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 中雇用的所有员工的姓名和工资。哪两个查询会给出所需的结果?(选择两项。)
-
SELECT first_name, salary FROM employees WHERE dept_id IN (100,101) AND hire_date BETWEEN '15-MAR-12' AND '15-OCT-12';
-
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';
-
SELECT first_name, salary FROM employees WHERE (dept_id BETWEEN 100 AND 101) AND (hire_date IN ('15-MAR-12','15-OCT-12'));
-
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。错误的原因是什么?
- SELECT 语句中使用的表达式中缺少括号。
- 必须使用单引号来定义列别名。
- WHERE 子句中不能使用列别名。
- 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 <> '';
关于上述查询,哪个说法是正确的?
- 它成功执行但不返回任何结果。
- 它成功执行并返回所需的结果。
- 它生成错误,因为为 job_id 指定的条件无效。
- 它生成错误,因为为工资列指定的条件无效。
答案: A.条件 (salary = 2000 OR salary = 4000) 的结果为 FALSE,因为员工不能同时持有多个工资。
51. 使用 Oracle 数据库内置的 SQL 函数可以执行哪三项任务?(选择三个。)
- 以非默认格式显示日期
- 查找表达式中的字符数
- 用指定的字符串替换文本表达式中的字符串
- 在输出中将两列以上的列或表达式合并为一列
答案: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;
关于上述查询,哪个说法是正确的?
- 它执行并产生所需的结果。
- 它会产生错误,因为不能在 ORDER BY 子句中使用表达式。
- 它会产生错误,因为 DESC 选项不能与 ORDER BY 子句中的表达式一起使用。
- 它会产生错误,因为 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 语句会成功执行?(选择三个。)
-
SELECT start_date + '10' FROM trainings;
-
SELECT * FROM trainings WHERE start_date = '01-01-10';
-
SELECT training_cost FROM trainings WHERE training_id > '11';
-
SELECT * FROM trainings WHERE start_date ='01-JANUARY-10';
答案:A、C、D。
54. 对于以下查询,以下哪些陈述是正确的?
SELECT emp_id, first_name FROM employees ORDER BY dept_id;
- ORDER BY 子句应仅包含 SELECT 语句中的那些列。
- 上述查询将按降序对结果集进行排序。
- ORDER BY 子句可以包含相关表中的任何列,不一定是 SELECT 语句中的列。
- 它在执行时抛出错误。
答案:C . ORDER BY 子句可以使用列对列列表中未选中但包含在 FROM 子句中使用的表中的数据进行排序。
55. 下面的查询演示了 ORDER BY 子句的哪个特性?
SELECT emp_id, first_name “EmpName” FROM employees ORDER BY "EmpName";
- ORDER BY 子句应仅包含 SELECT 语句中的那些列。
- 上述查询将按员工名字的降序对结果集进行排序。
- ORDER BY 子句适用于列别名。
- SELECT 查询在执行时抛出错误,因为在 ORDER BY 子句中不能使用列别名。
答案:C . ORDER BY 子句与 SELECT 语句中使用的列别名一起工作正常。
56. 下面给出的查询正确的是什么?
SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY 2;
- 它根据 JOB_ID 成功执行对查询结果的排序。
- ORDER BY 子句不能包含数字。
- ORDER BY 子句将不起作用,因为在 ORDER BY 子句中没有使用 SELECT 语句中的任何列。
- 查询在执行时抛出错误。
答案: A.列的数字位置可以在 ORDER BY 子句中使用。
57. 您需要列出不同工作的员工详细信息,但一次只能列出一项。
SELECT emp_id, first_name, last_name FROM employees WHERE job_id....;
以下哪一项是在 SQL* Plus 中实现相同目标的更简单方法?
- 一次替换每个作业 ID
- 使用 * 列出所有员工的详细信息
- 每次执行查询时使用 &JOB 提示用户输入
- 声明会话变量以替换查询中的作业 ID 值
答案:C。 &X 表示法拖曳查询执行并在每次执行查询时提示用户输入。
58. 下列关于 SQL 中的替换变量的说法正确的是?
- 可以使用替换变量对不同的值执行相同的查询。
- 使用替换变量,每次都需要更改 WHERE 子句。
- Oracle 不支持替换变量。
- 存在一个限制,即在执行查询期间每次都应该在替换变量中输入一个值。
答案:A。
59. 下列哪种数据类型被分配给 Substitution 变量?
- VARCHAR2
- 日期
- 无数据类型
- 数字
答案:C.替换变量没有自己的数据类型,但符合使用它们的列的数据类型。
60.下列关于替代变量的说法正确的是?
- 在变量中输入的值保持不变,并且用户在第一次执行查询后不能更改这些值。
- 查询执行一次后,该值存储在变量中。
- 替换变量仅支持 NUMBERS。
- 存储在替换变量中的值(使用单个&符号)用于第一次执行并被丢弃。
答案:D。
61. 以下哪一项是 SQL* Plus 中替换变量的正确语法?
- :var
- $var
- &var
- &&var
答案:C、D。
62. 以下哪个替换变量会取一次输入的值,然后在剩余的会话中保留它?
- &&var
- &var
- :var
- ::无功
答案: A.带有双与号的替代变量重复使用用户提供的值。
63.关于替代变量,下列哪项是正确的?
- 只能输入 NUMBERS 作为值。
- 只能输入字符串作为值。
- 数字和字符都可以作为值输入。
- 以上都不是。
答案:C。
64. 下面给出的查询正确的是什么?
SELECT first_name, last_name, employee_id, salary FROM employees WHERE employee_id = &eid
- 它抛出错误“ORA-00904:“&eid”:无效标识符”
- 它执行成功。
- WHERE 子句不能有替换变量。
- 该查询提示为变量 &eid 输入一个值,并使用有效的 employee_id 值成功执行。
答案:B、D。
65. 选择下面给出的查询的正确陈述。
SELECT first_name, last_name, &&prompt_col FROM employees ORDER BY &&promp_col;
- 由于不允许使用替换变量 prompt_col,它会引发错误。
- 它执行成功,但结果集未排序。
- 它成功执行,但忽略了在 SELECT 语句中输入的变量值。
- 它成功执行并且替换变量的值在整个会话期间保持不变。
答案:D . SQL 查询的所有子句都可以使用替换变量。
66. 以下哪个命令用于在 SQL* Plus 中创建替换变量并为其赋值?
- &var
- &&var
- 放
- 定义
答案:D.在 SQL* Plus 中使用 DEFINE 命令在会话中声明替换变量。
67. SQL* Plus 中以下活动的结果是什么?
DEFINE eid = 117 SELECT first_name, last_name, employee_id, salary FROM employees WHERE employee_id = &eid
- SELECT 查询抛出错误,因为无法在会话中定义替换变量。
- 它提示用户输入变量 &eid 的值。
- 它成功执行,员工 ID 替换为 117。
- 它忽略 DEFINE 命令,因为声明的替换变量没有与号 (&) 符号。
答案:C。
68、删除DEFINE命令设置的替换变量值的命令是什么?
- 取消定义
- 出发
- 删除
- 清除
答案: A.使用 UNDEFINE 命令从会话中删除替换变量
69. 以下哪个命令用于检查SQL 查询执行前后的替换变量值?
- 定义
- 取消定义
- 显示变量
- 核实
答案:D.在 SQL*Plus 和 SQL Developer 中使用 VERIFY 命令检查使用替换变量的值的替换。
70. 以下哪些是 WHERE 子句的有效运算符?
- >=
- 一片空白
- !=
- 就好像
答案:A、B、C。
71. 评估以下查询:
SELECT ename || q'{'s salary is }' || sal AS "Salary" FROM emp;
执行上述查询时会发生什么?
- 给出错误,因为大括号不能与 [q] 运算符一起使用
- 由于数据类型不匹配而出错
- 执行成功并在每个员工姓名的末尾添加一个撇号 (‘s)
- 执行成功并在员工姓名后附加文字“{‘s start date was }”
答案:C。
72. 以下哪个 WHERE 子句谓词将正确列出部门 20 的员工?
- 哪里 deptno 是 20
- 哪里部门 20
- 哪里 deptno=20
- WHERE 20=deptno
答案:C、D。相等运算符 (=) 用于比较条件中的操作数是否相等。
73. 编写一个 SELECT 查询以列出工资大于 1000 的员工。
-
SELECT ename, sal FROM emp WHERE sal GREATER THAN 1000
-
SELECT ename, sal FROm emp WHERE sal > 1000
-
SELECT ename, sal FROM emp WHERE sal >= 1000
-
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;
- 执行成功并列出第10部分工资大于其部门编号10倍的员工
- 引发错误,因为表达式必须用括号括起来
- 引发错误,因为 WHERE 子句无法计算表达式
- 引发错误,因为 WHERE 子句不能使用文字
答案: A. WHERE 子句可以包含表达式。
75.确定下面SELECT语句中的错误
SELECT ename, deptno, sal FROM emp WHERE job=CLERK;
- WHERE 子句不能引用列 JOB,因为它没有出现在 SELECT 列列表中
- 字符文字 CLERK 必须用单引号括起来
- 字符文字 CLERK 必须括在括号内
- 查询中没有错误
答案:B.字符字面量必须用单引号括起来
76. 解释以下 SQL 查询的输出
SELECT ename, deptno, sal FROM emp WHERE sysdate-hiredate > 100;
- 该查询列出了雇用日期比当前日期早至少 100 天的员工
- 查询列出在公司工作超过 100 天的员工
- 该查询列出了当年雇用 100 天之后的员工
- 查询列出在公司工作时间少于 100 天的员工
答案:A、 B。WHERE 子句中可以使用日期表达式
77. 以下哪个查询将显示 1982 年 12 月 31 日之后雇用的员工?
-
SELECT ename, deptno FROM emp WHERE hiredate > '31-DEC-1982';
-
SELECT ename, deptno FROM emp WHERE hiredate > to_date('31-DEC-1982','DD-MM-YYYY');
-
SELECT ename, deptno FROM emp WHERE hiredate > to_char('31-DEC-1982','DD-MM-YYYY');
-
SELECT ename, deptno FROM emp WHERE hiredate > 31-DEC-1982;
答案:A、B。日期文字必须用单引号括起来。
78. 以下哪项 WHERE 条件将列出当前日期雇用的员工?
- WHERE sysdate-hiredate=0
- WHERE sysdate=hiredate
- WHERE sysdate-hiredate<1
- WHERE to_date (sysdate,’DD-MON-YYYY’) = to_date (hiredate=’DD-MON-YYYY’)
答案:C、D。条件 SYSDATE=HIREDATE 将不起作用,因为 SYSDATE 包含动态时间戳组件,而hiredate 是数据库中的静态值。
79. 以下哪些是可以在 WHERE 子句中使用的日期文字的有效格式?
- 95 年 3 月 24 日
- 02-12-1983
- 2001 年 6 月 19 日
- 31.04.2010
答案:A、C。日期文字的默认格式是 DD-MON-RR。