创建表

简介: 一、官档 BOOK → Database SQL Language Reference → 16 SQL Statements: CREATE SYNONYM to CREATE TRIGGER → CREATE TABLE二、建表原则 1、表名尽量设置有意义的名字,简洁明了 2、选...

一、官档

  • BOOK → Database SQL Language Reference → 16 SQL Statements: CREATE SYNONYM to CREATE TRIGGER → CREATE TABLE

二、建表原则

1、表名尽量设置有意义的名字,简洁明了
2、选择字段的原则
3、最频繁的字段放在越前面
4、很多为NULL的字段放在最后
5、主键要放在最前面

三、语法(heap organized tables)

1、普通建表

CREATE TABLE <表名> (
    <col1> <type1>, --普通
    <col2> <type2> PRIMARY KEY, --主键
    <col3> <type3> NOT NULL, --不为空
    <col4> <type4> UNIQUE, --唯一
    <col5> <type5> DEFAULT(<默认值>), --默认值
    <col6> <type6>,
    <col7> <type7>,
    ... ...
    <coln> <typen>
    --添加表约束
    CONSTRAINT CK_<col6> CHECK(<限定内容>) --添加条件约束,例如:长度>10:LENGTH(<列名6>)>10
    CONSTRAINT PK_<col2> PRIMARY KEY --主键约束
    CONSTRAINT FK_<表名缩写>_<列名7> FOREIGN KEY(<col7>) REFERENCES <从表名>(<从表主键>)    --外键约束
    CONSTRAINT UK_<col4> UNIQUE(<列名4>)    --唯一键约束
) tablespace <tablespace_name>
2、使用子查询建表

CREATE TABLE table [(column, column...)]
AS subquery;

四、约束非空(NOT NULL)

1、约束:顾名思义,所约束的列不能为NULL值。否则就会报错

2、唯一(UNIQUE)约束:在表中每一行中所定义的这列或这些列的值都不能相同。必须保证唯一性。否则就会违法约束条件。

3、主键(PRIMARY KEY)约束:唯一的标识表中的每一行,不能重复,不能为空。 创建主键或唯一约束后,ORACLE会自动创建一个与约束同名的索引(UNIQUENES为UNIQUE唯一索引)。需要注意的是:每个表只能有且有一个主键约束。

4、外键(FOREIGN KEY)约束:用来维护从表(Child Table)和主表(Parent Table)之间的引用完整性. 外键约束是个有争议性的约束,它一方面能够维护数据库的数据一致性,数据的完整性。防止错误的垃圾数据入库; 另外一方面它会增加表插入、更新等SQL性能的额外开销,不少系统里面通过业务逻辑控制来取消外键约束。例如在数据仓库中,就推荐禁用外键约束。

5、条件(CHECK)约束:表中每行都要满足该约束条件。条件约束既可以在表一级定义也可以在列一级定义。在一列上可以定义任意多个条件约束。

6、DEFAULT

 a) 在插入的过程中,为列指定一个默认值。

 b) 字符串, 算数表达式, 或SQL 函数都是合法的

 c) 其它列的列名和伪列是非法的

 d) 默认值必须满足列的数据类型定义

五、约束命名规范

约束名称建议自己定义一套命名规则,否则使用系统生成的约束名,很难能把它和对应的表、字段联系起来。

非空约束     NN_表名_列名
唯一约束     UK_表名_列名
主键约束     PK_表名
外键约束     FK_表名_列名
条件约束     CK_表名_列名
默认约束     DF_表名_列名

目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
学习MySQL中DDL语句的修改字段与删除字段,删除表
学习MySQL中DDL语句的修改字段与删除字段,删除表
|
29天前
|
关系型数据库 MySQL
创建表
创建表。
12 2
|
8月前
|
数据库
建表与数据准备
自己新建数据库:
17 0
|
存储 SQL 数据库
数据表
数据表
120 0
数据库——创建数据库+创建表与主键
数据库——创建数据库+创建表与主键
数据库——创建数据库+创建表与主键
|
存储 分布式计算 OLAP
创建表组和表|学习笔记
快速学习 创建表组和表
|
Java 关系型数据库 MySQL
添加和删除数据表(table)|学习笔记
快速学习添加和删除数据表(table)
141 0
|
存储 SQL 关系型数据库
二、DDL 数据表
二、DDL 数据表
90 0
|
Java 分布式数据库 开发者
创建表|学习笔记
快速学习 创建表
111 0
|
分布式数据库 开发者 Hbase
创建表 | 学习笔记
快速学习创建表。