Oracle基础学习笔记(三)

原创 2016年06月01日 12:34:29

三、表

3.1 表的概述

表是数据库的基本存储单位,下面罗列出几个基本特点:

  • 由行、列构成的二维结构
  • 同一张表的结构中列名唯一
  • 同一张表的每一行数据唯一
  • 同一列的数据具有相同的类型
  • 同一个用户下表名唯一

那么,oracle数据库中的类具有哪些类型呢,如下图:
数据类型
如果使用固定长度的字符类型,当你定义类型时分配了10个字节的长度CHAR(10),那么就算实际只需要2个字节来存放内容数据库仍分配为10个字节;可变长度则反之,即实际分配的存储空间会根据实际存放的数据量来定。另外,CHAR(n)和NCHAR(n的区别是后者是按照Unicode编码格式存放数据的。
NUMBER(p,s)类型中的p表示有效位数,s则表示小数所占的位数;FLOAT一般主要用来存储二进制数的。DATE和TIMSTRAMP类型的主要区别是精确度,前者精确到秒,后者属于时间戳类型精确到秒的小数位。
至于BLOB和CLOB则是专门用来存放大的数据对象,这两类数据的存放上限是4GB。前者以二进制存放数据,后者以字符串形式存放。

3.2 管理表结构

创建表

创建表语法如下:

CREATE TABLE table_name
(
    column_name datatype,...
);

如图创建表userinfo:
创建表

修改表

我们可以更改刚创建的userinfo表,可以对表中的字段进行增删,也可以修改字段的名字和类型。同时,我们也可以对整张表的表名修改。
语法如下:

--添加表字段
ALTER TABLE table_name
ADD column_nmae datatype;
--删除表字段
ALTER TABLE table_name
DROP COLUMN column_name;
--修改字段类型
ALTER TABLE table_name
MODIFY column_name datatype;
--重命名字段名字
ALTER TABLE table_name
RENAME COLUMN column_name TO
new_column_name;
--重命名表名
RENAME table_name TO new_table_name;

代码示例如下:
添加表字段
添加表字段
删除表字段
删除表字段
修改字段类型
修改字段类型
重命名字段名字
重命名字段名字
重命名表名
重命名表名

删除表

如果只是想删除表中的数据可用delete或者truncate,语法如下:

--delete用法
DELETE FROM table_name [条件]
--truncate用法
TRUNCATE TABLE table_name

那么两者有什么差别呢?
简单的说delete语句是属于DML,执行时是逐条删除的,每条记录都会被写入日志。整个操作会放到rollback segement中,因此是可回滚的,当事务提交时才生效。
而truncate的用法又被称为截断表,是DDL语言。该操作会被隐式提交立即生效,原数据不放到rollback segment中,因此不能回滚
具体的区别可自行查找,也可参考这两篇博文,博文1博文2

以上是删除表数据的内容,如果我们想删除表结构可以使用drop,语法格式为:

--drop用法
DROP TABLE table_name

3.3 操作表数据

添加表数据

对一个已经存在的表我们可以向其添加数据,语法为:

INSERT INTO table_name
(column1,column2,...)
VALUES(value1,value2,...)

在添加数据时,某个字段数据为空此时我们想让他默认显示某个值,这时我们可以添加默认值。
我们可以在创建表的时候设定:

CREATE TABLE table_name
(column1 DEFAULT 默认值1,...)

默认值
如果表已经建好了,我们可以这样修改:

ALTER TABLE table_name
MODIFY column1 DEFAULT 默认值

默认值

修改表数据

修改表数据语法如下:

UPDATE table_name
SET column1=value1,...
[WHERE conditins]

复制表数据

在添加数据时,有时候我们可能会遇到这样一种需求:我们所要添加到表A的数据已经是在表B存在了,那这时候我们只需要将这些数据从表B转移到表A。分成两种情况:
在创建表时获取数据:

CREATE TABLE table_new
AS
SELECT column,...|* 
FROM table_old;

复制表

在添加获取复制数据(表已存在):

INSERT INTO table_new
[(column1,...)]
SELECT column1,...|* 
FROM table_old;

后者需要注意的是table_new和table_old表中赋值时对应的数据个数、类型以及顺序需完全一致。

删除表数据

删除表数据在3.2节中讲述过了,这里罗列下语法:

DELETE FROM table_name
[WHERE conditions]
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Oracle基础学习笔记(一)

接触oracle不久,近段时间边看资料学习边记录笔记,正所谓好记性不如烂笔头嘛。稍微整理了下这两天学习的内容,以后回过头来翻一翻这些基础知识,感觉还是比较有意义的。 我本地下载是oracle11g的...
  • N_P_C
  • N_P_C
  • 2016年05月27日 08:53
  • 267

图的综合实验(Dijkstra算法)

Problem:      给定n个村庄之间的交通图。若村庄i和j之间有路可通,则i和j用边连接,边上的权值Wij表示这条道路的长度。现打算在这n个村庄中选定一个村庄建一所医院。编写如下算法:(村庄为...
  • N_P_C
  • N_P_C
  • 2013年12月03日 11:06
  • 1082

oracle学习笔记-入门基础

  • 2010年05月10日 17:02
  • 140KB
  • 下载

oracle学习笔记-基础

  • 2011年03月22日 16:31
  • 49KB
  • 下载

Oracle基础学习笔记(三)(Import, Export, SQL Loader)

EXPORT, IMPORT are used for following tasks : Backup Oracle data in operating system files. Restor...

oracle基础学习笔记

  • 2012年07月05日 10:37
  • 49.93MB
  • 下载

Oracle数据库学习笔记 三

  • 2010年03月12日 11:30
  • 208KB
  • 下载

重新整理后的Oracle OAF学习笔记——4.应用构建基础之实现视图

转自     http://jamsa.iteye.com/blog/160972 页面 创建页面的基本步骤是创建pages,region,items。 Page L...
  • kb5706
  • kb5706
  • 2012年04月02日 18:04
  • 1850

Oracle 11g数据库学习笔记三

  • 2014年05月30日 22:01
  • 52KB
  • 下载

Oracle基础学习笔记(4)

1, instead of 触发器 例句:create trigger update_emp_job_view      Instead of update On emp_job     ...
  • pzhtpf
  • pzhtpf
  • 2012年07月31日 14:00
  • 895
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle基础学习笔记(三)
举报原因:
原因补充:

(最多只允许输入30个字)