十八、创建与管理表
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数据库系统是全球广泛使用的...通过深入学习“Oracle数据库系统应用与开发”,无论是初学者还是经验丰富的开发者,都能增强对Oracle数据库的理解,提升开发和管理能力,为实际项目中的高效数据处理打下坚实基础。
对于初学者来说,理解Oracle数据库系统应用与开发的基础至关重要,这将帮助他们掌握数据库的核心概念,从而在IT行业中建立稳固的基础。 一、Oracle数据库系统概述 Oracle数据库系统是Oracle公司开发的,它采用SQL...
Oracle数据库管理系统是全球广泛使用的大型关系型数据库系统...以上只是Oracle数据库管理与应用系统开发的一部分知识,实际操作中还需要结合具体场景和需求,灵活运用各种工具和技术,以确保系统的稳定运行和高效开发。
由浅入深地介绍了Oracle 10g系统的使用方法和基本管理。...本书全面介绍使用Oracle数据库管理应用与开发知识,适合作为普通高校计算机专业Oracle教材,也可以作为Oracle数据库开发和应用人员的参考资料。
oracle 数据库的应用开发 oracle 数据库的应用开发
Oracle数据库在应用开发中扮演着至关重要的角色,它是一个强大且广泛使用的数据库管理系统,尤其适合企业级的数据存储和处理。本教程将深入讲解如何基于Oracle数据库进行应用开发,包括数据库设计的方法、人事管理...
Oracle 11g中文版数据库管理、应用与开发标准教程
本课程“Oracle数据库应用与开发”旨在帮助学生深入理解和掌握Oracle数据库的相关知识,包括其基本概念、架构、SQL语言、数据管理、性能优化及应用程序开发等。 一、Oracle数据库基础 Oracle数据库系统基于客户-...
体验数据库的应用→认识 Oracle的工作环境、体验Oracle 10g环境中常用工具操作→数据库的创建与管理→数据表的创建与管理→管理视图→SQL编程语言→PL/SQL编程语言→管理PLSQL存储过程与触发器 →管理安全性→数据库...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位...从数据库设计、SQL编程、PL/SQL开发,到事务处理、安全管理以及备份恢复,全方位覆盖了Oracle数据库应用开发的各个方面。
吴海波主编的《Oracle数据库应用与开发实例教程》是一本深入浅出的教材,旨在帮助学习者掌握Oracle数据库的使用和开发技巧。本教程结合实际案例,提供了丰富的学习材料,对于学生和专业人士来说都是宝贵的参考资料。...
Oracle10g数据库管理系统是Oracle公司推出的一款强大的关系型数据库管理系统,主要应用于企业级的数据存储、管理和分析。...通过学习和掌握这些内容,可以有效地管理和开发高效、稳定、安全的Oracle数据库应用系统。
Oracle 数据库管理与应用系统开发: Oracle编程 创建存储过程 创建自定义类型 使用存储过程和函数 创建存储过程 创建函数 使用触发器和作业 创建触发器 创建序列等 跟踪和调试 创建存储过程 创建...
《Oracle数据库应用与开发案例教程》是一本专为学习Oracle数据库应用与开发的读者精心编写的教材。本书深入浅出地介绍了Oracle数据库的基础知识、管理技巧以及开发实践,旨在帮助读者掌握Oracle数据库的核心技术和...
Oracle数据库的开发与应用培训
Oracle数据库管理员教程旨在帮助读者...通过阅读指定的参考书籍,如《ORACLE数据库系统基础》、《数据库管理及应用开发》和《ORACLE数据库管理员教程》,可以深入理解Oracle数据库管理的各个方面,提升DBA的专业技能。