十八、创建与管理表
18.1 数据库中的对象
表:基本的数据存储的集合,由行与列组成
视图:从表中抽出的逻辑上相关的数据集合。
序列: 提供有规律的数值
索引:提高查询效率
同义词:给对象起的别名。
18.2 Oracle数据库中的表
18.2.1 用户自定义表
18.2.1.1 表名和列名的命名规范:
必须以字母开头
必须在 1–30 个字符之间
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字
18.2.1.2 创建表必须具备的条件
CREATE TABLE权限
存储空间
必须指定表名、列名、数据类型、尺寸
18.2.1.3 创建表的语法
CREATE TABLE table_name
(column datatype [DEFAULT expr][, ...]);
18.2.1.4 数据类型
数据类型 描述
VARCHAR2(size) 可变长字符数据
CHAR(size) 定长字符数据
NUMBER(p,s) 可变长数值数据
DATE 日期型数据
LONG 可变长字符数据,最大可达到2G
CLOB 字符数据,最大可达到4G
RAW (LONG RAW) 原始的二进制数据
BLOB 二进制数据,最大可达到4G
BFILE 存储外部文件的二进制数据,最大可达到4G
ROWID 行地址
18.2.1.5创建表的分析
在数据库中必须遵循一定的规范,这些规范称为范式。目前关系数据库有6种方式,数据库只需要满足3NF即可,需要使用范式对数据库中表进行处理。
下面我以学生信息为例分析
学生信息表包含的字段:学号、学生姓名、出生日期、学生性别、所属班级、所属院系、系主任姓名、课程编号、成绩
学号:sid varchar2
学生姓名:sname
出生日期:sbirth date
学生性别:ssex
所属班级:sclass
所属院系:sdep
系主任姓名:dname
课程编号:cid
成绩:grade number(5,2)
根据如上信息可以创建存储学生信息表,包含以上的全部信息,但非规范。
18.2.1.6分析设计过程
必须满足3NF,但前提必须满足1NF和2NF。
属性不可再分(1NF),一对多关系
学生信息表:sid、sname、sbirth、ssex、sclass、sdep、dname
成绩表:sid 、cid 、grade
(前提必须满足1NF )表中的所有非主属性都完全依赖于任一候选键。
sid → sname
sid → sbirth
sid → ssex
sid → sclass
sdep → dname
其他普通属性不应当存在部分依赖于主要属性,此普通属性应当被分离到新的表中去
Student(sid,sname,sbirth,ssex,sclass,sdep)
Dept(sdep,dname)
Grade(sid,cid,grade)
(前提满足2NF)表中的每一个非主属性都不传递依赖于任何候选键。
s(sid,sname,sbirth,ssex,sclass,sdep)
d(sdep,dname)
g(sid,cid,grade)
在满足2NF后分析
Sid → sclass
Sclass → dep
Sid → sdep
Student(sid,sname,sbirth,ssex,sclass)
Class_dept(sclass,sdep)
Ddpt(sdep,dname)
Grade(sid,cid,grade)
18.2.2 Oracle数据字典
18.2.2.1查询用户自定义表
//查询用户定义的表的名称
SQL> select table_name from user_tables;
//查询用户自定表的详细特征
SQL> select * from user_tables
//等效于
SQL> select * from tabs;
18.2.2.2 查询用户定义的各种数据库对象
SQL> select distinct object_type from user_objects;
OBJECT_TYPE
-------------------
SEQUENCE
TABLE
INDEX
18.2.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
18.3 修改表
18.3.1 追加、修改和删除字段
使用 ALTER TABLE 语句追加、修改、或删除列的语法形式:
18.3.1.1追加
ALTER TABLE table_name
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
18.3.1.2 修改
ALTER TABLE table_name
MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
18.3.1.3删除
ALTER TABLE table
DROP column (column_name);
18.3.2 修改列的名称
ALTER TABLE table_name rename column old_column_name
to new_column_name
18.3.3 案例
//采用子查询创建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;
18.4 删除表
数据和结构都被删除
所有正在运行的相关事物被提交
所有相关索引被删除
DROP TABLE 语句不能回滚
18.5 修改对象的名称
执行RENAME语句改变表, 视图, 序列, 或同义词的名称
必须是对象的拥有者
//修改对象的名称操作
SQL> rename customer to customers;
18.6 清空表
TRUNCATE TABLE 语句:
删除表中所有的数据
释放表的存储空间
TRUNCATE语句不能回滚
可以使用 DELETE 语句删除数据
//清空表的操作
SQL> truncate table customers;
18.7 总结
您已经学会如何使用DDL语句创建、修改、删除、和重命名表。
语句 描述
CREATE TABLE 创建表
ALTER TABLE 修改表结构
DROP TABLE 删除表
RENAME 重命名表
TRUNCATE 删除表中的所有数据,并释放存储空间
分享到:
相关推荐
Oracle数据库系统应用与开发 pdf 格式 数据库基础
oracle 数据库管理与应用系统开发代码/oracle 数据库管理与应用系统开发代码
這是一篇介紹oracle数据库系统应用与开发的基礎文章,特別適合初學者使用
资源名称:Oracle数据库开发与应用内容简介:《Oracle数据库开发与应用》分为5部分共25章,涵盖了数据库入门、数据查询、数据修改和维护、数据库编程、数据库管理。《Oracle数据库开发与应用》使用的开发环境是...
由浅入深地介绍了Oracle 10g系统的使用方法和基本管理。...本书全面介绍使用Oracle数据库管理应用与开发知识,适合作为普通高校计算机专业Oracle教材,也可以作为Oracle数据库开发和应用人员的参考资料。
oracle 数据库的应用开发 oracle 数据库的应用开发
oracle数据库应用与开发
Oracle 11g中文版数据库管理、应用与开发标准教程
Oracle数据库的应用开发.pptOracle数据库的应用开发.pptOracle数据库的应用开发.pptOracle数据库的应用开发.pptOracle数据库的应用开发.pptOracle数据库的应用开发.pptOracle数据库的应用开发.ppt
体验数据库的应用→认识 Oracle的工作环境、体验Oracle 10g环境中常用工具操作→数据库的创建与管理→数据表的创建与管理→管理视图→SQL编程语言→PL/SQL编程语言→管理PLSQL存储过程与触发器 →管理安全性→数据库...
Oracle 数据库管理与应用系统开发: Oracle编程 创建存储过程 创建自定义类型 使用存储过程和函数 创建存储过程 创建函数 使用触发器和作业 创建触发器 创建序列等 跟踪和调试 创建存储过程 创建...
Oracle10g数据库管理与应用系统开发光盘
Oracle数据库的开发与应用培训
学生成绩管理演示系统是一个用 ASP 实现的简单的网上学生成绩 管理系统。使用 ADO 对象来访问后台数据库,包含学生信息的查询界面,学生 信息的录入、修改、删除界面,学生成绩的录入修改界面。
Oracle数据库系统应用开发课程设计说明书,内含完整DFD图、视图设计、过程函数触发器设计以及主要操纵语句。
Oracle数据库应用开发及实践.rar