现在的位置: 首页 > 综合 > 正文

oracle总结之八———DDL语句

2013年07月05日 ⁄ 综合 ⁄ 共 2673字 ⁄ 字号 评论关闭

创建与管理表

数据库中对象:有表、视图、索引、序列、同义词等。

表:基本的数据存储的集合,由行与列组成

视图:从表中抽出的逻辑上相关的数据集合。

序列提供有规律的数值

索引:提高查询效率

同义词:给对象起的别名。

Oracle数据库中的表

1、 用户自定义表

      表名和列名的命名规范:

必须以字母开头

必须在 1–30 个字符之间

必须只能包含 A–Z, a–z, 0–9, _, $, 和 #

必须不能和用户定义的其他对象重名 

必须不能是Oracle 的保留字

  创建表必须具备

必须具备:CREATE TABLE权限和 存储空间

  必须指定:

     表名列名数据类型尺寸

  创建表的语法

    CREATE TABLE [schema.]table

 (column datatype [DEFAULT expr][, ...]);

  数据类型如下:

数据类型 描述

VARCHAR2(size) 可变长字符数据

CHAR(size)   定长字符数据

NUMBER(p,s)  可变长数值数据

DATE  日期型数据

LONG  可变长字符数据,最大可达到2G

CLOB 字符数据,最大可达到4G

RAW (LONG RAW) 原始的二进制数据

BLOB 二进制数据,最大可达到4G 

BFILE 存储外部文件的二进制数据,最大可达到4G 

ROWID 行地址

创建表的分析:

       在数据库中必须遵循一定的规范 这些规范称为范式.目前关系数据库有6种方式,数据库只需要满足3NF即可,需要使用范式对数据库中表进行处理.

下面我以学生信息为例分析:

 学号,学生姓名,出生日期,学生性别,所属班级,所属院系,系主任姓名,课程编号,成绩

 分析:

   学号:sid             数据类型 varchar2

   学生姓名:sname

   出生日期:sbirth    date

   学生性别:ssex       

   所属班级:sclass

   所属院系:sdep

   系主任姓名:dname

   课程编号:cid

   成绩 grade         number(5,2)

创建学生信息表

根据如上信息可以创建存储的表 学生信息表  包含以上的全部信息,但非规范。

分析设计过程:

       必须满足3NF范式 但前提必须满足12NF

1、 属性不可再分(1NF) ==è一对多关系

学生信息表:sidsname,sbirth,ssex,sclass,sdep,dname

成绩表: sid cid grade

2、 (前提必须满足1NF )表中的所有非主属性都完全依赖于任一候选键。

Sid->Sname

sid->sbirth

sid->ssex

sid->sclass 

sdep->dname

--à其他普通属性不应当存在部分依赖于主要属性->此普通属性应当被分离到新的表中去

s(sid,sname,sbirth,ssex,sclass,sdep)

d(sdep,dname)

g(sid,cid,grade)

3、 (前提满足2NF)表中的每一个非主属性都不传递依赖于任何候选键。

s(sid,sname,sbirth,ssex,sclass,sdep)

d(sdep,dname)

g(sid,cid,grade)

在满足2NF后 分析:

Sid->sclass 

Sclass->sdep 

Sid->sdep

s(sid,sname,sbirth,ssex,sclass)

cd(sclass,sdep)

d(sdep,dname)

g(sid,cid,grade)

2、 Oracle数据字典

2.1查询用户自定义表

//查询用户定义的表的名称

SQL> select table_name from user_tables;

//查询用户自定表的详细特征

SQL> select * from user_tables

//等效于

SQL> select * from tabs;

2.2查询用户定义的各种数据库对象

     SQL> select distinct object_type from user_objects; 

2.3 查看用户定义的表、视图、序列和同义词

     SQL> select * from user_catalog;

用户自定表

    使用 ALTER TABLE 语句可以:

追加新的列

修改现有的列

为新追加的列定义默认值

删除一个列

使用 ALTER TABLE 语句追加修改或删除列的语法.

追加

ALTER TABLE table 

ADD  (column datatype [DEFAULT expr]  [, column datatype]...);

修改

ALTER TABLE table 

MODIFY  (column datatype [DEFAULT expr]  [, column datatype]...);

删除

ALTER TABLE table 

DROP column   (column_name);

修改列的名称

ALTER TABLE table_name rename column old_column_name 

to new_column_name 

案例:

//采用子查询创建customer表 表的结构域users表完全一致

          SQL> create table customer as select * from users; 

//customer表添加新的列 email 类型varchar2(20)

         SQL> alter table customer add email varchar2(20);

    //修改某个字段的类型

         SQL> alter table customer modify email number(4);

        //删除某个字段

        SQL> alter table customer drop column email;

    //修改表的某个字段的名称

       SQL> alter table customer rename column address to addr;

删除表

数据和结构都被删除

所有正在运行的相关事物被提交

所有相关索引被删除

DROP TABLE 语句不能回滚

修改对象的名称

执行RENAME语句改变表, 视图, 序列, 或同义词的名称

必须是对象的拥有者

//修改对象的名称操作

抱歉!评论已关闭.