Oracle DB 使用DDL语句创建和管理表

 

• 对主要的数据库对象进行分类
• 查看表结构
• 列举列可以使用的数据类型
• 创建简单的表
• 说明创建表时如何创建约束条件
• 描述方案对象如何工作

• 数据库对象
– 命名规则
• CREATE TABLE语句:
– 访问另一个用户的表
– DEFAULT选项
• 数据类型
• 约束条件概览:NOT NULL、UNIQUE、PRIMARY KEY、
FOREIGN KEY、CHECK约束条件
• 使用子查询创建表
• ALTER TABLE
– 只读表
• DROP TABLE语句

  • 数据库对象

Oracle DB 可以包含多种数据结构。在数据库设计中应对每种结构加以概述,以便可在 数据库开发的构建阶段创建数据库结构。
• 表:用于存储数据
• 视图:一个或多个表中数据的子集
• 序列:用于生成数字值
• 索引:提高某些查询的性能
• 同义词:给出对象的替代名称
Oracle 表结构
• 在任何时候都可以创建表,即使用户正在使用数据库时也是如此。
• 无需指定表的大小。表的大小最终由全部分配给数据库的空间量确定。但是,需要 估计一个表将要使用的空间大小,这一点非常重要。
• 可以联机修改表结构。

  • 命名规则
表名和列名必须满足以下条件:
• 以字母开头
• 长度为1-30 个字符
• 只包含A-Z、a-z、0-9、_、$ 和#
• 不与同一用户拥有的其它对象重名
• 不是Oracle Server 的保留字

应根据命名任意Oracle DB 对象的标准规则来命名数据库表和列:
• 表名和列名必须以字母开头,长度必须为1-30 个字符。
• 名称中只能包含字符A-Z、a-z、0-9、_(下划线)、$ 和#(这两个字符是合法字符, 但建议不要使用它们)。
• 不能与同一Oracle Server 用户拥有的其它对象重名。
• 不能是Oracle Server 的保留字。
- 还可以使用 加引号的标识符来表示对象名称。加引号的标识符以双引号(“”) 开始 和结束。如果使用加双引号的标识符为方案命名,那么,只要引用该对象,就必
须使用双引号。加引号的标识符可以是保留字,不过建议不要这样做。
命名准则
对于表和其它数据库对象,应使用描述性名称。
注:名称不区分大小写,例如,EMPLOYEES与eMPloyees或eMpLOYEES被认为是 同一名称。但是,加引号的标识符区分大小写。

  • CREATE TABLE语句
• 必须具有以下项才能使用此语句:
– CREATE TABLE权限
– 一个存储区
CREATE TABLE [schema.]table
(column datatype[DEFAULT expr][, ...]);
• 可以指定:
– 表名称
– 列名、列数据类型和列大小


通过执行SQL CREATE TABLE语句可以创建用于存储数据的表。此语句是一条DDL 语 句,DDL 语句是SQL 语句的子集,用于创建、修改或删除Oracle DB 结构。这些语句会 对数据库产生直接的影响,它们还会在数据字典中记录信息。
要创建一个表,用户必须具有CREATE TABLE权限和一个用于在其中创建对象的存储区。
数据库管理员(DBA) 可以使用数据控制语言(DCL) 语句为用户授权。
在该语法中:
schema 与所有者的姓名相同
table 是表名称
DEFAULT expr 指定当INSERT语句中省略了值时所使用的默认值语句
column 是列名称
datatype 是列的数据类型和长度

  • 引用另一个用户的表
• 在用户方案中没有属于其他用户的表。
• 应使用所有者姓名作为那些表的前缀。


方案是由数据或方案对象构成的一组逻辑结构。方案由数据库用户拥有,而且与该用户 具有相同的名称。每个用户都拥有一个方案。
方案对象可使用SQL 来创建和操作;方案对象包括表、视图、同义词、序列、存储过程、 索引、集群和数据库链接。
如果某个表不属于该用户,则必须将所有者的姓名作为该表的前缀。例如,假设存在名为 USERA和USERB的两个方案,每个方案都有一个EMPLOYEES表,如果USERA要访问 属于USERB的EMPLOYEES表,USERA就必须将USERB方案名作为该表名的前缀:
SELECT * FROM userb.employees;
如果USERB要访问属于USERA的EMPLOYEES表,USERB就必须将USERA的方案名 作为该表名的前缀:
SELECT * FROM usera.employees;

  • DEFAULT选项
• 指定插入过程中列的默认值。
... hire_date DATE DEFAULT SYSDATE, ...
• 文字值、表达式或SQL 函数都是合法值。
• 其它列的名称或假列是非法值。
• 默认数据类型必须与列的数据类型相匹配。

CREATE TABLE hire_dates (id  NUMBER(8), hire_date DATE DEFAULT SYSDATE);

在定义表时,可以使用DEFAULT选项指定列的默认值。当插入的行中没有某列的相应值 时,使用此选项可以防止将空值输入到列中。默认值可以是文字值、表达式或SQL 函数 (例如SYSDATE或USER),但是该值不能是其它列或假列的名称(例如NEXTVAL或 CURRVAL) 。默认表达式必须与列的数据类型相匹配。
请看如下示例:
INSERT INTO hire_dates values(45, NULL);
以上语句将插入空值而非默认值。
INSERT INTO hire_dates(id) values(35);
以上语句将在HIRE_DATE列中插入SYSDATE。

  • 创建表
• 创建表:
CREATE TABLE dept
(deptno  NUMBER(2),
dname  VARCHAR2(14),
loc  VARCHAR2(13),
create_date DATE DEFAULT SYSDATE);
• 确认表创建:
DESCRIBE dept

示例中创建的DEPT表包含以下四列:DEPTNO、DNAME、LOC和CREATE_DATE。
CREATE_DATE列具有默认值。如果没有为INSERT语句提供值,则会自动插入系统日期。
要确认该表是否已创建,请运行DESCRIBE命令。
因为创建表的命令是一条DDL 语句,所以在执行该语句后会自动提交。
注:可以通过查询数据字典来查看你拥有的表列表。例如:
select table_name from user_tables
使用数据字典视图,还可以查找有关其它数据库对象(例如视图、索引等)的信息。

  • 数据类型

在指定表的列时,需要提供列的数据类型。下面是几种可用的数据类型:
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值