Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1172423
  • 博文数量: 312
  • 博客积分: 12522
  • 博客等级: 上将
  • 技术积分: 3376
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-27 18:35
文章分类

全部博文(312)

文章存档

2016年(3)

2015年(1)

2013年(1)

2012年(28)

2011年(101)

2010年(72)

2009年(13)

2008年(93)

分类: Oracle

2008-02-27 18:42:27

oracle学习个人总结

 

表空间

创建表空间

SQL> create tablespace emp

  2  logging

  3  datafile '/oracle/oradata/dba/emp.dbf' size 5M extent

  4  management local

增加表空间大小

SQL> alter tablespace emp

  2  add datafile '/oracle/oradata/dba/emp_1.dbf' size 3M;

删除表空间

SQL> drop tablespace emp including contents;

2          

创建用户

create user jackylau identified by richie default tablespace emp temporary

tablespace temp quota 15m on emp password expire;

授权用户

grant dba to jackylau with admin option;

alter user jackylau default role all;

修改用户密码

alter user jackylau identified by richie

创建表

SQL> create table qq

  2  (name varchar(20),

  3  id number(10),

  4  relation varchar(6),

  5  gender varchar(4)

6         );

从其它表中建表

create table temp as select name,id from qq;

重新命名一个表名

rename qq to qqtest

查看一个表的结构

desc table_name;

插入记录

insert into qq (name,id,relation,gender) values ('宝儿','33796776','朋友','');

insert into qq values ('宝儿','33796776','朋友','');

修改记录

 update qq set name='apple'

 where id = '371692320';

id号为371692320的项为name所在的名改为apple

更改列的字符大小

alter table qq modify (gender varchar(6));

增加列

alter table qq add time date;

删除列

alter table qq set unused ("TIME") cascade constraints;(注意TIME要大写)

删除内容

truncate table qq drop storage;(截掉,不可恢复)

查询

select * from qq;

select id from qq where id='18243386';

select * from qq where gender='' order by name;

select * from qq where id like '%8%' order by name;

删除记录

SQL> delete from qq

  2  where id='18243386';

回滚

消除上一个COMMIT命令后的所做的全部修改,使得数据库的内容恢复到上一个COMMIT执行后的状态.使用方法是:

SQL>rollback;

LINK

那个字段 LIKE "字符组合"

字符组合 可以是固定字符 % _ 的随意组合,其中 % 代表任意长度的任意字符,_ 代表单个字符

where name like 'jacky___' 能查到 jackylau 却不能查到 jackylau+

where name like '%acky___' 能查到 jackylau, abcackylau 却不能查到 jackylausomeword

SQL> edit s<回车>

如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件,

在其中输入select * from tab;,存盘退出。

SQL> @s<回车>

创建用户并授权

SQL> create user 用户1 identified by 密码;

SQL> grant connect,resource to
用户1;

SQL> connect
用户1/密码

SQL> create table
1(1 number,2 date);

SQL> create index
索引1 on 1(1);

SQL> drop index
索引1;

SQL> drop table
1;

创建视图

Create or replace view testview as select col1,col2,col3 from table_name;

create view test_view as select name,id,gender from qq;

select * from test_view;

create view qqtest as select name,id,relation lation from qq where id>100000000;(并重新命名relation列为lation)

create view qqtest as select name,id,gender from qq where id>100000000 with read only;

创建序列

CREATE SEQUENCE inc_hourdiscount INCREMENT BY 1 START WITH 1    MAXVALUE 1.0E28;

查看数据库

show parameter db_name;

select name from v$database;

如何单独备份一个或多个用户?

exp system/manager owner=(用户1,用户2,,用户n) file=导出文件

如何单独备份一个或多个表

exp 用户/密码 tables=(1,,2)

Oracle入门基本知识一点通

 

Oracle 基本知识轻松学:



  1.一个表空间只能属于一个数据库。

  2.每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上)。

  3.每个数据库最少有一个表空间(SYSTEM表空间)。

  4.建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典。

  5.每个数据库最少有两个联机日志组,每组最少一个联机日志文件。

  6.一个数据文件只能属于一个表空间。

  7.一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中。

  8.建立新的表空间需要建立新的数据文件。

  9.数据文件被ORACLE格式化为ORACLE块,Oracle9i以前版本中,ORACLE块的大小是在第一次创建数据库时设定的。

  10.并且以后不能改变,要想改变,只能重建数据库。

  11.一个段segment只能属于一个表空间,但可以属于多个数据文件。

12.
一个区extent只能属于一个数据文件,即区间(extent)不能跨越数据文件。

  13.PCTFREEPCTUSED总和不能大于等于100

  14.单独一个事务不能跨越多个回滚段。

  15.索引表不含ROWID值。

  16.拥有不同大小的回滚段没有任何益处。

  17.COMMIT后,数据不一定立即写盘(数据文件)。

  18.一个事务即使不被提交,也会被写入到重做日志中。

  19.Oracle 8.0.4中,在初始安装时建立的缺省数据库,实例名为ORCL

  20.一个块的最大长度为16KB(2K4K8K16K)
  每个数据库最大文件数(按块大小)
  2K块        20000个文件
  4K块        40000个文件
  8K块或以上     65536个文件


  21.oracle server可以同时启动多个数据库 。

  22.一套操作系统上可以安装多个版本的ORACLE数据库系统(UNIX可以,NT不可以)。

  23.一套ORACLE数据库系统中可以有多个ORACLE数据库及其相对应的实例 。

  24.每个ORACLE数据库拥有一个数据库实例(INSTANCE)(OPS除外)。

  25.所以,一套操作系统上同时可以有多个oracle数据库实例启动。

