使用 DDL 语句问题
使用 DDL 语句问题
1.Oracle DB中DDL的完整形式是什么?
- 数据删除语言
- 数据定义语言
- 数据委托语言
- 虚拟数据语言
答案:B. DDL 是 SQL 的类别之一,代表数据定义语言。其他 SQL 类型是 DML、DCL 和 TCL。
2.DDL 语句用于以下哪些 Oracle 数据库对象?
- 表
- 子查询
- 行
- 列
答: A. DDL 包含 CREATE、ALTER 和 ANALYZE 等命令,用于创建表、查看数据库模式中存储的子程序和包。
3.Oracle 数据库中包含数据的基本存储单位是什么?
- 看法
- 柱子
- 询问
- 桌子
答案:D。表是Oracle数据库中数据物理存储的基本单位。
4.以下哪个选项最能定义视图?
- 它是表格的较短形式
- 它是一个或多个表中子集的逻辑表示
- 它只有一行和一列
- 以上都不是
答案:B. View 是一种查询,它的行为类似于一个窗口,用于格式化一个或多个表中包含的数据。视图不包含任何物理数据,而仅包含在运行时创建的查询。
5. 以下哪些是数据库对象?
- 桌子
- 顺序
- 代名词
- 上述所有的
答案:D.物理存储在数据库模式中的对象是数据库对象。
6. 以下哪个数据库对象生成数值?
- 桌子
- 看法
- 指数
- 顺序
答案:D.序列用于生成从确定值开始并按指定因子递增的唯一值。可以创建一个序列来生成一系列整数。序列生成的值可以存储在任何表中。使用 CREATE SEQUENCE 命令创建序列。
7.以下哪个数据库对象为对象提供了一个替代名称?
- 代名词
- 顺序
- 看法
- 指数
答案: A.同义词为数据库对象提供永久别名。任何数据库用户都可以使用公共同义词。私有同义词仅对创建它的用户可用。同义词是使用 CREATE SYNONYM 命令创建的。使用 DROP SYNONYM 命令删除同义词。只有具有 DBA 权限的用户才能删除公共同义词。
8.以下哪些数据库对象提高了某些查询的性能?
- 桌子
- 代名词
- 看法
- 指数
答案:D。
9. 什么时候可以创建表?
- 当数据库没有被任何用户使用时
- 新创建数据库时
- 它可以随时创建,即使用户正在使用数据库
- 以上都不是
答案:C。可以创建索引以加快查询过程。当索引存在时,DML 操作总是较慢。Oracle 11g 自动为 PRIMARY KEY 和 UNIQUE 约束创建索引。显式索引是使用 CREATE INDEX 命令创建的。如果查询条件或排序操作基于用于创建索引的列或表达式,则 Oracle 11g 可以自动使用索引。
10. 什么是桌子?
- 指定表的大小不是强制性的
- 每张桌子的大小都一样
- 可以在线修改表
- 以上都不是
答案:A、C。
11. 创建一个名为 123_A 的表,用于存储组织中的员工人数。表名有什么问题?
- 表名不能以数字开头
- 这个名字没有错。
- 命名表时不能使用下划线
- 以上都不是
答: A.根据对象命名约定,表名必须以字母开头。
12. 表名最多可以包含多少个字母?
- 1-20 个字符
- 1-10 个字符
- 1-30 个字符
- 1-50 个字符
答案:C . 表名不能超过 30 个字符。
13 下列哪些字符可用于命名表?
- 从 A 到 Z
- 到 z
- 0 到 9
- 上述所有的
答案:D。按照 Oracle 中的标准命名约定,对象的名称在任何情况下都可以包含字母。强制性地,第一名是字母,其余的可以是字母和数字的混合。
14. 下列哪些特殊字符可用于命名表?
- @
- #
- $
- _(下划线)
答案:B、C、D。命名表时不允许使用除 (#、$、_) 之外的其他特殊字符。不鼓励在表名中使用特殊字符。
15.关于表名的说法正确的是?
- 表可以有一个名称,该名称由同一用户拥有的其他对象使用
- 序列和表可以具有相同的名称
- 视图和表可以同名
- 表名不得与同一用户拥有的另一个对象的名称重复
答案:D。由于命名空间,表名不能与任何其他模式对象相同。共享相同命名空间的模式对象包括表、视图、序列、私有同义词、存储过程、存储函数、包、物化视图和用户定义类型。
16.您创建一个表并将其命名为 COUNT。CREATE TABLE 脚本的结果是什么?
- 不会创建表
- 将创建该表,并将下划线自动添加到名称 COUNT_ 中
- 将抛出 ORA 错误
- 表 COUNT 将被创建,没有任何错误
答案:A、C。您不能创建名称与 Oracle Server 保留字相同的表。
17. 您使用带引号的标识符“ ”创建一个表。你将如何引用这张表?
- ‘表名’
- “表名”
- A 或 B
- 以上都不是
答案:B.如果表是用带引号的标识符创建的,则必须使用双引号对其进行寻址。不建议使用带引号的标识符。带引号的标识符区分大小写
18. 创建一个名为 EMPLOYEES 的表。以下哪一项是可能的?
- 它可以被称为 eMPLOYEES
- 它可以被称为 EMPLoyees
- 它可以被称为员工
- 上述所有的
答案:D . 在 Oracle 中不带引号的对象名称不区分大小写。
19. 以下哪些是创建表的先决条件?
- CREATE TABLE 权限
- 储存空间
- 表中数据
- 以上都不是
答案:A、B。用户必须拥有 CREATE TABLE 权限,并且必须有足够的空间来为表段分配初始区。
20. 创建表的语法是什么?
- CREATE TABLE [schema.] 表(列数据类型 [DEFAULT expr] [,..] );
- CREATE TABLE INTO [schema.] 表(列数据类型 [DEFAULT expr] [,..] );
- 创建表值 [schema.] 表(列数据类型 [DEFAULT expr] [,..] );
- 以上都不是
答案:A。
21. 选择创建表格时必须指定的元素。
- 列名
- 列数据类型
- 列大小
- 上述所有的
答案:D。一个表必须至少有一个列、它的数据类型规范和精度(如果需要)。
22. 名为“Kevin”的用户想要访问另一个名为“Jonathan”的用户拥有的表。以下哪一项对凯文有效?
- 从 Kevin.employees 中选择 *;
- 从 jonathan.employees 中选择 *;
- A 或 B
- 以上都不是
答案:B。
23. 关于模式,什么是正确的?
- 模式归数据库用户所有并与该用户同名
- 每个用户拥有一个架构
- 模式对象包括数据库链接
- 上述所有的
答案:D . 数据库中的用户空间称为模式。模式包含用户拥有或访问的对象。每个用户都可以拥有自己的单一架构。
24.关于表格,下列哪项是正确的?
- 为表提供默认值
- 在 INSERT 语句期间可以为表的列提供默认值
- A 或 B
- 以上都不是
答案:B.可以在定义期间使用关键字 DEFAULT 为列指定默认值。
25. 创建表时,以下哪些选项可以与 DEFAULT 选项一起使用?
- 字符串
- 表达式
- SQL 函数
- 上述所有的
答案:D。列的默认值可以是文字,也可以是使用 SQL 函数的导数。
26、下面哪个命令是用来查看表的结构的?
- 更新
- 显示
- 描述
- 线轴
答案:C. DESCRIBE 是一个 SQL*Plus 命令,用于列出表的结构。
27.一列CHECK约束的限制是多少?
- 没有限制
- 1
- 2
- 4
答案:A. Oracle 对列的检查约束没有限制。
28. 以下哪个命令会删除表员工?(考虑给定的表结构)
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
-
DROP employees
-
DROP TABLE employees
-
TRUNCATE employees
- 以上都不是
答案:B。
29. 命名空间是什么?
- 它是一组对象类型
- 在命名空间内,所有对象名称都应由架构和名称唯一标识
- 不同命名空间中的相同类型的对象可以共享相同的名称
- 上述所有的
答案:D . 命名空间定义了一组对象类型,其中所有的名称必须由模式和名称唯一标识。不同命名空间中的对象可以共享相同的名称。
30. 以下哪些对象类型共享相同的命名空间?
- 同义词
- 桌子
- 观看次数
- 上述所有的
答案:D。
31. 关于表和索引,下列哪项是正确的?
- 索引和表可以在模式中具有相同的名称
- 模式中的索引和表不能同名
- A 和 B 都不行
- 以上都不是
答案: A.由于索引和约束共享相同的命名空间,因此表和索引可以具有相同的名称。
32. 关于创建表的说法正确的是什么?
- 创建表时,应为每一列分配一个数据类型
- 对列的数据类型分配不是强制性的
- 必须将数据类型分配给表而不是列
- 以上都不是
答案:A . 为了构建表的结构,每一列都必须具有数据类型和精度等行为属性。
33. 假设您创建一个如下所示的表:
CREATE TABLE employees (emp_id NUMBER(4), last_name VARCHAR2 (20) );
Oracle 将为 LAST_NAME 列分配多少空间?
- 如果没有行,则 Oracle 不会为 last_name 列分配任何空间
- 如果填充了行,则 Oracle 将为 last_name 列分配无限空间
- A 和 B 都不行
- 以上选项都没有
答案:A。
34. VARCHAR2 数据类型的大小范围是多少?
- 1 字节到 2 字节
- 1 字节到 2000 字节
- 1 字节到 4000 字节
- 以上都不是
答案:C。在 Oracle 11g 第 2 版之前,字符串数据类型 VARCHAR2 最多可以包含 4000 个字节。
35.CHAR 数据类型可以取的大小范围是多少?
- 1 字节到 2 字节
- 1 字节到 2000 字节
- 1 字节到 4000 字节
- 1 字节到 3000 字节
答案:B。在 Oracle 11g 第 2 版之前,字符串数据类型 CHAR 最多可以包含 2000 个字节。
36. 关于 CHAR 数据类型,哪些是正确的?
- 如果数据不是列的长度,那么它将被替换为 NULL 值
- 如果数据不是列的长度,那么它将用空格填充
- 必须具有与 CHAR 大小中提到的相同大小的数据,否则会引发 ORA 错误
- 以上都不是
答案:B. CHAR 为值提供固定长度的存储,而 VARCHAR2 是灵活的。如果在 CHAR 列中插入长度小于 CHAR 精度的数据,则将剩余长度填充到列值中。
37. 以下哪个是可变长度二进制数据的数据类型?
- VARCHAR
- VARCHAR2
- 生的
- NVARCHAR2
答案:C。
38. NUMBER 数据类型允许的精度是多少?
- 1 到 20
- 1 到 4K
- 1 到 30
- 1 至 38 位
答案:D。在 Oracle 11g 第 2 版之前,主要数据类型 NUMBER 的最大精度为 38 位。
39. NUMBER 数据类型允许的比例是多少?
- 1 到 20
- -84 到 100
- -84 到 127
- 以上都不是
答案:C。
40. 以下哪些是日期和时间数据的数据类型?
- 时间戳
- 间隔天到第二天
- 带有当地时区的时间戳
- 上述所有的
答案:D。
41. 以下哪些数据类型适用于大对象?
- CLOB
- BLOB
- 生的
- 上述所有的
答案:A、B。SQL 中的LOB 数据类型有 BLOB、CLOB 和 BFILE。
42. 如果插入的值的长度小于为 VARCHAR2 数据类型列定义的长度,会发生什么情况?
- 它会抛出一个 ORA 错误
- 它将成功插入,并且该值将根据需要占用尽可能多的空间。
- 它将被插入,剩余的空间将用空格填充
- 以上都不是
答案:B. VARCHAR2 包含可变长度的字符数据。
43、oracle中的NUMBER(8, 2)是什么意思?
- 表示一共8位,小数点前6位,小数点后2位
- 表示一共10位,小数点前8位,小数点后2位
- 表示小数点前有2位,小数点后有8位
- 以上都不是
答:A、p表示精度,小数点左右的总位数,最多38位;s 或小数位数表示小数点右侧的位数。例如:NUMBER(7, 2) 可以存储最大为 99999.99 的数值。如果未指定精度或小数位数,则该列默认为 38 位精度。
44. 以下哪个查询会创建一个没有行的表?
-
CREATE TABLE emp AS SELECT 0 from dual;
-
CREATE TABLE emp AS SELECT * from employees where 1=1;
-
CREATE TABLE emp AS SELECT * from employees where 1=2;
-
CREATE TABLE emp AS SELECT 0 from employees;
答案:C . 直接路径操作 CTAS (CREATE TABLE .. AS SELECT..) 可用于复制现有表的结构,而无需复制数据。
45. 以下哪个语句会在已经创建的表中添加一列?
-
ALTER TABLE table_name add column (job varchar2(20));
-
ALTER TABLE table_name add job varchar2(20);
-
ALTER TABLE table_name add (job varchar2(20));
-
ALTER TABLE table_name add column (job);
答案:C . ALTER TABLE 命令允许用户向表中添加新列。在新表中创建列的相同规则适用于向现有表中添加列。新列必须由列定义名称和数据类型(和宽度,如果适用)。也可以指定默认值。不同之处在于新列添加在现有表的末尾——它将是最后一列。
46. 以下哪个语句会修改已经存在的列的数据类型?
-
ALTER TABLE table_name MODIFY (job varchar2(10) );
-
ALTER TABLE table_name MODIFY job varchar2(10);
-
ALTER TABLE table_name MODIFY column (job varchar2(10) );
-
ALTER TABLE table_name MODIFY (job varchar2(10) );
答案: A. ALTER TABLE..MODIFY 用于修改表中的列定义。允许的更改是提高列精度、更改数据类型系列中的数据类型或更改列的默认值。
47. 以下哪个语句会从表中删除一列?
-
ALTER TABLE table_name DROP (job varchar2(10) );
-
ALTER TABLE table table_name DROP COLUMN (job varchar2(10) );
-
ALTER TABLE table table_name DROP COLUMN (job);
-
ALTER TABLE table_name MODIFY (job varchar2(10) );
答案:C . ALTER TABLE..DROP COLUMN 可用于从表中删除列。
48. 以下哪一项将列 emp_id 重命名为 empno?
-
ALTER TABLE employees RENAME column emp_id to empno;
-
ALTER TABLE employees RENAME emp_id to empno;
-
ALTER TABLE employees RENAME column emp_id to empno;
- 以上都不是;
答案: A. ALTER TABLE..RENAME 可用于重命名表中的现有列。
49. 您需要将表员工标记为只读。您将执行以下哪个语句来获得所需的结果?
-
ALTER TABLE employees set READ;
-
ALTER TABLE employees READ ONLY;
-
ALTER TABLE employees READ_ONLY;
-
ALTER TABLE employees set READ ONLY;
答案:B . 可以将表标记为只读以使其对 DML 和 DDL 语句处于被动状态。只读特性是在 Oracle 11g 中引入的。
50. 下列关于 DDL 语句的说法中,哪些是正确的?
- DDL 命令成为正在进行的事务的一部分
- DDL 命令自动提交并结束正在进行的活动事务
- 如果 DDL 命令失败,则仍提交当前事务
- 如果 DDL 命令失败,则回滚当前事务
答案:B. DDL 命令只有在没有错误的情况下成功执行时才会自动提交。如果 DDL 命令失败,则正在进行的事务在会话中仍处于活动状态并且未提交到数据库中。
51. 如果对发布 DDL 的表存在活动事务,会发生什么情况?
- 事务回滚
- 事务已提交并终止
- A 和 B
- 以上都不是
答案:B。
52. 以下哪个命令会删除 SQL 语句中未使用的列?
-
ALTER TABLE tablename DROP COLUMN column_name;
-
ALTER TABLE tablename DROP unused columns;
-
ALTER TABLE tablename set unused column;
-
ALTER TABLE tablename DROP columns;
答案:C . SET UNUSED 命令只删除表中未使用的列,而且速度更快
53. 尝试删除标记为只读的表时会发生什么?
- 它会抛出错误
- 它将不再保持只读但也不能被删除
- 它将被删除而不会出错
- 它将保持不变
答案:C . DROP 命令影响非只读表的数据字典定义,因此可以删除
考虑以下陈述并回答后面的问题 54 和 55:
CREATE TABLE departments (dept_id NUMBER (2), dept_name VARCHAR2(14), create_date DATE DEFAULT SYSDATE);
54. 如果从语句中删除 DEFAULT 子句规范会发生什么?
- 该脚本将抛出错误,因为必须使用默认值指定 DATE 列
- 系统生成的默认值将分配给该列
- 将创建的表没有 CREATE_DATE 列的默认值
- 以上都不是
答案:C。
55.以上说法正确的是?
- 它会在会话中自动提交事务
- 它将在模式中创建表 DEPARTMENTS
- 它将为 CREATE_DATE 列设置默认值
- 以上都不是
答案:A、B、C。
56. BLOB 数据类型列最多可以容纳多少值?
- 1 KB
- 2 GB
- 4GB
- 3 KB
答案:C。根据 Oracle 11g,BLOB 中容纳的最大数据大小可以是 4GB。
57.CLOB和BLOB数据类型有什么区别?(选择最合适的答案)
- CLOB 是字符数据,BLOB 是二进制数据
- CLOB 是最大 2GB 的字符数据,BLOB 是最大 4GB 的二进制数据
- CLOB 是最大 4 GB 的字符数据,BLOB 是最大 4 GB 的二进制数据
- 以上都不是
答:C. CLOB 是一个字符大对象,用于存储 PDF、docs 和文本文件等字符文件,而 BLOB 是用于存储媒体文件的二进制 LOB。
58.以下哪个是ROWID?
- 它是给一组以 1 开头的行的序列号
- 它是给表中一行的字母数字地址
- A 和 B
- 以上都不是
答案:B。它是一个 base-64 系统,表示其表中行的唯一地址。
59. 存储在外部文件(最大 4 GB)中的二进制数据的数据类型是什么?
- BLOB
- CLOB
- 文件
- 文件
答:D. BFILE 是外部 LOB 类型,用于引用外部媒体文件。内部 LOB 类型有 BLOB 和 CLOB,用于存储在数据库中的二进制大文件和字符大文件。
60. 用子查询创建的表是什么?
- 使用子查询创建表时,不会复制 VARCHAR2 数据类型列
- 使用子查询创建表时,不会复制 CLOB 数据类型列
- 使用子查询创建表时不会复制 LONG 列
- 以上都不是
答案:C。创建表的 CTAS 方法不会复制 LONG 列。
61. 以下哪种数据类型不能与 GROUP BY 和 ORDER BY 子句一起使用?
- CLOB
- VARCHAR2
- 字符
- 长
答案:D. LONG 数据类型不能用于 GROUP BY 和 ORDER BY 子句中。
62.一个表可以包含多少个LONG列?
- 没有任何
- 最多 2 个
- 最少 2
- 只有一个
答案:D。一个表最多可以包含一个 LONG 类型的列。
63.SQL中不能约束以下哪些数据类型?
- VARCHAR2
- 长
- 字符
- 日期
答案:B.不能在 LONG 类型列上创建约束。
64. 如果您想要带小数秒的日期,可以使用以下哪种数据类型?
- 日期
- VARCHAR2
- 时间戳
- 以上都不是
答案:C . TIMESTAMP 数据类型提供日期值的额外精确信息。它提供小数秒和时区信息。
65. 您需要在一列中存储天、小时、分钟和秒的间隔。哪种数据类型会有所帮助?
- 时间戳
- 年到月的间隔
- 间隔天到第二天
- 以上都不是
答案:C。
66.您需要找出 2011 年 6 月和 2012 年 6 月雇佣了多少员工。以下哪种数据类型会有所帮助?
- 间隔天到第二天
- 时间戳
- 日期
- 年到月的间隔
答案:D。
67. 约束条件是什么?
- 他们在行级别执行规则
- 他们在表级别执行规则
- 创建表时必须创建约束
- 以上都不是
答案:B . 约束是应用于添加到表中的数据的规则。它代表业务规则、策略或过程。违反约束的数据不会添加到表中。约束可以在表创建期间作为 CREATE TABLE 命令的一部分包含在内,或者使用 ALTER TABLE 命令添加到现有表中。必须使用表级方法创建基于复合列(多列)的约束。
68. 约束有什么帮助?
- 它们限制了表的存储容量,从而节省了数据库空间
- 它们防止修改表
- 如果存在依赖关系,它们会阻止删除表
- 以上都不是
答案:C。约束是应用于添加到表中的数据的规则。它代表业务规则、策略或程序。违反约束的数据不会添加到表中。
69.A RAW 数据类型列最多可以存储什么值的变长二进制字符串?
- 10 GB
- 1 TB
- 2 GB
- 4GB
答案:C。
70. 以下哪些是 Oracle 中的有效约束?
- 指数
- 一般
- 独特
- 首要的关键
答案:C、D。只能使用列级方法创建 NOT NULL 约束。PRIMARY KEY 约束不允许指定列中的重复值或 NULL 值。一个表中只允许有一个 PRIMARY KEY 约束。FOREIGN KEY 约束要求列条目与表中引用的列条目匹配或为 NULL。UNIQUE 约束类似于 PRIMARY KEY 约束,不同之处在于它允许在指定列中存储 NULL 值。CHECK 约束确保数据在添加到表之前满足给定条件。
71. 以下哪些 DML 操作考虑了对列的约束?
- 插入
- 联盟
- 删除
- 更新
答案:A、C、D。所有 DML 操作都服从对表列的约束。
72. 什么时候可以创建约束?
- 创建表时
- 创建表后
- A 和 B
- 以上都不是
答案:C.可以在表创建期间将约束作为 CREATE TABLE 命令的一部分包含在内,或者使用 ALTER TABLE 命令将其添加到现有表中。
73 约束存储在哪里?
- 在 SGA
- 在一张桌子
- 在数据字典中
- 以上都不是
答案:C。
74. 您创建了一个约束但没有命名。约束的默认名称是什么?
- SYS_Cn
- SYS_约束
- SYS_Const
- SYS_C0
答案: A.默认情况下,Oracle 为约束 SYS_Cn 提供了一个通用名称,其中 n 是一个整数以保持约束名称的唯一性。
75. 列级约束和表级约束的功能区别是什么?
- 列级约束适用于表的所有列
- 表级约束适用于表的所有列
- 它们在功能上是相同的,只是语法不同
- 以上都不是
答案:C。在功能上,表级约束和列级约束的工作方式类似。复合约束只能在表级别定义。
76. 关于列级约束,哪些是正确的?
- 它们可以在创建表之前创建
- 它们可以在定义列之前创建
- 它们在定义列时包括在内
- 以上都不是
答案:C.列级约束与列规范一起定义。
77. SQL 中的 NOT NULL 约束是什么?
- 它们应该在表级别定义
- 它们应该在列级别定义
- 它们应该只定义在一列上
- 它们应该只在一行上定义
答案:B.只能使用列级方法创建 NOT NULL 约束。
考虑以下陈述并回答后面的问题 78 和 79:
CREATE TABLE employees ( emp_id NUMBER (6) CONSTRAINT emp_emp_id_PK PRIMARY KEY, first_name VARCHAR2(20), last_name VARCHAR2(20), hire_date DATE );
78.上述语句中创建了哪种类型的约束?
- 列级约束
- 表级约束
- 命名约束
- 规格约束
答案: A.列级约束与列定义一起创建。
79. 上面的语句可以做哪些修改,给它一个表级约束?
- 约束 emp_emp_id_PK 主键
- 约束 emp_emp_id_PK 主键 (EMP_ID)
- 约束 emp_emp_id_PK EMP_ID 主键
- 约束主键 emp_emp_id_PK
答案:B。
80. PRIMARY KEY 约束的正确之处是什么?
- 它隐式地将 NOT NULL 约束应用于定义它的列
- 它将 UNIQUE KEY 约束隐式应用于定义它的列
- 它隐式地将 CHECK 约束应用于定义它的列
- 它将 DEFAULT 约束隐式应用于定义它的列
答案: A. PRIMARY KEY 约束不允许指定列中的重复值或 NULL 值。一个表中只允许有一个 PRIMARY KEY 约束。
81. 关于 UNIQUE KEY 约束,下列哪项是正确的?
- UNIQUE KEY 约束和 PRIMARY KEY 约束相同
- 如果列上没有定义 NOT NULL,则 UNIQUE KEY 约束允许 NULL 值
- 当在列上定义 UNIQUE KEY 约束时,我们可以有两个相同的行
- 以上都不是
答案:B . UNIQUE 约束类似于 PRIMARY KEY 约束,除了它允许在指定列中存储 NULL 值。
考虑以下陈述并回答后面的问题 82 和 83:
CREATE TABLE employees ( emp_id NUMBER (6) first_name VARCHAR2(20), last_name VARCHAR2(20), job VARCHAR2(20), hire_date DATE CONSTRAINT emp_job_UK UNIQUE (job));
82. 以下哪个语句解释了上面的 CREATE TABLE 脚本?
- 此表不能有两个相同的作业 ID
- 此表可以有两个或多个相同的作业 ID
- 此表的 JOB 列中可以有 NULL 值
- 以上都不是
答案:A、 C。JOB 列上的 UNIQUE 约束将限制重复值但允许空值。
83. 如果将约束emp_job_UK 修改为emp_job_PK PRIMARY KEY (job),结果是什么?
- 仅当 JOB 列中没有 NULL 值时,才会发生此更改
- 这种变化可以在没有任何限制的情况下发生
- 此更改将更改列 JOB 的值
- 以上都不是
答案:A。
84. UNIQUE 键约束的正确之处是什么?
- 在列上定义 UNIQUE 约束时隐式创建唯一键索引
- 当在列上定义 UNIQUE 约束时隐式创建 PRIMARY KEY 约束
- 在列上定义 UNIQUE 约束时隐式创建 NOT NULL 约束
- 以上都不是
答案: A.当对表施加唯一约束时,Oracle 内部会在该列上创建唯一键索引以限制值的重复。
85.下列关于索引的说法正确的是?
- 如果对表执行 UPDATE 语句,则索引也需要手动更新
- 如果对表执行了 DELETE 语句,索引也需要手动删除
- 删除表时,索引会自动删除
- 如果对表执行 UPDATE 语句,则相应的索引也会更新。
答案:C、D。
86.以下哪个 CREATE TABLE 语句是有效的?
-
CREATE TABLE EMPLOYEES (emp_id NUMBER (2) PRIMARY KEY, first_name VARCHAR(20), last_name VARCHAR(20), hire_date DATE NOT NULL);
-
CREATE TABLE EMPLOYEES (emp_id NUMBER (2) PRIMARY KEY NOT NULL, first_name VARCHAR(20), last_name VARCHAR(20), hire_date DATE NOT NULL PRIMARY KEY);
-
CREATE TABLE EMPLOYEES (emp_id NUMBER (2) PRIMARY KEY, first_name VARCHAR(20), last_name VARCHAR(20), hire_date DATE NOT NULL UNIQUE);
-
CREATE TABLE EMPLOYEES (emp_id NUMBER (2), first_name VARCHAR(20), last_name VARCHAR(20), hire_date DATE NOT NULL, CONSTRAINT emp_emp_id_PK PRIMARY KEY (emp_id));
答案:A、C、D。所有 CREATE TABLE 脚本都是有效的。
87.一个表可以有多少个PRIMARY KEY约束?
- 0
- 无限
- 2
- 1
答案:D。一张表只能有一个主键。
88. 您想在 EMP_ID 上放置一个 CHECK 约束,这样它应该等于它正在获取其值的 Sequence 的当前值。以下哪些陈述将帮助您实现这一目标?
- Emp_id NUMBER (10) CONSTRAINT emp_emp_id_chk 检查 (emp_id = EMPNO.CURRVAL);
- emp_id NUMBER (10) 约束 emp_emp_id_chk 检查 (emp_id = EMPNO.NEXTVAL);
- emp_id NUMBER (10) 约束 emp_emp_id_chk 检查 (EMPNO.CURRVAL);
- 以上都不是
答案:D. CHECK 约束中不能使用 CURRVAL、NEXTVAL、LEVEL 和 ROWNUM 伪列
89. 以下哪个命令有助于将外键值转换为 NULL?
- 删除级联
- 删除集 NULL
- 级联
- 参考
答案:B。
90. 您需要在 EMPLOYEES 表中添加一个约束,以限制工资低于 10000 的员工的添加。以下哪个命令会给出您需要的结果?
-
ALTER TABLE employees ADD CONSTRAINT emp_emp_sal_CHECK CHECK (salary >= 10000);
-
ALTER TABLE employees ADD CHECK CONSTRAINT emp_emp_sal_CHECK (salary>10000);
-
ALTER TABLE employees ADD CONSTRAINT CHECK emp_emp_sal_CHECK (salary = 10000);
-
ALTER TABLE employees ADD CONSTRAINT emp_emp_sal_CHECK (salary < 10000);
答案:A。
91. 您需要向 EMPLOYEES 表添加一个约束,该约束强加了所有员工的 HIRE_DATE 应等于 SYSDATE-7 的限制。以下哪项陈述会给您所需的结果?
-
ALTER TABLE employees ADD CHECK CONSTRAINT emp_emp_sal_CHECK ( to_char(hire_date,'DD-MON-YY') = SYSDATE -7);
-
ALTER TABLE employees ADD CONSTRAINT CHECK emp_emp_sal_CHECK ( to_char(hire_date,'DD-MON-YY') = SYSDATE -7);
-
ALTER TABLE employees ADD emp_emp_sal_CHECK CHECK ( to_char(hire_date,'DD-MON-YY') = SYSDATE -7);
- 以上都不是
答案:D。您不能在 CHECK 约束中使用 SYSDATE、UID、USER 和 USERENV 函数。
考虑以下查询并回答后面的问题 92 到 94:
CREATE TABLE EMPLOYEES (emp_id NUMBER (2), first_name VARCHAR(20), last_name VARCHAR(20), dept_id NUMBER (10), hire_date DATE DEFAULT SYSDATE CONSTRAINT emp_emp_id_PK PRIMARY KEY (emp_id, hire_date) CONSTRAINT emp_dept_FK FOREIGN KEY (dept_id) REFERENCES departments (dept_id) );
92. 以下哪个语句解释了 CREATE TABLE 脚本?
- FOREIGN KEY 约束是在表级别的 DEPT_ID 列上定义的
- 定义的 FOREIGN KEY 约束引用了 DEPARTMENTS 表中的 DEPT_ID
- A 和 B
- 以上都不是
答案:C。当我们为参照完整性定义 FOREIGN KEY 约束时使用关键字 FOREIGN KEY 和 REFERENCES。
93、删除EMPLOYEES表时,需要删除DEPARTMENTS表中的所有依赖行。以下哪个命令可以解决问题?(考虑给定的表结构)
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
SQL> DESC departments Name Null? Type ----------------------- -------- ---------------- DEPARTMENT_ID NOT NULL NUMBER(4) DEPARTMENT_NAME NOT NULL VARCHAR2(30) MANAGER_ID NUMBER(6) LOCATION_ID NUMBER(4)
- 删除集 NULL
- 删除级联
- 删除所有
- 更新
答案:B.如果约束定义中包含 ON DELETE CASCADE 并且从父表中删除了一条记录,那么子表中的任何相应记录也会被自动删除。
94. 如下所示的 EMPLOYEES 表,有 5 名员工在部门 10 工作。行政部门的执行人员发出以下查询。
DELETE FROM departments WHERE dept_id = 10;
这个查询的结果是什么?(假设表结构如图所示)
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
SQL> DESC departments Name Null? Type ----------------------- -------- ---------------- DEPARTMENT_ID NOT NULL NUMBER(4) DEPARTMENT_NAME NOT NULL VARCHAR2(30) MANAGER_ID NUMBER(6) LOCATION_ID NUMBER(4)
- 完整性约束错误
- 成功执行
- A 和 B 都不行
- 以上都不是
答:A . DEPARTMENTS 中的 DEPT_ID 是表 EMPLOYEES 中的外键,并且部门 10 中有员工,因此除非找到子记录,否则无法从父表中删除值。