`
changhongbao
  • 浏览: 124004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Oracle笔记(九) 表的创建及管理

 
阅读更多

Oracle笔记(九) 表的创建及管理

对于数据库而言实际上每一张表都表示的是一个数据库的对象,而数据库对象指的就是DDL定义的所有操作,例如:表、视图、索引、序列、约束等等,都属于对象的操作,所以表的建立就是对象的建立,而对象的操作主要分为以下三类语法:

  • 创建对象:CREATE 对象名称 …;
  • 删除对象:DROP 对象名称 …;
  • 修改对象:ALTER 对象名称 …;

一、常用的数据字段

每一张数据表实际上都是由若干个字段所组成,而每一个字段都会有其对应的数据类型,而在Oracle之中,常用的数据类型有如下几种:

数据类型

关键字

描述

1

字符串

VARCHAR2(n)

其中n表示的是字符串所能保存的最大长度,基本上保存200个左右的内容

2

整数

NUMBER(n)

表示最多为n位的整数,有时候也可以使用INT代替

3

小数

NUMBER(n,m)

其中m为小数位,n-m为整数位,有时候也可以使用FLOAT代替

4

日期

DATE

存放日期-时间

5

大文本

CLOB

可以存储海量文字(4G),例如存储《三国演艺》、《红楼梦》

6

大对象

BLOB

存放二进制数据,例如:电影、MP3、图片、文字

一般在开发之中使用最多的:VARCHAR2()、NUMBER、DATE、CLOB,而对于BLOB字段一般使用较少,首先BLOB可以存放4G的二进制数据,但是存放进去之后,一是数据库过于庞大,二是读取不方便;

二、表的创建

如果现在要想进行表的创建,可以使用如下的操作语法:

CREATE TABLE 表名称 (
    字段1 数据类型 [DEFAULT默认值],
    字段2 数据类型 [DEFAULT默认值],
    … …,
    字段n 数据类型 [DEFAULT默认值]
);

下面创建一张成员表(member),有如下保存的信息:姓名、年龄、生日、个人简介。

CREATE TABLE member (
     name VARCHAR2(50) DEFAULT '无名氏',
     age NUMBER(3),
     birthday DATE DEFAULT SYSDATE,
     content CLOB
);

表创建成功之后,下面开始向表中增加数据:

INSERT INTO member(name,age,birthday,content) VALUES('张三',20,TO_DATE('1990-08-12','yyyy-mm-dd'),'一个好人');
INSERT INTO member(age,content) VALUES(20,'一个好人');

一定要再次记住,表的创建是属于数据库对象的创建,所以使用的是CREATE语法。

三、表的复制

在之前学习过表的复制操作,下面给出其完整的操作语法:

CREATE TABLE 复制表名称 AS 子查询;

范例:复制一张只包含20部门雇员信息的表

CREATE TABLE emp20 AS SELECT * FROM emp WHERE deptno=20;

范例:现在要求将emp表的表结构复制出来,不要数据 —— 写一个永远满足不了的条件即可。

CREATE TABLE empnull AS SELECT * FROM emp WHERE 1=2;

但是以上的语法只是Oracle数据库所支持的操作,其他的数据库语法上会有一些区别。

四、为表重命名

在Oracle数据库之中,所有的数据实际上都是通过数据字典保存的,例如,在之前曾经使用过如下的一种查询:

SELECT * FROM tab;

以上就是一个数据字典,而在Oracle之中,提供了三种类型的数据字典,最常用的是:dba_、user_,所以下面查询一个user_tables数据字典:

SELECT * FROM user_tables;

也就是说Oracle中的所有数据都是按照文件保存的,那么所有的内容都会在数据字典中注册,既然这样,所谓的修改表名称实际上对于Oracle而言就相当于修改一条数据而已,而修改表名称的方法如下:

RENAME 旧的表名称 TO 新的表名称;

范例:将member表更名为person表

RENAME member TO person;

但是这种操作由于是Oracle数据库所独有的一种特性,所以了解即可,不用做深入的掌握。

五、截断表

在之前曾经讲解过一个删除表数据的操作,使用的是DELETE操作,但是这种删除操作本身有一个特点,即:可以进行事务的回滚,也就是说删除之后并不会立刻释放数据的资源,如果现在希望彻底释放掉一张表所占用的全部资源(表空间、索引等等)就可以使用截断表的语法,此语法如下:

TRUNCATE TABLE 表名称;

范例:截断person表

TRUNCATE TABLE person;

但是这种语法本身只是Oracle所有的,所以只做了解即可。

六、表的删除

表的删除操作指的是数据库对象的删除,既然是删除则使用DROP语句,删除表的语法如下:

DROP TABLE 表名称;

范例:删除person表

DROP TABLE person;

七、Oracle 10g的新特性:闪回技术

在Oracle 10g之后,为了预防用户的误删除表操作,专门提供了回收站的功能,用户所删除的表默认情况下会在一个回收站之中保存,而用户也可以通过回收站,进行表的恢复,所以此技术称为闪回(FLASHBACK);

范例:查看回收站

SHOW RECYCLEBIN;

这个时候可以发现所有已经删除的表都在回收站之中保存,那么下面就可以使用如下的语法恢复表:

FLASHBACK TABLE 表名称 TO BEFORE DROP;

范例:恢复myemp表

FLASHBACK TABLE myemp TO BEFORE DROP;

当然,现在也可以直接删除掉回收站中的一些数据表,语法如下:

PURGE TABLE 表名称;

范例:删除回收站中的person表

PURGE TABLE person;

范例:清空回收站

PURGE RECYCLEBIN;

如果现在希望删除一张表,而又不希望其进入到回收站之中,则可以在删除的时候增加PURGE。

DROP TABLE myemp PURGE;

这种技术是在Oracle 10g之后才有的,而Oracle 11g也是存在的。

问题:现在在回收站之中存在了一张tab表,而后又建立了一张tab表,那么如果从回收站中恢复的话,可以吗?

答:无法恢复。

八、修改表结构

如果一张建立好的数据表,发现其初期的结构已经不满足于后期的使用要求,则可以进行表的修改操作,而表的修改操作实际上就是数据库对象的修改操作,使用ALTER指令完成,例如,现在有如下一张表:

CREATE TABLE member (
     mid NUMBER,
     name VARCHAR2(50)
);

现在希望可以向表中增加字段,所以此时可以采用如下的语法完成:

ALTER TABLE 表名称 ADD(列名称 数据类型 [DEFAULT 默认值],
  列名称 数据类型 [DEFAULT 默认值],…);

范例:为member表增加字段

ALTER TABLE member ADD(age NUMBER(3), birthday DATE DEFAULT SYSDATE);

如果增加的数据列没有默认值,则所有已有的数据的列的内容都是null,而如果增加的列指定了DEFAULT默认值的话,则所有已有的数据列都是设置的默认值。

现在也可以修改已有的表结构,此时的语法如下:

ALTER TABLE 表名称 MODIFY(列名称 数据类型 [DEFAULT 默认值],
  列名称 数据类型 [DEFAULT 默认值],…);

范例:将name字段的默认值定义为无名氏

ALTER TABLE member MODIFY(name VARCHAR2(100) DEFAULT '无名氏');

虽然在SQL语法之中以及Oracle数据库之中,都给出了修改表结构的操作,但是这种操作能不使用就不使用,从大型数据库来讲,世界上性能最高的数据库是IBM DB2,但是IBM DB2本身有一个平台的限制问题,所以如果说是跨平台的数据库则是Oracle数据库的性能最高。

在IBM DB2数据库之中是不允许修改表结构的,即:表建立完成之后就不能修改了,所以以后在开发之中也尽可能的不要去修改表结构。

九、思考题

现在要求建立一张nation表,表中有一个name字段,里面保存四条记录:中国、美国、巴西、荷兰,要求通过查询实现如下的操作效果:

中国         美国

中国         巴西

中国         荷兰

美国         巴西

美国         中国

美国         荷兰

剩下的依次类推,现在要求建立新的表并完成此查询的操作。

本题目的主要目的并不是在于查询的编写上,而是在于规范化数据库创建脚本的格式,以后只要是碰到了类似的要求,首先必须编写一个数据库创建脚本,这个脚本的要求如下:

1、  本文件的文件名称后缀必须是“*.sql”;

2、  先删除相应的数据表;

3、  编写创建表的语句;

4、  增加测试数据;

5、  提交事务;

复制代码
--1、删除表
DROP TABLE nation PURGE;
--2、创建表
CREATE TABLE nation(
    name VARCHAR2(50)
);
--3、测试数据
INSERT INTO nation(name) VALUES('中国');
INSERT INTO nation(name) VALUES('美国');
INSERT INTO nation(name) VALUES('巴西');
INSERT INTO nation(name) VALUES('荷兰');
--4、事务提交
COMMIT;
复制代码

本程序如果要想完成依靠笛卡尔积完成,属于表的自身关联。

SELECT n1.name,n2.name
FROM nation n1,nation n2
WHERE n1.name<>n2.name;

而且以后如果面试之中,出现了一些复杂的查询,建议把脚本写全了。

分享到:
评论

相关推荐

    oracle笔记创建和管理表

    oracle笔记创建和管理表,增加列,删除列,修改列,修改列名和数据类型和长度,修改表名等等操作,有代码案例!

    李兴华Oracle全部笔记

    此外,可能还涉及了数据库管理的基本概念,如数据模型、表空间、表和列的创建与管理,以及备份与恢复策略。 其次,笔记可能会深入到Oracle的高级特性,比如PL/SQL编程,这是一种专为Oracle设计的过程化编程语言,...

    Oracle学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    史上最全的oracle笔记

    1. DDL(数据定义语言):用于创建、修改和删除表及表约束。例如,`CREATE TABLE`用于创建表,`ALTER TABLE`用于修改表结构,`DROP TABLE`用于删除表。 2. DML(数据操作语言):处理表中的记录,包括`INSERT`...

    2011Oracle笔记(李兴华视屏教程笔记)

    标题“2011Oracle笔记(李兴华视屏教程笔记)”揭示了文档的用途,它是作为2011年李兴华Oracle教学视频课程的学习笔记。这种笔记通常包括了课程中的重点概念、Oracle数据库基础知识、实际操作案例以及配合视频教程的...

    达内,tarena,oracle笔记,oraclePPT课件,达内oracle笔记

    在达内的Oracle笔记中,可能会详细讲解SELECT语句用于数据检索,INSERT、UPDATE、DELETE用于数据增删改,以及CREATE、ALTER、DROP用于数据库对象管理的语法和用法。 3. **数据库设计**:良好的数据库设计是确保系统...

    Oracle学习笔记精华版

    笔记可能涉及索引的创建和管理、SQL调优(如使用EXPLAIN PLAN分析查询执行计划)、数据库统计信息的收集、存储优化以及使用Oracle的性能监控工具(如AWR和ASH报告)。 此外,Oracle的安全管理包括用户权限管理、...

    MLDN最经典的ORACLE笔记

    《MLDN最经典的ORACLE笔记》是李兴华老师倾力打造的一份全面而深入的Oracle学习资源,专为对数据库技术感兴趣的读者精心准备。Oracle作为全球广泛使用的数据库管理系统,其强大功能和复杂性使得深入理解和掌握Oracle...

    oracle笔记.docx

    6. **用户管理和权限控制**:创建用户、设置密码、指定默认表空间、临时表空间,以及权限分配都是数据库管理的基础。`ALTER USER`命令可以用于解锁、修改用户信息,`DROP USER`则用于删除用户。 7. **Oracle卸载**...

    韩顺平oracle笔记(免费)

    以上是基于韩顺平Oracle笔记内容所总结的关键知识点,涵盖了Oracle认证、安装、基本使用命令以及用户管理等方面的核心内容。这对于学习Oracle数据库管理和操作的初学者来说是非常有价值的参考资料。

    Oracle笔记Oracle笔记

    在Oracle中,数据库管理员(DBA)需要掌握各种操作,包括表空间管理、用户管理、权限控制、序列使用、同义词创建以及表的维护等。以下是对这些关键知识点的详细说明: 1. **表空间管理**:表空间是Oracle数据库中...

    韩顺平最新Oracle笔记及PPT

    《韩顺平最新Oracle笔记及PPT》是针对Oracle数据库技术的一套全面的学习资源,由知名IT讲师韩顺平提供。这些资料包含了2011年韩顺平的最新教学内容,适合对Oracle有兴趣或者需要提升Oracle技能的IT专业人士。 ...

    oracle笔记.pdf

    其中,“i”在Oracle8i中表示增加了对Internet的支持,Oracle9i则是Oracle8i的稳定版本,而Oracle10g是基于网格计算技术的版本,Oracle11g是10g的稳定版本,Oracle12C则是支持云计算概念的最新版本。在初学者阶段,...

    oracle笔记+资料.rar

    本资源“oracle笔记+资料.rar”包含了丰富的Oracle学习资料,适合不同水平的学习者,无论你是初学者还是资深DBA,都能从中受益。下面将详细解析其中可能涵盖的知识点。 1. **Oracle基础知识**:这部分内容可能会...

    oracle笔记

    以下是对"Oracle笔记"中的关键知识点的详细说明: 1. **Oracle认证与安装**:Oracle提供了一系列的认证,如OCP(Oracle Certified Professional),表明用户具备相应级别的Oracle数据库技能。在安装Oracle时,系统...

    oracle 数据库学习笔记(全)

    Oracle 数据库学习笔记是学习 Oracle 数据库的重要笔记,涵盖了 Oracle 数据库的基本概念、数据类型、表的创建和管理、用户管理、权限管理、数据操作等方面的知识点。 一、Oracle 数据库基本概念 * Oracle 数据库...

    oracle_sql笔记

    Oracle SQL是数据库管理员和开发人员在Oracle数据库系统中进行数据查询和管理的重要工具。这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括...

    韩顺平老师oracle笔记

    根据给定的文件信息,以下是从“韩顺平老师oracle笔记”中提炼出的关键知识点,主要涉及Oracle数据库的基础概念、用户管理以及SQL*Plus的基本操作。 ### Oracle数据库基础 1. **Oracle数据库的角色与权限**: - *...

    韩顺平oracle视频笔记

    ### 韩顺平Oracle视频笔记知识点概览 #### 1. Oracle 用户管理 - **概念**:在Oracle数据库中,用户是用来管理访问权限的基本单位。每个用户都可以有自己的模式(schema),其中包含各种对象如表、视图等。 - **创建...

Global site tag (gtag.js) - Google Analytics