Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96714
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 302
  • 用 户 组: 普通用户
  • 注册时间: 2017-02-07 17:04
个人简介

不积跬步无以至千里,每天进步一点点~

文章分类

全部博文(35)

文章存档

2018年(3)

2017年(32)

我的朋友

分类: Oracle

2017-11-23 16:56:30

1.创建表:
create table member(
mid NUMBER(5),
name VARCHAR2(50) DEFAULT '无名氏',
age NUMBER(3),
birthday DATE DEFAULT SYSDATE,
note CLOB
);
select * from tab;
desc member
插入数据:
insert into member (mid,name,age,birthday,note) values 
(1234,'Wings',1,to_date('2016-08-13','yyyy-mm-dd'),'ShanDong');
insert into member (mid,name,age,birthday,note) values 
(1111,'King',29,to_date('1989-08-29','yyyy-mm-dd'),'ShanDong');

2.复制整个表:
create table member1 as select *from member;
select * from member1;
复制部分表:加入条建即可
create table member2 as select * from member where mid=1234;
select *from member2;
复制表结构:(加入一个永远不满足的条件)
create table member3 as select * from member where 1=2;
select * from member3;
表的复制操作只要是行与列的查询结果,就可以将其定义为数据表。

3.数据字典
在Oracle中专门提供了一组数据专门用于记录数据库对象信息、对象结构、管理信息、存储信息的数据表,那么这种类型的表就称为数据字典,在Oracle中定义了两种数据字典:
静态数据字典:这类数据字典由表及视图所组成,这些视图分三类:
  user_*:存储了所有当前用户的对象信息。
  all_*:存储所有当前用户可以访问的对象信息(某些对象可能不属于此用户);
  dba_*:存储数据库之中所有对象的信息(数据库管理员操作)
动态数据字典:随着数据库运行而不断更新的数据表,一般用来保存内存和磁盘状态,而这类数据字典都以"V$"开头;
所有的数据表都属于数据库对象,每当创建一张数据表的时候,会自动在制定的数据字典表执行一个增加语句(这个增加语句你是不知道的),但是这些数据字典的数据操作只能够通过命令完成。


4.数据表重命名:
在Oracle之中,为了方便用户对数据表进行管理,所以专门提供了修改表名称的操作
 RENAME 旧表名称 TO 新的表名称;
 RENAME member TO new_member
 select *from tab;
 select * from new_member;
 注意:当发生任何的DDL操作的时候对于事务都会自动提交。不能用rollback回滚。
5.删除表:
语法:drop table 表名称
select * from tab;
drop table member1;
drop table member2;
drop table member3;
会发现,删除了的表,还有部分残余。每删除一个表,就会多一个BIN开头的表。
6.闪回技术(FLASHBACK):
闪回技术是Oracle10g之后所提供的一种新的数据保障措施,在Oracle10g之前,如果用户不幸将
表误删除了,数据表就再也找不回来了,但是在Oracle10g之后,为了解决这个问题,专门提供了
一个与windows操作系统类似回收站功能,即:所有的数据表删除的话,会默认先将其保存在回收
站之中,此时,如果用户发现删除有错误,则可以直接通过回收咋拿进行表的恢复。
select * from recyclebin;
范例:恢复删除表
flashback table member1 to before drop;
范例:彻底删除表,不经过回收站
drop table member1 purge;
范例:删除回收站里的表
purge table member2;
范例:清空回收站
purge recyclebin;
注意:闪回技术是需要存储空间的,如果存储空间不足,就会覆盖闪回的回收站空间,所以闪回不会百分百成功。还是要做好数据库的备份工作。

7.修改表结构:
注意:尽量不要修改表结构,修改表结构=程序猿的噩梦!!!
select * from tab;
select * from new_member;
create table member as select * from new_member;
select *from member;
增加字段:
alter table member add(height number(3));
如果不设置默认值,所有的行的值都是null
修改字段长度:
alter table member modify(sex varchar2(10) default '男');
desc member;
insert into member  (mid,name,age,birthday,note) values
('2222','dgq',29,to_date('1989-08-29','yyyy-mm-dd'),'Shandong')
删除表中的列:
alter table 表名称drop column 列名称;
范例:
alter table member drop column height;
注意:如果说某个数据表数据量很大,执行这种删除操作,这种性能损耗是非常大的。所以很多时候为了保证表在大数据量的情况下删除操作可以使用,又不影响表的正常使用,所以可以将表中设置为无用的列。
无用字段的设置:
alter table 表名称set unused(列名称);
alter table 表名称set unused column 列名称;
范例:将sex列设置成无用状态
alter table member set unused(sex);
这样的话,表中的列就少了,而这个时候可以执行删除无用列
alter table member drop unused columns;
8.添加注释:
程序中使用注释可以帮助使用者更加清晰的了解代码的作用,而在Oracle数据库中也可以为表或者列设置注释
  语法:
  comment on table 表名称 is '添加表注释内容'
  comment on column 表名称.列名称 is '添加列注释内容'
