oracle入门07

创建与管理表

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

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

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

序列: 提供有规律的数值

索引:提高查询效率

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

 

Oracle数据库中的表

1、 用户自定义表

表名和列名的命名规范:

l             必须以字母开头

l             必须在 1–30 个字符之间

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

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

l             必须不能是Oracle 的保留字

 

创建表必须具备:

l        必须具备:

•     CREATE TABLE权限

•     存储空间

l       必须指定:

•     表名

•     列名, 数据类型, 尺寸

创建表的语法

      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;

OBJECT_TYPE

-------------------

SEQUENCE

TABLE

INDEX

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

SQL> select * from user_catalog;

 

TABLE_NAME              TABLE_TYPE

------------------------------ -----------

USESS                       TABLE

ABC                          TABLE

DEPT                        TABLE

EMP                         TABLE

SALGRADE                 TABLE

PRODUCT_SEQ             SEQUENCE

ORDERS_SEQ               SEQUENCE

ORDERITEM_SEQ          SEQUENCE

USERS                       TABLE

PRODUCT                   TABLE

ORDERS                     TABLE

ORDERITEM                TABLE

TMP                         TABLE

PAGES                       TABLE

STUDENT                   TABLE

COURSE                     TABLE

SC                            TABLE

TEST                         TABLE

 

18 rows selected

 

用户自定表

 

 

使用 ALTER TABLE 语句可以:

l             追加新的列

l             修改现有的列

l             为新追加的列定义默认值

l             删除一个列

 

使用 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;

Table created

SQL> commit; //事务提交

Commit complete

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

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

Table altered

SQL> commit;

SQL> desc customer;

Name Type       Nullable Default Comments

-------- ------------ -------- ------- --------

USERNAME VARCHAR2(20) Y                       

PASSWORD VARCHAR2(20)                          

NAME VARCHAR2(20)                          

ADDRESS VARCHAR2(20) Y                       

ZIP     NUMBER(6) Y                        

EMAIL VARCHAR2(20) Y   

//修改某个字段的类型

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

 

Table altered

 

SQL> commit;

 

Commit complete

 

SQL> desc customer;

Name Type       Nullable Default Comments

-------- ------------ -------- ------- --------

USERNAME VARCHAR2(20) Y                       

PASSWORD VARCHAR2(20)                          

NAME VARCHAR2(20)                          

ADDRESS VARCHAR2(20) Y                       

ZIP     NUMBER(6) Y                       

EMAIL NUMBER(4) Y     

//删除某个字段

SQL> alter table customer drop column email;

Table altered

SQL> commit;

Commit complete

SQL> select * from customer;

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

SQL> alter table customer rename column address to addr;

Table altered

SQL> commit;

 

删除表

l        数据和结构都被删除

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

l        所有相关索引被删除

l        DROP TABLE 语句不能回滚

 

修改对象的名称

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

l        必须是对象的拥有者

//修改对象的名称操作

SQL> rename customer to customers;

清空表

l        TRUNCATE TABLE 语句:

•         删除表中所有的数据

•         释放表的存储空间

l        TRUNCATE语句不能回滚

l        可以使用 DELETE 语句删除数据

//清空表的操作

SQL> truncate table customers;

 

总结:您已经学会如何使用DDL语句创建, 修改, 删除, 和重命名表.

语句           描述

CREATE TABLE 创建表

ALTER TABLE 修改表结构

DROP TABLE   删除表

RENAME        重命名表

TRUNCATE      删除表中的所有数据,并释放存储空间

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值