创建和管理表

表是 Oracle 数据库中的基本数据存储单元。表中保存了可供用户访问的所有数据。每个表都包含一个或多个表示单个数据记录的行。行由列组成,列表示记录的字段。

注:要执行本文档中的教程,必须以 SQL Developer 用户 HR 的身份连接到 Oracle Database。

另请参见:

关于 SQL 数据类型

在创建表时,必须为每个列指定 SQL 数据类型,该数据类型确定该列可以包含的值。

例如,类型为 DATE 的列可以包含值 '01-MAY-05',但不能包含数值 2 或字符值“shoe”。SQL 数据类型可分为两类:内置和用户定义的。(PL/SQL 还具有其他数据类型,请参阅“关于 PL/SQL 数据类型”。)

另请参见:

创建表

要创建表,请使用 SQL Developer 的“创建表”工具或 DDL 语句 CREATE TABLE。

本节介绍如何使用这两种方法来创建这些表,这些表包含有关员工评估的数据:

这些表出现在本文档的许多教程和示例中。

教程:使用“创建表”工具创建表

本教程介绍如何使用 SQL Developer 工具“创建表”创建 PERFORMANCE_PARTS 表。

要使用“创建表”工具创建 PERFORMANCE_PARTS 表,请执行以下操作:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,右键单击

  3. 在选项列表中,单击新建表

    “创建表”窗口即会打开,其中提供了新表的默认值,并且新表仅有一行。

  4. 对于“方案”,请接受默认值 HR。

  5. 对于“名称”,请输入 PERFORMANCE_PARTS

  6. 在默认行中:

    • 对于 PK(主键),接受默认选项,取消选中。

    • 对于“列名”,请输入 PERFORMANCE_ID

    • 对于“类型”,请接受默认值 VARCHAR2。

    • 对于“大小”,请输入 2

    • 对于 Not Null,接受默认选项,取消选中。

  7. 单击添加列

  8. 对于“列名”,请输入 NAME

  9. 对于“类型”,请接受默认值 VARCHAR2。

  10. 对于“大小”,请输入 80

  11. 单击添加列

  12. 对于“列名”,请输入 WEIGHT

  13. 对于“类型”,请从菜单中选择 NUMBER

  14. 单击确定

    已创建表 PERFORMANCE_PARTS。其名称显示在连接框架中的表下。

    要查看用于创建此表的 CREATE TABLE 语句,请选择 PERFORMANCE_PARTS 并单击选项卡 SQL

另请参见: Oracle SQL Developer User’s Guide(了解有关使用 SQL Developer 创建表的更多信息)

使用 CREATE TABLE 语句创建表

本部分说明如何使用 CREATE TABLE 语句创建 EVALUATIONS 和 SCORES 表。

Example 4-1 中的 CREATE TABLE 语句将创建 EVALUATIONS 表。

Example 4-2 中的 CREATE TABLE 语句将创建 SCORES 表。

在 SQL Developer 的“Connections(连接)”框架中的,如果展开“Tables(表)”,则会看到表 EVALUATIONS 和 SCORES。

示例 4-1 使用 CREATE TABLE 创建 EVALUATIONS 表

CREATE TABLE EVALUATIONS (
  EVALUATION_ID    NUMBER(8,0),
  EMPLOYEE_ID      NUMBER(6,0),
  EVALUATION_DATE  DATE,
  JOB_ID           VARCHAR2(10),
  MANAGER_ID       NUMBER(6,0),
  DEPARTMENT_ID    NUMBER(4,0),
  TOTAL_SCORE      NUMBER(3,0)
);

结果:

Table created.

示例 4-2 使用 CREATE TABLE 创建 SCORES 表

CREATE TABLE SCORES (
  EVALUATION_ID   NUMBER(8,0),
  PERFORMANCE_ID  VARCHAR2(2),
  SCORE           NUMBER(1,0)
);

结果:

Table created.

另请参见: Oracle Database SQL Language Reference(了解有关 CREATE TABLE 语句的信息)

确保表中数据的完整性

要确保表中的数据满足应用程序建模的业务规则,可以使用约束条件和/或应用程序逻辑。

提示:请尽量使用约束条件,而不要使用应用程序逻辑。Oracle 数据库检查所有数据是否遵守约束条件的速度要远远快于应用程序逻辑检查。

另请参见:

关于约束条件

约束条件限制了列可以包含的值。尝试以违反约束条件的方式更改数据将会导致错误,并回退更改。尝试在已填充的表中添加约束条件时,如果该表中的现有数据违反约束条件,则将导致错误。

