Oracle学习,大数据处理初步学习

1、创建分区,注意创建分区最好是在创建表的同时创建分区
  CREATE TABLE tablename
   ( ID NUMBER, 
TIMESTAMP NUMBER
   )
  partition by range (TIMESTAMP)
  (
partition P1 values less than (1000000),
partition P2 values less than (2000000),
partition P3 values less than (3000000),
partition P_MAXVALUE values less than (MAXVALUE)
)
;


2、创建索引,索引分为三种,B树索引,位图索引,全文索引
B树索引:A----》B,A表示无重复值,B表示全部值重复,越接近A就越适合B树索引,否则相反
create index indexname on tablename(field) local;
位图索引:适合重复值比较多的情况下,而且大数据联合查询比较合适,但是不适合对数据进行更新操作,如update,insert,delete
create bitmap index indexname on tablename(field) local;
全文索引:
create index indexname on tablename(field) indextype is ctxsys.context local;








3、数据库压缩,主要表现为表压缩,分区压缩,索引压缩
a  表压缩:
alter table tablename compress;
该语句执行后,如果表存在分区,则所有分区已进行压缩了
b  分区压缩
alter table tablename modify partition partitionname compress;
c  索引压缩
alter index indexname modify partition partitionname compress;
该语句执行报错,前提是因为没有在创建分区索引的时候指定压缩属性compress
即:
drop index indexname;
create index indexname on tablename(fieldname) local compress;
执行该语句后,可以执行索引压缩语句




4、常见分区种类:范围分区,哈希分区,列表分区,组合分区(范围-哈希,范围-列表)
a、范围分区:适合层次明显,如时间来划分,适合数据过期化处理,即数据归档等无变动的数据库
b、哈希分区:适合重复率低的情况,适合均匀分布
c、列表分区:适合高重复率字段值的表

==========================================================================




建立表空间和用户的步骤:  
用户  
建立:create user 用户名 identified by "密码";  
授权:grant create session to 用户名;  
            grant create table to  用户名;  
            grant create tablespace to  用户名;  
            grant create view to  用户名;  


表空间  
建立表空间(一般建N个存数据的表空间和一个索引空间):  
create tablespace 表空间名  
datafile ' 路径(要先建好路径)\***.dbf  ' size *M  
tempfile ' 路径\***.dbf ' size *M  
autoextend on  --自动增长  
--还有一些定义大小的命令,看需要  
 default storage(  
 initial 100K,  
 next 100k,  
);  


例子:创建表空间  
create tablespace DEMOSPACE   
datafile 'E:/oracle_tablespaces/DEMOSPACE_TBSPACE.dbf'   
size 1500M   
autoextend on next 5M maxsize 3000M;  
删除表空间  
drop tablespace DEMOSPACE including contents and datafiles  


用户权限  
授予用户使用表空间的权限:  
alter user 用户名 quota unlimited on 表空间;  
或 alter user 用户名 quota *M on 表空间;  






--表空间  
CREATE TABLESPACE sdt  
DATAFILE 'F:\tablespace\demo' size 800M  
         EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;   
--索引表空间  
CREATE TABLESPACE sdt_Index  
DATAFILE 'F:\tablespace\demo' size 512M           
         EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;       
  
--2.建用户  
create user demo identified by demo   
default tablespace demo;  
   
--3.赋权  
grant connect,resource to demo;  
grant create any sequence to demo;  
grant create any table to demo;  
grant delete any table to demo;  
grant insert any table to demo;  
grant select any table to demo;  
grant unlimited tablespace to demo;  
grant execute any procedure to demo;  
grant update any table to demo;  
grant create any view to demo;  


==================================================================================


一、 常用日期数据格式


