sql部分

查看表空间
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 

你可能感兴趣的:(sql部分)