可以启用和禁用约束条件。默认情况下,创建约束条件时将会启用它们。

提供了以下类型的约束条件:

另请参见:

教程:将约束条件添加到现有表

此教程演示如何使用 SQL Developer 工具和 ALTER TABLE 语句向现有表添加约束条件。

要向现有表添加约束条件,请使用 SQL Developer 工具或 DDL 语句 ALTER TABLE。本主题介绍如何使用这两种方式向在“创建表”中创建的表添加约束条件。

本教程包含几个过程。第一个过程使用“编辑表”工具将 Not Null 约束条件添加到 PERFORMANCE_PARTS 表的 NAMES 列中。其余过程介绍如何使用其他工具添加约束条件;但是,您也可以使用“编辑表”工具来添加相同的约束条件。

注:

在本教程的任何一个步骤之前,您都可以完成以下步骤来查看表具有的约束条件:

  1. 在“Connections(连接)”框架中,选择表的名称。

  2. 在右侧框架中,单击约束条件选项卡。

有关查看表属性和数据的更多信息,请参阅教程:使用 SQL Developer 查看 EMPLOYEES 表属性和数据

使用“编辑表”工具添加非空值的约束的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表列表中,右键单击 PERFORMANCE_PARTS

  4. 在选项列表中,单击编辑

  5. 在“编辑表”窗口中,单击列 NAME

  6. 选择属性 Not Null

  7. 单击确定

    随即向 PERFORMANCE_PARTS 表的 NAME 列添加非空值约束条件。

以下过程使用 ALTER TABLE 语句向 PERFORMANCE_PARTS 表的 WEIGHT 列添加非空值约束条件。

使用 ALTER TABLE 语句添加非 Null 约束条件的步骤:

  1. 如果存在选项卡为 hr_conn 的窗格,请选择该窗格。否则,单击图标 SQL Worksheet ,如“在 SQL Developer 中运行查询”中所示。

  2. 在“Worksheet(工作表)”窗格,键入以下语句:

     ALTER TABLE PERFORMANCE_PARTS
     MODIFY WEIGHT NOT NULL;
    
  3. 单击图标 Run Statement(运行语句)

    该语句即将运行,并对 PERFORMANCE_PARTS 表的 WEIGHT 列添加非空值约束条件。

以下过程使用“添加唯一”工具向 SCORES 表添加唯一约束条件。

使用“添加唯一”工具添加唯一约束条件的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表列表中,右键单击 SCORES

  4. 在选项列表中,选择约束

  5. 在选项列表中,单击添加唯一

  6. 在“Add Unique(添加唯一)”窗口中:

    1. 对于“约束条件名称”,请输入 SCORES_EVAL_PERF_UNIQUE

    2. 对于“列 1”,请从菜单中选择 EVALUATION_ID

    3. 对于“列 2”,请从菜单中选择 PERFORMANCE_ID

    4. 单击应用

  7. 在“确认”窗口中,单击确定

    随即会向 SCORES 表添加一个名为 SCORES_EVAL_PERF_UNIQUE 的唯一约束条件。

以下过程使用“添加主键”工具对 PERFORMANCE_PARTS 表的 PERFORMANCE_ID 列添加主键约束条件。

使用“Add Primary Key(添加主键)”工具添加主键约束条件的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表列表中,右键单击 PERFORMANCE_PARTS

  4. 在选项列表中,选择约束

  5. 在选项列表中,单击添加主键

  6. 在“Add Primary Key(添加主键)”窗口中:

    1. 对于“主键名称”,请输入 PERF_PERF_ID_PK

    2. 对于“列 1”,请从菜单中选择 PERFORMANCE_ID

    3. 单击应用

  7. 在“确认”窗口中,单击确定

    随即会向 PERFORMANCE_PARTS 表的 PERFORMANCE_ID 列添加一个名为 PERF_PERF_ID_PK 的主键约束条件。

以下过程使用 ALTER TABLE 语句对 EVALUATIONS 表的 EVALUATION_ID 列添加主键约束条件。

使用 ALTER TABLE 语句添加主键约束条件的步骤:

  1. 如果存在选项卡为 hr_conn 的窗格,请选择该窗格。否则,单击图标 SQL Worksheet ,如“在 SQL Developer 中运行查询”中所示。

  2. 在“Worksheet(工作表)”窗格,键入以下语句:

     ALTER TABLE EVALUATIONS
     ADD CONSTRAINT EVAL_EVAL_ID_PK PRIMARY KEY (EVALUATION_ID);
    
  3. 单击图标 Run Statement(运行语句)

    该语句即将运行,并对 EVALUATIONS 表的 EVALUATION_ID 列添加主键约束条件。

