分类: 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.PCTFREE和PCTUSED总和不能大于等于100。
14.单独一个事务不能跨越多个回滚段。
15.索引表不含ROWID值。
16.拥有不同大小的回滚段没有任何益处。
17.COMMIT后,数据不一定立即写盘(数据文件)。
18.一个事务即使不被提交,也会被写入到重做日志中。
19.Oracle 8.0.4中,在初始安装时建立的缺省数据库,实例名为ORCL 。
20.一个块的最大长度为16KB(有2K、4K、8K、16K)。
每个数据库最大文件数(按块大小)
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权限,则导入用户可以不用指定fromuser、touser参数
如果导出用户拥有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、数据定义语言:create、alter、drop、truncate(创建、修改结构、删除、截断)(其他:rename)
DML、数据操纵语言:insert、delete、select、update(增、删、查、改)
DCL、数据控制语言:grant、revoke(授权、回收)、set role
事务控制:commit、rollback、savepoint(其他:lock table、set constraint(s)、set transaction)
审计控制:audit、noaudit
系统控制:alter system
会话控制:alter session
其他语句:comment(添加注释)、explain plan、analyze(收集统计)、validate、call
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
15、select的函数
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键分隔