Oracle基础学习笔记(三)

来源:互联网 发布:网络采购的优点有 编辑:程序博客网 时间:2024/06/02 02:09

三、表

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_nameADD column_nmae datatype;--删除表字段ALTER TABLE table_nameDROP COLUMN column_name;--修改字段类型ALTER TABLE table_nameMODIFY column_name datatype;--重命名字段名字ALTER TABLE table_nameRENAME COLUMN column_name TOnew_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_nameMODIFY column1 DEFAULT 默认值

默认值

修改表数据

修改表数据语法如下:

UPDATE table_nameSET column1=value1,...[WHERE conditins]

复制表数据

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

CREATE TABLE table_newASSELECT 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]
0 0
原创粉丝点击