sql - 创建表的最佳实践 DDL 是什么?包含所有对象的单个语句还是创建和更改许多单个语句?

标签 sql oracle ddl

是否有最接近这些示例之一的最佳实践?

CREATE TABLE TABLE1 
(
ID   NUMBER(18)     CONSTRAINT TABLE1_PK PRIMARY KEY,
NAME VARCHAR2(10)   CONSTRAINT NAME_NN NOT NULL
);

CREATE TABLE TABLE1 
(
ID   NUMBER(18),
NAME VARCHAR2(10)   CONSTRAINT NAME_NN NOT NULL
);

ALTER TABLE TABLE1  ADD CONSTRAINT TABLE1_PK
PRIMARY KEY (ID)
USING INDEX (CREATE UNIQUE INDEX IDX_TABLE1_PK ON TABLE1 (ID));

一般来说,这两种情况都会产生更好的结果吗?第一个选项更具可读性,但也许有原因使后者更可取。

最佳答案

绝对是个人喜好。我更喜欢在单个 CREATE TABLE 语句中做尽可能多的事情,因为我发现它更简洁。大多数我需要的东西都在那里描述。

有时这是不可能的。假设你有两个表,每个表都有引用,或者你想先加载一个包含一堆数据的表,所以你在加载表之后添加额外的索引。

您会发现许多从 DB 创建模式的工具会将它们分开(主要是因为它总是正确的 -- 定义所有表,然后定义所有关系)。

但就个人而言,如果可行的话,我发现将所有内容集中在一个地方是最好的。

关于sql - 创建表的最佳实践 DDL 是什么?包含所有对象的单个语句还是创建和更改许多单个语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292859/

相关文章:

oracle - 征求意见: Accent marks/diacritics in primary key

sql - 授予 Oracle 包的权限?

sql - Oracle 如何将生成的列添加到选择 *

sql - 使用 VIEW 进行 SELECT 操作可以提高性能吗?

php - 上传的图片不保存在数据库中

mysql - 在 where 中使用自定义函数左连接过滤空值

sql - Oracle/PostgreSQL 中的序列在插入语句中没有 ID

postgresql - 将自动增量列添加到按日期排序的现有表中

php - Yii2 按关系排序

mysql - 使用子查询和或进行内连接