下列步骤使用“添加外键”工具对 SCORES 表添加两个外键约束条件。

要使用“添加外键”工具添加两个外键约束条件,需执行的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表列表中,右键单击 SCORES

  4. 在选项列表中,选择约束

  5. 在选项列表中,单击添加外键

  6. 在“Add Foreign Key(添加外键)”窗口中:

    1. 对于“约束条件名称”,请输入 SCORES_EVAL_FK

    2. 对于“列名”,从菜单中选择 EVALUATION_ID

    3. 对于“参考表名”,请从菜单中选择评估

    4. 对于“引用列”,请从菜单中选择 EVALUATION_ID

    5. 单击应用

  7. 在“确认”窗口中,单击确定

    随即会向 SCORES 表的 EVALUTION_ID 列添加一个名为 SCORES_EVAL_FK 的外键约束条件,并引用 EVALUATIONS 表的 EVALUTION_ID 列。

    下列步骤对 SCORES 表添加另一个外键约束条件。

  8. 在表列表中,右键单击 SCORES

  9. 在表的列表中,选择 Constraint(约束条件)

  10. 在选项列表中,单击添加外键

    即会打开“添加外键”窗口。

  11. 在“Add Foreign Key(添加外键)”窗口中:

    1. 对于“约束条件名称”,请输入 SCORES_PERF_FK

    2. 对于“列名”,请从菜单中选择 PERFORMANCE_ID

    3. 对于“引用表名称”,请从菜单中选择 PERFORMANCE_PARTS

    4. 对于“引用列”,请从菜单中选择 PERFORMANCE_ID

    5. 单击应用

  12. 在“确认”窗口中,单击确定

    随即会向 SCORES 表的 EVALUTION_ID 列添加一个名为 SCORES_PERF_FK 的外键约束条件,并引用 EVALUATIONS 表的 EVALUTION_ID 列。

以下过程使用 ALTER TABLE 语句对 EVALUATIONS 表的 EMPLOYEE_ID 列添加外键约束条件,并引用 EMPLOYEES 表的 EMPLOYEE_ID 列。

使用 ALTER TABLE 语句添加外键约束条件的步骤:

  1. 如果存在选项卡为 hr_conn 的窗格,请选择该窗格。否则,单击图标 SQL Worksheet ,如“在 SQL Developer 中运行查询”中所示。

  2. 在“Worksheet(工作表)”窗格,键入以下语句:

     ALTER TABLE EVALUATIONS
     ADD CONSTRAINT EVAL_EMP_ID_FK FOREIGN KEY (EMPLOYEE_ID)
     REFERENCES EMPLOYEES (EMPLOYEE_ID);
    
  3. 单击图标 Run Statement(运行语句)

    该语句即运行,并对 EVALUATIONS 表的 EMPLOYEE_ID 列添加外键约束条件,同时引用 EMPLOYEES 表的 EMPLOYEE_ID 列。

以下过程使用“添加检查”工具对 SCORES 表添加检查约束条件。

使用“添加检查”工具添加检查约束条件的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表列表中,右键单击 SCORES

  4. 在选项列表中,选择约束

  5. 在选项列表中,单击添加检查

  6. 在“添加检查”窗口中:

    1. 对于“约束条件名称”,请输入 SCORE_VALID

    2. 对于“检查条件”,请输入 score >= 0 and score <+ 9

    3. 对于“状态”,请接受默认值 ENABLE

    4. 单击应用

  7. 在“确认”窗口中,单击确定

    随即会向 SCORES 表添加一个名为 SCORE_VALID 的检查约束条件。

另请参见:

教程:使用“插入行”工具在表中添加行

本教程介绍如何使用“插入行”工具将六个已填充的行添加到 PERFORMANCE_PARTS 表中。