oracle常用命令

 

1、如何单独备份一个或多个用户:
   D:\>exp scott/tiger file=
导出文件
   D:\>exp system/manager owner=(
用户1,用户2,…,用户n) file=导出文件
2
、如何单独备份一个或多个表:
   D:\>exp
用户/密码 tables=
   D:\>exp
用户/密码 tables=(1,…,2)
   D:\>exp system/manager tables=(
用户.)
   D:\>exp system/manager tables=(
用户1.1,用户2.2)
3
、如何导入指定表
   D:\>exp scott/tiger file=a.dmp
   D:\>imp test/test fromuser=scott tables=emp file=a.dmp
   D:\>imp test/test tables=dept file=a.dmp
 
(说明:如果导出用户没有DBA权限,则导入用户可以不用指定fromusertouser参数
         
如果导出用户拥有DBA权限,则导入用户也必须拥有DBA权限)
4
、如何给表、列加注释
   SQL>comment on table
is '表注释';
  
注释已创建。
   SQL>comment on column
. is '列注释';
  
注释已创建。
   SQL> select * from user_tab_comments where comments is not null;
   SQL> select * from user_col_comments where comments is not null;

5
 
查看当前用户下有什么对象(表、视图、同义词、快照)
  SQL> select * from tab;
 
查看表结构
  SQL> describe
表名
 
简写以上命令
  SQL> desc
表名
6

  DDL
、数据定义语言:createalterdroptruncate(创建、修改结构、删除、截断)(其他:rename
  DML
、数据操纵语言:insertdeleteselectupdate(增、删、查、改)
  DCL
、数据控制语言:grantrevoke(授权、回收)、set role
 
事务控制:commitrollbacksavepoint(其他:lock tableset constraint(s)set transaction
 
审计控制:auditnoaudit
 
系统控制:alter system
 
会话控制:alter session
 
其他语句:comment(添加注释)、explain plananalyze(收集统计)、validatecall
7

  1
)、查看当前所有对象

  SQL> select * from tab;

  2)、建一个和a表结构一样的空表

  SQL> create table b as select * from a where 1=2;

  SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;

  3)、察看数据库的大小,和空间使用情况

  SQL> col tablespace format a20
  SQL> select b.file_id
  文件ID,
  b.tablespace_name  表空间,
  b.file_name     物理文件名,
  b.bytes       总字节数,
  (b.bytes-sum(nvl(a.bytes,0)))   已使用,
  sum(nvl(a.bytes,0))        剩余,
  sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
  from dba_free_space a,dba_data_files b
  where a.file_id=b.file_id
  group by b.tablespace_name,b.file_name,b.file_id,b.bytes
  order by b.tablespace_name
  /
  dba_free_space --表空间剩余空间状况
  dba_data_files --数据文件空间占用情况


4
、查看现有回滚段及其状态

SQL> col segment format a30
SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;

5、查看数据文件放置的路径

SQL> col file_name format a50
SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;

6、显示当前连接用户

SQL> show user

7、把SQL*Plus当计算器

SQL> select 100*20 from dual;

8、连接字符串

SQL> select 1||2 from 1;
SQL> select concat(
1,2) from 1;

9、查询当前日期

SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;

10、用户间复制数据

SQL> copy from user1 to user2 create table2 using select * from table1;

11、视图中不能使用order by,但可用group by代替来达到排序目的

SQL> create view a as select b1,b2 from b group by b1,b2;

12、通过授权的方式来创建用户

SQL> grant connect,resource to test identified by test;

13、备份
 create table yhda_bak as select * from yhda;

14、提出相同的记录

select  sid,count(*) from yhda a group by sid having count(*)>1

15select的函数

ORDER BY – 按照指定列排序返回结果的子句
DISTINCT –
只返回结果集合内唯一行的关键词
COUNT --
返回匹配查询的数据行总数数值的函数
AVG –
该函数返回指定列的平均值
SUM –
该函数把指定的列中的数字加起来
MIN –
该函数返回列中最小的非NULL
MAX –
该函数返回列中的最大值
GROUP BY –
按列汇集查询函数结果的子句

13.Oracle数据直接导出到文本文件的方法

 利用Oracle中的Spool缓冲池技术可以实现Oracle数据导出到文本文件。
1)
、在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件名:
 spool d:\output.txt
2)
、在命令行中随便输入你的SQL查询:
 select mobile from customer;
 select mobile from client;
 ……
3)
、在命令行中输入缓冲结果命令:
 spool off;
 
则系统将缓冲池中的结果都输出到"output.txt"文件中。
 
TAB键分隔

 

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