Oracle数据库的基础使用
作者:网络转载 发布时间:[ 2016/11/11 9:51:54 ] 推荐标签:数据库 Oracle
/*
CREATE TABLE SALES1
(
SALES_ID NUMBER,
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE NOT NULL
)
PARTITION BY RANGE (SALES_DATE)
(
PARTITION P1 VALUES LESS THAN (to_date('2013-04-1', 'yyyy-mm-dd')),
PARTITION P2 VALUES LESS THAN (to_date('2013-07-1', 'yyyy-mm-dd')),
PARTITION P3 VALUES LESS THAN (to_date('2013-10-1', 'yyyy-mm-dd')),
PARTITION P4 VALUES LESS THAN (to_date('2014-01-1', 'yyyy-mm-dd')),
PARTITION P5 VALUES LESS THAN (maxvalue)
);
--要查看在第三季度的数据
SELECT * FROM SALES1 partition(P3);
--要删除第三季度的数据
DELETE FROM SALES1 partition(P3);*/
--间隔分区
--创建间隔分区表
CREATE TABLE SALES2
(
SALES_ID NUMBER,
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE NOT NULL
)
PARTITION BY RANGE(SALES_DATE)
INTERVAL(NUMTOYMINTERVAL(3,'MONTH'))
(PARTITION P1 VALUES LESS THAN (to_date('2013-04-1','yyyy/mm/dd')));
--插入数据
INSERT INTO sales2 VALUES (1,'a',to_date('2013-08-1'),10,'1');
--获得分区情况
SELECT table_name,partition_name
FROM user_tab_partitions
WHERE table_name=UPPER('sales2');
--查询输出结果,系统自动根据输入数据情况创建新分区“SYS_P82”
TABLE_NAME PARTITION_NAME
----------------------------
SALES2 P1
SALES2 SYS_P82
--查询分区数据
SELECT * FROM sales2 PARTITION(sys_P82);
/*
===========================================================
| 利用间隔分区将开始创建时没有分区的表创建为新的间隔分区表
============================================================
*/
/*准备工作*/
--1.创建普通SALES表
CREATE TABLE SALES
(
SALES_ID NUMBER,
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE NOT NULL
);
--删除数据库不删除结构
/*truncate table dept;*/
--查询所有
/*select * from dept;*/
--添加列
/*alter table dept add(looc varchar2(10));*/
--删除列
/*alter table dept drop column looc;*/
--添加数据
/*insert into dept values('40','accp4','邯郸4');*/
--选择无重复的数据查询
/*select distinct dname,loc from dept;*/
--升序排列
/*select * from dept order by loc ASC;*/
--降序排序
/*select * from dept order by loc DESC;*/
--用别名显示
/*select depton as '学号', dname as '课程', loc '地区', FROM dept;*/
--复制个表出来吧数据,和结构,复制过来
/*create table dept2
as
select * from dept;*/
----复制个表出来不复制数据,只结构,复制i过来
/*create table dept3
as
select * from dept where 1=2;*/
--查看表中的函数
/*select count(1) from dept;*/
--查看表中的函数(效率低)
/*select count(*) from dept;*/
--取出列不重复的数据
/*select dname,loc
from dept
group by dname,loc
having(count(dname||loc)<2);*/
--事务控制语句
--commit 提交事务
--rollback 回滚事务
--savepoint 在事务中创建节点
-----------------------------
/*commit;
insert into dept2 values('01','accp01','邯郸01');
/*savepoint a;
insert into dept values('4000','accp400','邯郸400');
rollback to savepoint a;
select * from dept;
;
select * from dept;**/
------------------------------
--分页查询
/*SELECT *
FROM (SELECT e.*,rownum rn
FROM (SELECT *
FROM employee
ORDER BY sal DESC
) e
)
WHERE rn>=5 AND rn<=9;*/
-------------------------
--SQL操作符
--1.算数操作符号 +-*/加减乘除
--2.比较运算符 = <= >= AND IN LIKE
--3.逻辑运算符 or and not 或者,和,非
--4.集合操作符 nuion(联合) unionall(联合所有) intersect(交集) minus(减级)
--union 联合查询两个(不重复)的数据
/*select * from dept
union
select * from dept2;*/
--union联合查询排序
/*select loc from dept
union
select loc from dept2
order by loc;*/
--union all 查询所有的数据
/*select * from dept
union all
select * from dept2;
*/
--intersect 交集 返回两个都有的行
/*select * from dept
intersect
select * from dept2;*/
--minus 查询第一个中在第二个里面没有的行
/*select * from dept
miuns
select * from dept2;*/
--链接操作符
--链接运算符||用于将两个或者多个字符串合并成一个字符串,或者将一个字符与一个数值合并在一起
/*select dname||'_'||loc from dept;*/
--主键
/*alter table dept
add constraint depton PRIMARY KEY (depton);*/
--自增
--sql函数
--to_char把时间转换为varchar2数据
/*select to_char(sysdate,'YYYY"年"fmMM"月"fmDD"日"HH24:MI:ss')from dual;*/
--将数值转换为字符串并且用货币当为前缀
/*select to_char(1210.7,'$9,999.00') from dual;*/
/*select to_char(sysdate,'YYYY"年"fmMM"月"fmDD"日"hh:mi:ss') from dual;*/
/*select to_char(1200.2,'$9,999.00') from dual;*/
/*select to_char(sysdate,'YYYY"年"fmMM"月"fmDD"日"HH24:MI:SS') from dual;
select to_char(123.1,'$9,999.00') from dual;*/
--将char varchar2转换为日期函数
/*select to_date('2017-01-01','yyyy-mm-dd') from dual;*/
--nvl 的用法如果money2是个null 那么什么和它想加都是null了,nvl意思是如果money2是个null把它换成0
--select stuname,money+nvl(money2,0) from stuinfo;
--判断money2如果money2不是null返回money+money2,如果是null返回money.
/*select stuname,nvl2(money2,money+money2,money) from stuinfo;*/
--转换date和java中的switch语句条件如果是01是一月 如果02二月 else是后十月
/*select decode(to_char(day,'fmmm'),'01','一月','02','二月','后十月') from stuinfo;*/
--插入数据
/*insert into emp values(1111,'雷老虎','管理',2,to_date('1991-01-02','yyyy/mm/dd'),1000,1000,12);*/
-----------------------------------------------------
--分析函数
--rank
/*select empno,ename,sal,DENSE_rank() over(order by sal desc) as 排名 from emp;*/
/*select empno,ename,sal,ROW_NUMBER() over(order by sal desc) from emp;*/
---------------------------------------------------------------------------
--SQL综合练习
--显示员工的职年度
--使用round对年份四舍五入
/*select empno,ename,hiredate, to_char(round(hiredate,'mm'),'YYYY')||'年份' from emp;*/
--列出只有3个雇员的部门having 是在group by 后面使用
/*select deptno,count(1)from emp
group by deptno
having count(1)>3;
*/
--查看是不是后入职的
/*select ename, hiredate,last_day(hiredate) from emp where hiredate=last_day(hiredate);*/
--创建个表空间
/*create tablespace EPET
datafile'D:orcaleappOracleoradataXEEPET.DBF'
size 5m
autoextend on;*/
--删除表空间数据文件需要手动删除
/*drop tablespace EPET;*/
--删除表空间数据文件一起删除
/*drop tablespace EPET including contents and datafiles;*/
--修改表空间的大小 改变数据文件的大小
/*alter database
datafile 'D:orcaleapporacleoradataXEEPET.DBF'
resize 10m;*/
--表空间只读
/*alter tablespace EPET read only;*/
--表空间可读可写
/*alter tablespace EPET read write;*/
--创建用户
/*create user li
identified by yapeng
default tablespace epet;--默认表空间*/
--删除用户
/*drop user li cascade;*/
--用户授权
/*grant resource to li;*/
--撤销权限
/*revoke resource from li;*/
--授权查询
/*grant select on emp to li;*/
--序列
/*create table toys
(
toyid number not null,
toyname varchar2(10),
toydate date
);*/
/*create sequence se
start with 0
increment by 1
maxvalue 2000
nocycle
cache 30; */
/* insert into toys (toyid,toyname,toydate)
values(se.nextval,'李逵',to_date('2012/01/01','YYYY,MM,dd')); */
--查看当前序列的值
/*select se.currval from toys;
*/
--更改序列
/*--dba给予创建同义词权限
grant create synonym to T111;*/
--创建同义词
/*create or replace synonym emp for system.emp;*/
--dba给予创建公共同义词权限
/*grant create public synonym to system;*/
--创建公共同义词
/*create or replace public synonym d for emp;*/
--把查询权限给所有人
/*grant select on emp to public;*/
--查看用户有哪些同义词
/*select * from user_synonyms;*/
--索引
--1:B树索引 是Oracle的标准索引用于数值,适用于高基数列
--2: 反向键索引,主要解决IO瓶颈问题的
--3:位图索引用于取值较少的(主键不适合)
--表分区范围分区
/*
CREATE TABLE SALES1
(
SALES_ID NUMBER,
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE NOT NULL
)
PARTITION BY RANGE (SALES_DATE)
(
PARTITION P1 VALUES LESS THAN (to_date('2013-04-1', 'yyyy-mm-dd')),
PARTITION P2 VALUES LESS THAN (to_date('2013-07-1', 'yyyy-mm-dd')),
PARTITION P3 VALUES LESS THAN (to_date('2013-10-1', 'yyyy-mm-dd')),
PARTITION P4 VALUES LESS THAN (to_date('2014-01-1', 'yyyy-mm-dd')),
PARTITION P5 VALUES LESS THAN (maxvalue)
);
--要查看在第三季度的数据
SELECT * FROM SALES1 partition(P3);
--要删除第三季度的数据
DELETE FROM SALES1 partition(P3);*/
--间隔分区
--创建间隔分区表
CREATE TABLE SALES2
(
SALES_ID NUMBER,
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE NOT NULL
)
PARTITION BY RANGE(SALES_DATE)
INTERVAL(NUMTOYMINTERVAL(3,'MONTH'))
(PARTITION P1 VALUES LESS THAN (to_date('2013-04-1','yyyy/mm/dd')));
--插入数据
INSERT INTO sales2 VALUES (1,'a',to_date('2013-08-1'),10,'1');
--获得分区情况
SELECT table_name,partition_name
FROM user_tab_partitions
WHERE table_name=UPPER('sales2');
--查询输出结果,系统自动根据输入数据情况创建新分区“SYS_P82”
TABLE_NAME PARTITION_NAME
----------------------------
SALES2 P1
SALES2 SYS_P82
--查询分区数据
SELECT * FROM sales2 PARTITION(sys_P82);
/*
===========================================================
| 利用间隔分区将开始创建时没有分区的表创建为新的间隔分区表
============================================================
*/
/*准备工作*/
--1.创建普通SALES表
CREATE TABLE SALES
(
SALES_ID NUMBER,
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE NOT NULL
);
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南