使用“插入行”工具在 PERFORMANCE_PARTS 表中添加行的步骤:

  1. 在“Connections(连接)”框架中,展开 hr_conn。

  2. 在方案对象类型的列表中,展开

  3. 在表的列表中,选择 PERFORMANCE_PARTS

  4. 在右侧框架中,单击数据选项卡。

    即会出现“数据”窗格,其中显示 PERFORMANCE_PARTS 表的列名,此时表中没有行。

  5. 在“数据”窗格中,单击插入行图标。

    即会出现一个各列为空的新行。行号周围的绿色边框指示尚未提交插入。

  6. 单击列标题 PERFORMANCE_ID 下的单元。

  7. 键入 PERFORMANCE_ID 的值:WM

  8. Tab 键或单击列标题 NAME 下的单元。

  9. 键入 NAME 的值:Workload Management

  10. Tab 键或单击列标题 WEIGHT 下的单元。

  11. 键入 WEIGHT 的值:0.2

  12. Enter 键。

  13. 重复步骤 512 以添加第二行,并填充下列值:

    • 对于 PERFORMANCE_ID,键入 BR

    • 对于 NAME,键入 Building Relationships

    • 对于 WEIGHT,键入 0.2

  14. 通过重复步骤 512 以添加第三行,并填充下列值:

    • 对于 PERFORMANCE_ID,键入 CF

    • 对于 NAME,键入 Customer Focus

    • 对于 WEIGHT,键入 0.2

  15. 重复步骤 512 以添加第四行,并填充下列值:

    • 对于 PERFORMANCE_ID,键入 CM

    • 对于 NAME,键入 Communication

    • 对于 WEIGHT,键入 0.2

  16. 重复步骤 512 以添加第五行,并填充下列值:

    • 对于 PERFORMANCE_ID,键入 TW

    • 对于 NAME,键入 Teamwork

    • 对于 WEIGHT,键入 0.2

  17. 重复步骤 512 以添加第六行,并填充下列值:

    • 对于 PERFORMANCE_ID,键入 RO

    • 对于 NAME,键入 Results Orientation

    • 对于 WEIGHT,键入 0.2

  18. 单击提交更改图标。

    行号周围的绿色边框消失。

    在“数据”窗格下方是“消息 - 日志”标签。

  19. 检查消息 Commit Successful 的 "Messages - Log" 窗格。

  20. 在数据窗格中,检查新的行。

另请参阅:关于 INSERT 语句

教程:在数据窗格中更改表中的数据

本教程说明如何更改“数据”窗格中 PERFORMANCE_PARTS 表中的三个 WEIGHT 值。

在“教程:使用插入行工具向表添加行”中填充了 PERFORMANCE_PARTS 表。

使用“数据”窗格更改 PERFORMANCE_PARTS 表中数据的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表的列表中,选择 PERFORMANCE_PARTS

  4. 在右侧框架中,单击数据选项卡。

  5. 在数据窗格中,在 NAME 为“Workload Management(工作量管理)”的行中:

    1. 单击 WEIGHT 值。

    2. 输入值 0.3

    3. Enter 键。

      行号左侧显示一个星号,以指示尚未提交更改。

  6. NAME 为“建立关系”的行中:

    1. 单击 WEIGHT 值。

    2. 输入值 0.15

    3. Enter 键。

      行号左侧显示一个星号,以指示尚未提交更改。

  7. NAME 为“以客户为中心”的行中:

    1. 单击 WEIGHT 值。

    2. 输入值 0.15

    3. Enter 键。

      行号左侧显示一个星号,以指示尚未提交更改。

  8. 单击提交更改图标。

    行号左侧的星号将消失。

  9. 在“数据”窗格下,检查消息 Commit Successful 的“消息 - 日志”窗格。

  10. 在数据窗格中,检查新的数据。

另请参阅:关于 UPDATE 语句

教程:使用“删除所选行”工具删除表中的行

本教程介绍如何使用“删除所选行”工具从 PERFORMANCE_PARTS 表中删除行。

在“教程:使用插入行工具向表添加行”中填充了 PERFORMANCE_PARTS 表。

使用“删除选定行”工具从 PERFORMANCE_PARTS 中删除行的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表的列表中,选择 PERFORMANCE_PARTS

  4. 在右侧框架中,单击数据选项卡。

  5. 在“Data(数据)”窗格中,单击 NAME 为“Results Orientation(结果方向)”的行。

  6. 单击 Delete Selected Rows 图标。

    行号周围会出现红色边框,指示尚未提交删除操作。

  7. 单击提交更改图标。

    即会删除该行。

  8. 在“数据”窗格下,检查消息 Commit Successful 的“消息 - 日志”窗格。

注:如果您删除表中的所有行,空表仍然存在。要删除表,请参阅“删除表”。

另请参见:关于 DELETE 语句

管理索引

您可以基于表的一个或多个列创建索引,以加快对此表执行 SQL 语句的速度。在正确使用的前提下,使用索引是减少磁盘输入/输出 (input/output,I/O) 的主要方式。