范例:
  comment on table member is '用于记录成员信息';
 oracle 提供了查看表的注释信息的数据字典,user_tab_comments,还提供了查看列的注释信息,
  使用user_col_comments
  select * from user_tab_comments;--查看表注释
  select * from user_col_comments where table_name='MEMBER';--查看列注释
范例:为列添加注释
  comment on column member.mid  is '成员编号';
  
9.设置可见/不可见字段
如果某些数据列的内容不需要使用,那么直接为其设置null值数据即可,但是这样以来有可能会出现一个
小问题,例如:在一张表设计的时候,考虑到日后需要增加若干个列,那么这些列如果提前增加的话,那么
就有可能造成开发人员的困扰,为此就希望将这些暂时不用的列定义为不可见的状态,这样开发人员浏览
数据是,只需要浏览有用的部分即可。当需要这些列时,在恢复其可见状态。在Oracle12C之前,这些特性
是不被支持的,12C之后才提供此功能。
语法:alter table 表名称 modify 列名称 invisible|visible
范例:
alter table member modify name invisible;

 10. 表空间:
表空间是Oracle数据库中最大的一个逻辑结构,每一个Oracle数据库都有若干个表空间组成,而每一个表空间由多个数据文件组成,用户所创建的数据表也统一都被表空间所管理。表空间与磁盘上的数据文件对应,所以直接与物理存储结构关联。而用户在数据库之中锁创建的数据表、索引、视图、子程序都被表空间保存到了不同的区域内。
在Oracle数据库中有两类表空间:
系统表空间:是在数据库创建时与数据库一起建立起来的,例如:用户用于撤销的事务处理,或者使用的数据字典就保存在了系统表空间中。例如:system和sysaux表空间
非系统表空间:是具备指定管理员权限的数据库用户创建,主要用于保存用户数据、索引等数据库对象,例如:users、temp、undotbs等表空间。
创建表空间:
如果要进行非系统表空间的创建,可以使用如下语法完成。
create[temporary]tablespace 表空间名称
[datafile|tempfile表空间文件保存路径...][size数字[K|M]]
[autoextend on|off][next数字[k|M]]
[logging|nologging];
子句相关说明:
datafile:保存表空间的磁盘路径,可以设置多个保存路径;
tempfile:保存临时表空间的磁盘路径;
size:开辟的表空间大小,其单位有K(字节)和(M)兆;
autoextend:是否为自动扩展表空间,如果为On表示可以自动扩展表空间大小,反之为OFF;
next:可以定义表空间的增长量;
logging|nologging:是否需要对DML进行日志记录,记录下的日志可以用于数据恢复。
创建用户表空间:(需要用sysdba用户创建
create tablespace dgq_data
 datafile 'E:\app\oralceuser\oradata\dgqdb01.dbf' size 50M,
          'F:\data\dgqdb02.dbf' size 50M
 autoextend on next 5M
 logging;
创建临时表空间:(注意临时表空间不能有日志logging选项)
create temporary tablespace dgq_temp
tempfile 'E:\app\oralceuser\oradata\dgq_temp01.dbf' size 50M,
          'F:\data\dgq_temp02.dbf' size 50M
autoextend on next 2M;
如果要查看表空间那么就可以使用dba_tablespaces数据字典查看。
select * from dba_tablespaces;
Oracle中的默认表空间:
在Oracle数据库中默认提供了以下几个表空间,各个表空间的作用如下所示:
system表空间:在一个数据库中至少有一个表空间,即system表空间。创建数据库时必须指明表空间的数据文件的特征,如数据文件名称、大小。system主要是存储数据库的数据字典,在Oracle系统表空间中存储全部的PL/SQL程序的源代码和编译后的代码,例如存储过程、函数、包、数据库触发器。如果要大量使用PL/SQL,就应该设置足够大的System表空间。
sysaux表空间:是system表空间的辅助表空间,许多数据库的工具和可选组件将其对象存储在sysaux表空间内,它是许多数据库工具和可选组件的默认表空间。
user表空间:用于存储用户的数据。
undo表空间(undotbs1)表空间:用于事务的回滚、撤销;
temp临时表空间:用于存放Oracle运行中需要临时存放的数据,如排序的中间结果等。
但是发现使用dba_tablespces数据字典只能够知道数据库表空间的信息,但是我并不知道每个表空间所花费的存储。而且两类表空间使用数据字典是不同的,可以使用dba_data_files和dba_temp_files
两个数据字典查看。
select * from dba_data_files;
select * from dba_temp_files;
使用表空间
表空间的使用主要是在创建数据表的时候。
创建数据表空间并使用特定表空间
语法:
create table 用户名 表空间(
  字段名称      字段类型    default 默认值,
  字段名称      字段类型    default 默认值,
  ...
) tablespace 表空间名称;
范例:
create table mytab(
id number,
name varchar2(20)
)tablespace dgq_data;

desc mytab;


















 
阅读(1363) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~