查看表空间
select dbf.tablespace_name,
dbf.totalspace "总量(M)",
dbf.totalblocks as 总块数,
dfs.freespace "剩余总量(M)",
dfs.freeblocks "剩余块数",
(dfs.freespace / dbf.totalspace) * 100 "空闲比例"
from (select t.tablespace_name,
sum(t.bytes) / 1024 / 1024 totalspace,
sum(t.blocks) totalblocks
from dba_data_files t
group by t.tablespace_name) dbf,
(select tt.tablespace_name,
sum(tt.bytes) / 1024 / 1024 freespace,
sum(tt.blocks) freeblocks
from dba_free_space tt
group by tt.tablespace_name) dfs
where trim(dbf.tablespace_name) = trim(dfs.tablespace_name)
1、select * from dba_data_files; -- 查看数据文件相关信息
2、select * from user_users; -- 查看当前登陆用户
3、select * from dba_users; -- 查看该系统下所有用户
步骤一: 删除user
drop user ×× cascade
说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。
步骤二: 删除tablespace
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
-- Create table
create table CHARGING_LOG
(
oid VARCHAR2(20) not null,
chargedbusid VARCHAR2(20),
startchargingtime DATE,
endchargingtime DATE,
addinfo VARCHAR2(200)
)
tablespace TS_ZZG
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Add comments to the columns
comment on column CHARGING_LOG.oid
is '唯一标示';
comment on column CHARGING_LOG.chargedbusid
is '充电车辆';
comment on column CHARGING_LOG.startchargingtime
is '开始充电时间';
comment on column CHARGING_LOG.endchargingtime
is '结束充电时间';
comment on column CHARGING_LOG.addinfo
is '预留字段';
-- Create/Recreate primary, unique and foreign key constraints
alter table CHARGING_LOG
add constraint OID primary key (OID)
using index
tablespace TS_ZZG
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
例如,要生成一个2003年内的任意日期:
/*
* 分析:2003年内的任意日期,即日期范围是(2003-01-01, 2003-12-31)
* 可以转化为 2003-01-01 + (0, 365),
* 其中,2003-01-01 就是‘指定日期’; (0, 365) 就是‘指定范围’
*/
1. 首先确定2003年1月1日的日期整数:
SQL>select to_char(to_date('2003-01-01', 'yyyy-MM-dd'), 'J') from dual; --系统给的结果是: 2452641
2. 生成指定范围[min_value, max_value]内的随机日期:
SQL>select to_date(2452641 + trunc(DBMS_RANDOM.VALUE(0, 365)), 'J') from dual;
oracle 产生随机日期+时间
SELECT to_date(TRUNC(DBMS_RANDOM.VALUE(
to_number(to_char(to_date('20110629','yyyymmdd'),'J')),
to_number(to_char(to_date('20110630','yyyymmdd')+1,'J')))),'J')+
DBMS_RANDOM.VALUE(1,3600)/3600
prize_time FROM dual
ORA-00922: 选项缺失或无效
产生随机数
trunc(dbms_random.value(100000,999999))
INSERT INTO "SYS"."T_PARTITION_RANGE" (
"ID", "NAME"
) VALUES (
DBMS_RANDOM.VALUE(0.00, 2147483647.00), DBMS_RANDOM.STRING('A', DBMS_RANDOM.VALUE(1, 50))
);
oracle分页
SELECT * FROM ( SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21
一. 使用union 或union All语句
1. union 与 union all语句的区别
? UNION 组合多个表(或结果集)并将其作为单个结果集返回;
? UNION ALL 在结果中包含所有的行,包括重复行。
? 也就是说,使用UNION组合两个表时,将重复的记录删除;而使用UNION ALL组合两多个表时,不考虑结果集中是否存在重复记录。
2. 使用 UNION 运算符时请注意:
? 所有查询中的列数和列的顺序必须相同。
在使用 UNION 运算符组合的语句中,所有显示列表的数目必须相同(列表内容可以包括:列名、算术表达式、聚合函数等);
? 数据类型必须兼容。
在使用 UNION 组合的结果集中的相应列必须具有相同数据类型,或者两种数据类型之间存在隐性数据转换,或提供了类型转换。例如,在datetime 数据类型的列和 binary 数据类型的列之间不可能存在 UNION 运算符,除非提供了显式转换,而在 money 数据类型的列和 int 数据类型的列之间可以存在 UNION 运算符,因为它们可以进行隐性转换。
? 用 UNION 运算符组合的各语句中对应的结果集列出现的顺序必须相同,因为 UNION 运算符是按照各个查询给定的顺序逐个比较各列。
3. 与其它 Transact-SQL语句一起使用 UNION 语句时,应注意:
? 如果在有UNION的语句中使用INTO语句,则只能在最终表(或结果集)中使用,如果要在单个表(或结果集)中使用INTO语句,MS-SQL将会提示错误;
错误语句:Select AID,AName,ADemo Into From ATable Union All Select BID,BName,BDemo Into From Btable
? 只有在 UNION 语句的结尾,才允许使用 ORDER BY 和 COMPUTE 子句以定义最终结果的顺序或计算汇总值。不能在组建 UNION 语句的单独查询中使用这些子句。
1. Except运算符
和 UNION 指令类似, Except也是对两个 SQL 语句所产生的结果做处理的。不同的地方是Except在每一个表(或结果集)与第二个表(或结果集)比较前,已从每一个表的结果集中清除了所有重复的信息。也就是从Except运算所得到的结果集绝不会包含重复的记录(行)。
例如:我们要在Table_A(学生信息表)与Table_B(学生必修课完成信息表)中找出未完成的学生信息
Select * From Table_A
Except
Select * From Table_B
注意:许多DBMS系统不支持EXCEPT运算符,则此时不得不使用Left Outer Join运算符来实现。而在Oracle中的Minus与EXCEPT相似。
2. INTERSECT运算符
和 UNION 指令类似, INTERSECT 也是对两个 SQL 语句所产生的结果做处理的。不同的地方是,UNION 是联集,而 INTERSECT 是交集。也就是说,INTERSECT生成的结果集是多个表或结果集所共有的记录(行)。
Select AID,AName,ADemo From ATable
INTERSECT
Select BID,BName,BDemo From Btable
三. 使用UNION Corresponding组合来自两个或多个与UNION不兼容的表中的行
例如:有两个表
Create Table Table_A(ID int,office int,address varchar(20),department char(5),pay money)
Create Table Table_B(office int,ID int,address varchar(20),department char(5))
可以使用UNION Corresponding来获取两个表中有共同列名的列中数据:
Select * From table_A UNION Corresponding Select * From Table_b