Oracle之创建表、序列、索引和视图

本文详细介绍了如何在Oracle数据库中创建、修改和删除表,包括主键、唯一性、非空、检查和外键约束。此外,还讲解了序列的创建与使用,以及索引对查询性能的提升。同时,讨论了视图的概念,以及闪回数据归档在历史数据查询中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要包括:

   · 创建、修改和删除表

   · 如何创建并使用序列:序列可以生成一系列数字

   · 如何创建并使用索引:索引可以提高查询的性能

   · 如何创建并使用视图:视图是预定义的查询

   · 闪回数据归档将一段时间内对表所做的改变保存


一、 表

1. 创建表

可以使用 CREATE TABLE 语句创建表,CREATE TABLE 语句的简化语法如下:

CREATE [GLOBAL TEMPORARY] TABLE table_name 
(

   column_name type [CONSTRAINT constraint_def DEFAULT default_exp]

   [, column_name type [CONSTRAINT constraint_def DEFAULT default_exp] ... ]

)

[ON COMMIT [DELETE | PRESERVE] ROWS]

[TABLESPACE tab_space];

注:ON COMMIT 控制临时表中行的有效期,DELETE 说明这些行在事务结束时被删除

       PRESERVE 说明这些行被保留到用户会话结束时才被删除

       如果对临时表没有指定 ON COMMIT 选项,那么默认值是 DELETE

2. 创建表的同时创建约束

2.1 五种具体的约束:
   · 主键    PRIMARY KEY
                这个字段是非空的 并且是唯一的
                一个表的主键只能有一个 
   · 唯一    UNIQUE 

                这个字段的值 是不能重复的     

   · 非空    NOT NULL
                这个字段的值  不能是NULL值 
   · 检查    CHECK
                这个字段的值 必须符合检查条件     
   · 外键    REFERENCES        
                on delete cascade  
                on delete set  null

2.2 列级别约束:在定义表的一列时,直接在这一列的后面加约束限制

CRAETE TABLE orders

(

   id INTEGER CONSTRAINT orders_pk PRIMARY KEY

);

2.3  表级约束:在定义完所有的列之后,再选择某些列加约束

CREATE TABLE orders2 

(

   id INTEGER,

   CONSTRAINT orders2_pk PRIMARY KEY(id)

);

2.4 外键约束

外键约束涉及到两张表   一张叫父表  (主表), 另一张叫子表   (从表)    
定义了外键的表就是子表,如果两张表建立了主外键关系,则外键字段的值
要么引用自父表,要么是空值

CREATE TABLE products

(
   product_id INTEGER CONSTRAINT products_pk PRIMARY KEY
   product_type_id INTEGER CONSTRAINT products_fk_product_types
   REFERENCES product_types(product_type_id)

);

2.5 创建临时表

CREATE GLOBAL TEMPORARY TABLE order_satatus_temp

(

   id INTEGER,

   status VARCHAR2(10),

   last_modified DATE DEFAULT SYSDATE

)

ON COMMIT PRESERVE ROWS;     --  保留到回话结束时才会被删除

3. 获得有关表的信息

   · user_tables     系统里所有表的信息,需要 DBA 权限才能查询

   · all_tables        当前用户下能够查询的所有表的信息

   · dba_tables      当前用户下的所有表的信息

4. 获取表中列的信息

从 user_tab_columns 视图中可以获得有关表中各列的信息

    all_tab_columns

5. 修改表

ALTER TABLE 语句可以用于对表进行修改,ALTER TABLE 语句可以执行以下任务:

   · 添加、修改或删除列

   · 添加或删除约束

   · 启用或禁用约束

5.1 添加列

范例:向 order_status2 表中添加名为 modified_by 的列,数据类型是 INTEGER

ALTER TABLE order_status2 ADD modified_by INTEGER;

范例:向 order_status2 表中添加名为 initially_created 列

ALTER TABLE order_status2 ADD initially_created DATE DEFAULT SYSDATE NOT NULL;

5.2 添加虚拟列

Oracle 11g 引入了虚拟列,虚拟列只引用表中已有的其他列

范例:向 salary_grades 表中添加名为 average_salary 的虚拟列

ALTER TABLE salary_grades ADD (average_salary AS ((low_salary + high_salary)/2));

5.3 修改列

下面列出了使用 ALTER TABLE 语句可以对列进行修改的内容:

   · 修改列的长度(条件是该列的数据类型的长度可以修改,如 CHAR 或 VARCHAR2) 

   · 修改数值列的精度

   · 修改列的数据类型

   · 修改列的默认值

5.4 修改列的长度

范例:将 order_status2.status 列的最大长度增加为 15 个字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值