这是来自oracle 1z0-047
测试的问题。
EMPDET
是一个包含列EMPNO
和ENAME
的外部表。哪个命令
会对EMPDET表有效吗?
A. UPDATE empdet
SET ename = 'Amit'
WHERE empno = 1234;
B. DELETE FROM empdet
WHERE ename LIKE 'J%';
C. CREATE VIEW empvu
AS
SELECT* FROM empdept;
D. CREATE INDEX empdet_dx
ON empdet(empno);
外表是什么意思?当我尝试运行查询时,所有四个选项都有效。
答案 0 :(得分:5)
oracle-database中的外部表是一种通过sql-commands访问驻留在某些.txt
或.csv
文件中的数据的方法。因此,表数据不保存在数据库表空间中,而是在顺序数据集上的某种视图。因此,数据库无法对数据进行索引或更新,因为它超出了它的范围,但它只能对其进行选择。
答案 1 :(得分:4)
“外部表”表示您的(通常)CSV文件存储在文件系统中,Oracle读取由CREATE TABLE语句中的设置定义的CSV文件。数据不会保存在Oracle表空间中,但您可以像普通表一样选择它们。但是,您只能选择它们(或从逻辑上创建一个视图),但不能修改任何内容。
这是一个外部表的简单示例:
CREATE TABLE ADHOC_CSV_EXT (
C1 VARCHAR2(4000),
C2 VARCHAR2(4000),
C3 VARCHAR2(4000)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY SOME_FOLDER
ACCESS PARAMETERS (
records delimited BY newline
fields terminated BY ',' optionally enclosed BY '"'
missing field VALUES are NULL)
LOCATION ('foo.csv')
);