在表中定义主键时:

例如,在“教程:对现有表添加约束条件”中,您对 EVALUATIONS 表的 EVALUATION_ID 列添加了主键约束条件。因此,如果在 SQL Developer 连接框架中选择 EVALUATIONS 表,并单击“索引”选项卡,“索引”窗格将在 EVALUATION_ID 列上显示唯一索引。

另请参见:

有关索引的更多信息:

教程:使用“创建索引”工具添加索引

本教程介绍如何使用“创建索引”工具将索引添加到 EVALUATIONS 表。

EVALUATIONS 表是在 Example 4-1 中创建的。

要创建索引,请使用 SQL Developer 的“创建索引”工具或 DDL 语句 CREATE INDEX。对应的 DDL 语句为:

CREATE INDEX EVAL_JOB_IX
ON EVALUATIONS (JOB_ID ASC) NOPARALLEL;

使用“创建索引”工具向 EVALUATIONS 表中添加索引的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表列表中,右键单击 EVALUATIONS

  4. 在选项列表中,选择索引

  5. 在选项列表中,选择创建索引

  6. 在“Create Index(创建索引)”窗口中:

    1. 对于“方案”,请接受默认值 HR。

    2. 对于“名称”,请键入 EVAL_JOB_IX

    3. 如果未显示“定义”窗格,请选择选项卡定义

    4. 在“定义”窗格的“索引类型”中,从菜单中选择唯一

    5. 单击图标 Add Expression

      此时将显示“EMPLOYEE_ID”表达式(顺序为 <Not Specified>)。

    6. 在 EMPLOYEE_ID 上,键入 JOB_ID

    7. 对于“订单”,从菜单中选择 ASC (升序)。

    8. 单击确定

      现在 EVALUATIONS 表的 JOB_ID 列上将具有一个名为 EVAL_JOB_IX 的索引。

另请参阅: Oracle Database SQL Language Reference(了解有关 CREATE INDEX 语句的信息)

教程:使用“编辑索引”工具更改索引

本教程介绍如何使用“编辑索引”工具逆转 EVAL_JOB_IX 索引的排序顺序。

要更改索引,请使用 SQL Developer 的“编辑索引”工具,或者用 DDL 语句 DROP INDEX 和 CREATE INDEX。

对应的 DDL 语句为:

DROP INDEX EVAL_JOB_ID;

CREATE INDEX EVAL_JOB_IX
ON EVALUATIONS (JOB_ID DESC) NOPARALLEL;

使用“编辑索引”工具逆转索引 EVAL_JOB_IX 索引的排序顺序的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开索引

  3. 在索引列表中,右键单击 EVAL_JOB_IX

  4. 在选项列表中,单击编辑

  5. 在“编辑索引”窗口中,将顺序更改为 DESC

  6. 单击确定

  7. 在“确认替换”窗口中,单击

另请参阅: Oracle Database SQL Language Reference(了解有关 ALTER INDEX 语句的信息)

教程:删除索引

本教程介绍如何使用连接框架和“删除”工具删除 EVAL_JOB_IX 索引。

要删除索引,请使用 SQL Developer Connections 框架和删除工具,或使用 DDL 语句 DROP INDEX。对应的 DDL 语句为:

DROP INDEX EVAL_JOB_ID;

要删除 EVAL_JOB_IX 索引,请执行以下操作:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开索引

  3. 在索引列表中,右键单击 EVAL_JOB_IX

  4. 在选项列表中,单击删除

  5. 在 "Drop" 窗口中,单击 Apply

  6. 在“确认”窗口中,单击确定

另请参见: Oracle Database SQL Language Reference(了解有关 DROP INDEX 语句的信息)

删除表

要删除表,请使用 SQL Developer 连接框架和删除工具,或使用 DDL 语句 DROP TABLE。

注意:请勿删除在“创建表”中创建的任何表,因为后续教程还需要使用它们。如果您要练习删除表,请创建一些简单的表,然后删除它们。

使用“删除”工具删除表的步骤:

  1. 在 "Connections"(连接)框架中,展开 hr_conn

  2. 在方案对象类型的列表中,展开

  3. 在表列表中,右键单击要删除的表的名称。

  4. 在选项列表中,选择

  5. 在选项列表中,单击删除

  6. 在 "Drop" 窗口中,单击 Apply

  7. 在“确认”窗口中,单击确定

另请参阅: Oracle Database SQL Language Reference 以了解有关语句 DROP TABLE 的信息