1.Y或YY或YYY 年的最后一位,两位或三位
SQL> Select to_char(sysdate,'Y') from dual;
TO_CHAR(SYSDATE,'Y')
--------------------
7
SQL> Select to_char(sysdate,'YY') from dual;
TO_CHAR(SYSDATE,'YY')
---------------------
07
SQL> Select to_char(sysdate,'YYY') from dual;
TO_CHAR(SYSDATE,'YYY')
----------------------
007
2.Q 季度 1~3月为第一季度,2表示第二季度。
SQL> Select to_char(sysdate,'Q') from dual;
TO_CHAR(SYSDATE,'Q')
--------------------
2
3.MM 月份数
SQL> Select to_char(sysdate,'MM') from dual;
TO_CHAR(SYSDATE,'MM')
---------------------
05
4.RM 月份的罗马表示 (V在罗马数字中表示 5)
SQL> Select to_char(sysdate,'RM') from dual;
TO_CHAR(SYSDATE,'RM')
---------------------
V
5.Month 用9个字符长度表示的月份名
SQL> Select to_char(sysdate,'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------
5月
6.WW 当年第几周 (2007年5月29日为2007年第22周)
SQL> Select to_char(sysdate,'WW') from dual;
TO_CHAR(SYSDATE,'WW')
---------------------
22
7.W 本月第几周 (2007年5月29日为5月第5周)
SQL> Select to_char(sysdate,'W') from dual;
TO_CHAR(SYSDATE,'W')
--------------------
5
8.DDD 当年第几天 (2007年5月29日为2007年第149天)
SQL> Select to_char(sysdate,'DDD') from dual;
TO_CHAR(SYSDATE,'DDD')
----------------------
149
9. DD 当月第几天
SQL> Select to_char(sysdate,'DD') from dual;
TO_CHAR(SYSDATE,'DD')
---------------------
29
10.D 周内第几天
SQL> Select to_char(sysdate,'D') from dual;
TO_CHAR(SYSDATE,'D')
--------------------
3
11.DY 中文的星期几 ( (2007年5月29日为星期二))
SQL> Select to_char(sysdate,'DY') from dual;
TO_CHAR(SYSDATE,'DY')
---------------------
星期二
12.HH或HH12 12进制小时数 (16:09分为用12小时制计时为4点)
SQL> Select to_char(sysdate,'HH') from dual;
TO_CHAR(SYSDATE,'HH')
---------------------
04
13.HH24 24小时制
SQL> Select to_char(sysdate,'HH24') from dual;
TO_CHAR(SYSDATE,'HH24')
-----------------------
16
二、常用时间函数
1.trunc(sysdate,'Q') 本季度第一天
SQL> select trunc(sysdate,'Q') from dual;
TRUNC(SYSDATE,'Q')
------------------
2007-4-1
2.trunc(sysdate,'D') 本周的第一天(周日)
SQL> select trunc(sysdate,'D')from dual;
TRUNC(SYSDATE,'D')
------------------
2007-5-27


3.last_day(sysdate) 本月最后一天
SQL> select last_day(sysdate) from dual;
LAST_DAY(SYSDATE)
-----------------
2007-5-31 15:20:3
4.add_months(sysdate,2) 日期sysdate后推2个月


SQL> select add_months(sysdate,2) from dual;
ADD_MONTHS(SYSDATE,2)
---------------------
2007-7-29 15:21:14
5.next_day(sysdate,2) 日期sysdate之后的第一周中,第2(指定星期的第几天)是什么日期
SQL> select next_day(sysdate,2) from dual;
NEXT_DAY(SYSDATE,2)
-------------------
2007-6-4 15:22:10
6.Months_between(f,s) 日期f和s间相差月数
SQL> select months_between(sysdate,to_date('2007-04-12','yyyy-mm-dd'))from dual;
MONTHS_BETWEEN(SYSDATE,TO_DATE
------------------------------
1.56909908900836


7.得到SYSDATE+5所在的月份
SQL> SELECT to_char(SYSDATE+5,'mon','nls_date_language=american') FROM dual;
TO_CHAR(SYSDATE+5,'MON','NLS_D
------------------------------
jun
8.current_date()返回当前会话时区中的当前日期 。
9.select dbtimezone from dual;
10.extract()找出日期或间隔值的字段值
SQL> select extract(month from sysdate) "This Month" from dual;
This Month
----------
5
SQL> select extract(year from sysdate) "This year" from dual;
This year
----------
2007
SQL> select extract(month from add_months(sysdate,2)) " Month" from dual;
Month
----------
7


==================================================================
三、一些实践后的用法:
1.上月末天:
select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;
2.上月今天
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;
3.上月首天
SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;
4.要找到某月中所有周五的具体日期
SELECT to_char(b.a,'YY-MM-DD') 
FROM ( SELECT trunc(SYSDATE,'mm')+ROWNUM-1 a
FROM dba_objects where rownum < 32 ) b
WHERE to_char(b.a,'day')='星期五';


如果把where to_char(t.d, 'MM') = to_char(sysdate, 'MM')改成sysdate-90,即为查找当前月份的前三个月中
的每周五的日期。


5.得到系统当前月及以后的日期
select trunc(sysdate, 'MM')+ROWNUM-1 FROM dba_objects ;
 
-----------------------------------
to_date 字符串类型转为换日期类型 
字符串中的相应位置上的字符,必须符合时间范围的限制  
14.MI 分钟数(0~59)
提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。
15.SS 秒数(0~59)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值