创建与管理表
数据库中对象:有表、视图、索引、序列、同义词等。
表:基本的数据存储的集合,由行与列组成
视图:从表中抽出的逻辑上相关的数据集合。
序列: 提供有规律的数值
索引:提高查询效率
同义词:给对象起的别名。
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范式 但前提必须满足1,2NF
1、 属性不可再分(1NF) ==一对多关系
学生信息表:Sid,sname,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 语句可以:
追加新的列
修改现有的列
为新追加的列定义默认值
删除一个列
使用 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;
删除表
数据和结构都被删除
所有正在运行的相关事物被提交
所有相关索引被删除
DROP TABLE 语句不能回滚
修改对象的名称
执行RENAME语句改变表, 视图, 序列, 或同义词的名称
必须是对象的拥有者
//修改对象的名称操作
SQL> rename customer to customers;
清空表
TRUNCATE TABLE 语句:
• 删除表中所有的数据
• 释放表的存储空间
TRUNCATE语句不能回滚
可以使用 DELETE 语句删除数据
//清空表的操作
SQL> truncate table customers;
总结:您已经学会如何使用DDL语句创建, 修改, 删除, 和重命名表.
语句 描述
CREATE TABLE 创建表
ALTER TABLE 修改表结构
DROP TABLE 删除表
RENAME 重命名表
TRUNCATE 删除表中的所有数据,并释放存储空间
数据库中对象:有表、视图、索引、序列、同义词等。
表:基本的数据存储的集合,由行与列组成
视图:从表中抽出的逻辑上相关的数据集合。
序列: 提供有规律的数值
索引:提高查询效率
同义词:给对象起的别名。
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范式 但前提必须满足1,2NF
1、 属性不可再分(1NF) ==一对多关系
学生信息表:Sid,sname,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 语句可以:
追加新的列
修改现有的列
为新追加的列定义默认值
删除一个列
使用 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;
删除表
数据和结构都被删除
所有正在运行的相关事物被提交
所有相关索引被删除
DROP TABLE 语句不能回滚
修改对象的名称
执行RENAME语句改变表, 视图, 序列, 或同义词的名称
必须是对象的拥有者
//修改对象的名称操作
SQL> rename customer to customers;
清空表
TRUNCATE TABLE 语句:
• 删除表中所有的数据
• 释放表的存储空间
TRUNCATE语句不能回滚
可以使用 DELETE 语句删除数据
//清空表的操作
SQL> truncate table customers;
总结:您已经学会如何使用DDL语句创建, 修改, 删除, 和重命名表.
语句 描述
CREATE TABLE 创建表
ALTER TABLE 修改表结构
DROP TABLE 删除表
RENAME 重命名表
TRUNCATE 删除表中的所有数据,并释放存储空间
发表评论
-
oracle入门12
2011-04-17 16:37 563存储过程 存储过程是一种命名pl/sql程序块,它可以被 ... -
oracle入门11
2011-04-17 16:37 595游标: 游标(cursor)可以被看作指向结果集(a se ... -
oracle入门10
2011-04-17 16:36 480PL/SQL编程 PL/SQL是oracle的专用语言,它 ... -
oracle入门09
2011-04-17 16:36 607视图、序列、同义词、 ... -
oracle入门08
2011-04-17 16:35 594数据完整性 数据库 ... -
oracle入门06
2011-04-17 16:33 5541、事务概念: 概念:在数据库中事务是工作的逻辑单元,一个事 ... -
oracle入门05
2011-04-17 16:33 587DML(Data Manipulation Language ... -
oracle入门04
2011-04-17 16:32 548子查询 子查询概念 :当一个查询的结果是 ... -
oracle入门03
2011-04-17 16:31 368分组函数的介绍 分组函 ... -
oracle入门02
2011-04-17 16:31 5211、 oracle端口号修改问题 如果用户要修改oracle ... -
oracle入门01
2011-04-17 16:30 6331、 安装成功后进入DOS ...
相关推荐
Oracle入门体会Oracle入门体会Oracle入门体Oracle入门体会会
Oracle_基本知识介绍 Oracle入门(精华) Oracle入门(精华)
Oracle9.0入门 从实践中学习oracle sql oracle数据库基础
ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程
Oracle入门,英文版 Oracle入门,英文版
《Oracle 入门心得》PDF高清电子书 入门心得
教程名称:“Oracle入门很简单”视频教程与源文件(全22集)课程目录:【】Oracle入门很简单-源文件【】Oracle入门很简单【】Oracle入门很简单01-05集【】Oracle入门很简单06-10集【】Oracle入门很简单11-15集【】...
oracle入门
Oracle入门与精通,属于文档,PPT类型,的,主要目的在于Oracle的学习
ORACLE入门心得
Oracle从入门到精通.pdf 很经典的一本书,很适合Oracle学习的初学者; 资源与大家共享啊!
《Oracle入门很简单》的教材PPT 本书带课件。 浅显易懂,零门槛Oracle学习,真的很简单 亲切自然,老鸟带领菜鸟,快速掌握Oracle数据库 15.5小时多媒体语音视频讲解(视频在优酷上有!)
1 Oracle9.0入门_01_基础篇 ...7 Oracle9.0入门_07_常用数据方案对象 8 Oracle9.0入门_08_安全管理:用户授权 9 Oracle9.0入门_09_PLSQL 10 Oracle9.0入门_11_深入9i核心 11 Oracle9.0入门_12_备份与恢复
Oracle入门很简单[张朝明].part2.共2部分,这是第2部分。 本书从初学者的角度出发,由浅入深、循序渐进地介绍了oracle数据库开发的基础知识。书中对数据库基本理论及其在数据库开发过程中的应用也有详细介绍。书中也...
Oracle 入门文档 Oracle笔记 一、oracle的安装、sqlplus的使用 Oracle笔记 二、常用dba命令行 Oracle笔记 三、function 、select Oracle笔记 四、增删改、事务 Oracle笔记 五、创建表、约束、视图、索引、序列、...
Oracle入门的详细必备教程,手把手交,私聊还有视频!!!
《Oracle从入门到精通》PDF版本下载
30分钟就让你oracle入门PPT,基础训练~~~~~~~~
oracle中的数值型及处理方法。 数值型的简介、数值型函数。
经证明,最适合: Oracle入门,第一步:Oracle Concepts