Oracle学习及练习

文章目录


1-sql语句

创建表空间
create tablespace waterboss
datafile 'D:\Oracle19\waterboss\waterboss.dbf'
size 100m  -- 存储大小
autoextend on 
next 10m
创建用户
create user wateruser 
identified by bc123
default tablespace waterboss
赋予权限
grant dba to wateruser
子查询 where
单横操作符 =等于, >大于, >=大于等于, <小于, <=小于等于 ,<>不等于
select * from T_account where year='2012' and  month='01' and usenum>
(select AVG(USENUM) from T_account where year='2012' and  month='01' );
多横子查询 in等于列表中任何一个,any和子查询返回任意一个值比较,all和子查询返回的所有值比较
select * from t_owners where addressid in 
(select a.id from T_address a where name like '%花园%')
不含有花园
select * from t_owners where addressid not in 
(select a.id from T_address a where name like '%花园%')
子查询 from
select * from
(select o.id,o.name,t.name "业主类型" from t_owners o,t_ownertype t where ownertypeid=t.id)
where 业主类型='居民';
子查询 select
select id,name,(select name from t_address where id=addressid) "地址名称" from t_owners
多重嵌套查询
select id,name,
(select name from t_address where id=addressid) "地址名称",
(select areaid from t_address where id=addressid) "所在区域id",
(select (select name from t_area where id=areaid) from t_address where id=addressid) "所在区域"
 from t_owners;

分页查询
简单分页
select * from t_account where rownum<=10;	
赋值r输出
select * from (select rownum  r,t.* from t_account t)   where r>=10 and r<20;
升序排列
select * from (select rownum  r,t.* from (select * from t_account t order by usenum desc) t)   where r>=10 and r<20;
单横函数
字符函数 length
伪表 dual
select length('abcde') from dual; 字符长度
select substr('abcde',4,2) from dual; 截取字符
select concat('abcde','abnnn') from dual; 字符拼接 
select 'abcde'||'2'||'w' from dual; 推荐使用
select round(100.523145) from dual; 四舍五入函数ROUND
select round(100.523145,2) from dual; 保留两位小数
select trunc((100.523145) from dual数字截取
select trunc(100.523145) from dual 截取整数
select mod(10,3) from dual取余
日期函数
select add_months(sysdate ,2)  from dual 加月
select last_day(sysdate)  from dual 所在月的最后一天
日期截取
select trunc(sysdate)  from dual 按日截取
select trunc(sysdate,'mm')  from dual 按月截取
select trunc(sysdate,'yyyy')  from dual 按年截取
select trunc(sysdate,'hh')  from dual 按小时截取
select trunc(sysdate,'mi')  from dual 按分钟截取
转换函数
select to_char(1024)  from dual 数字转字符串
select to_char(sysdate,'yyyy-mm-dd')  from dual 日期转字符串
select to_char(sysdate,'yyyy')||'年'||to_char(sysdate,'mm')||'月'  from dual 年月拼接
字符串转日期
select to_date('2016-03-10','yyyy-mm-dd')  from dual
字符串转数字
select to_number('12589')  from dual
其他函数-空值处理
select nvl(null,0)  from dual 第一个参数是null就返回0 第一个参数100 就返回100
select l.*,nvl(maxnum,99999) from t_pricetable l 查询为空的默认填99999
条件取值
select name,decode(ownertypeid,1,'商业',2,'居民') from t_owners
另一种方式

select name,(case 
when ownertypeid=1 then '商业'
when ownertypeid=2 then '居民'
else '其他'
  end) from t_owners
 select ((case when 100>1 then 5 else null end)*5) from dual  --条件计算
行列转换
select 
(select name from t_area where id=areaid) "区域",
sum(case when month='01' then money else 0 end) "一月",
sum(case when month='02' then money else 0 end) "二月",
sum(case when month='03' then money else 0 end) "三月",
sum(case when month='04' then money else 0 end) "四月",
sum(case when month='05' then money else 0 end) "五月",
sum(case when month='06' then money else 0 end) "六月",
sum(case when month='07' then money else 0 end) "七月",
sum(case when month='08' then money else 0 end) "八月",
sum(case when month='09' then money else 0 end) "九月",
sum(case when month='10' then money else 0 end) "十月",
sum(case when month='11' then money else 0 end) "十一月",
sum(case when month='12' then money else 0 end) "十二月"
from t_account where year='2012' group by areaid
添加条件
select 
(select name from t_area where id=areaid) "区域",
sum(case when month>='01' and month<='03' then money else 0 end) "第一季度",
sum(case when month>='04' and month<='06' then money else 0 end) "第二季度",
sum(case when month>='07' and month<'=09' then money else 0 end) "第三季度",
sum(case when month>='10' and month<'=12' then money else 0 end) "第四季度"
from t_account where year='2012' group by areaid
分析函数
值相同 排名相同 序号跳跃
select rank() over(order by usenum desc),l.* from t_account l	
值相同 排名相同 序号连续
select dense_rank() over(order by usenum desc),l.* from t_account l
序号连续 不管值是否相同
select row_number() over(order by usenum desc),l.* from t_account l
集合运算
并集(all就会查出重复的所有结果)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.desc table_name 可以查询表的结构 2.怎么获取有哪些用户在使用数据库 select username from v$session; 3.如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ? select sys_context('userenv','ip_address') from dual; 如果是登陆本机数据库,只能返回127.0.0.1 4.如何给表、列加注释? SQL>comment on table 表 is '表注释'; 注释已创建 SQL>comment on column 表.列 is '列注释'; 注释已创建。 查询该用户下的注释不为空的表 SQL> select * from user_tab_comments where comments is not null; 5.如何在ORACLE中取毫秒? select systimestamp from dual; 6.如何在字符串里加回车? 添加一个||chr(10) select 'Welcome to visit'||chr(10)||'www.CSDN.NET' from dual ; 7.怎样修改oracel数据库的默认日期? alter session set nls_date_format='yyyymmddhh24miss'; 8.怎么可以看到数据库有多少个tablespace? select * from dba_tablespaces; 9.如何显示当前连接用户? SHOW USER 10.如何测试SQL语句执行所用的时间? SQL>set timing on ; 11.怎么把select出来的结果导到一个文本文件中? SQL>SPOOL F:\ABCD.TXT; SQL>select * from table; SQL >spool off; 12.如何在sqlplus下改变字段大小? alter table table_name modify (field_name varchar2(100)); 改大行,改小不行(除非都是空的) 13.如果修改表名? alter table old_table_name rename to new_table_name; 14.如何搜索出前N条记录? (desc降序) SELECT * FROM Tablename WHERE ROWNUM < n ORDER BY column; 15. 如何在给现有的日期加上2年? select add_months(sysdate,24) from dual; 16.Connect string是指什么? 应该是tnsnames.ora中的服务名后面的内容 17.返回大于等于N的最小整数值? SELECT CEIL(-10.102) FROM DUAL; 18.返回小于等于N的最大整数值? SELECT FLOOR(2.3) FROM DUAL; 19.返回行的物理地址 SELECT ROWID, ename FROM tablename WHERE deptno = 20 ;
练习Oracle网站是为了提高对Oracle数据库和相关工具的熟悉程度,以及加深对Oracle技术的理解。通过练习Oracle网站,可以学习数据库管理、SQL查询、性能优化、安全性等方面的知识和技能。以下是我认为练习Oracle网站的几个重要原因: 1. 学习基础知识:练习Oracle网站可以帮助我们学习数据库的基础知识,包括数据库的概念、架构和基本操作等。这些基础知识对于后续的深入学习和实际应用都非常重要。 2. 提高SQL查询能力:Oracle是一款功能强大的数据库管理系统,熟练掌握SQL查询语言是使用Oracle数据库的基础。通过练习Oracle网站,可以加深对SQL语句的理解,提高编写复杂查询语句的能力。 3. 学习性能优化技巧:练习Oracle网站可以帮助我们学习和掌握数据库性能优化的方法和技巧。了解如何优化查询语句、设计索引、调整数据库参数等,可以提高数据库的性能和响应速度。 4. 掌握数据库管理技能:通过练习Oracle网站,可以学习数据库的管理和维护技术,包括备份与恢复、容灾备份、用户管理、权限管理等。这些技能在实际工作中是非常重要的,能够帮助我们有效地管理和保护数据库。 5. 加深对安全性的认识:Oracle是一款广泛应用于企业级系统的数据库管理系统,数据安全至关重要。通过练习Oracle网站,可以了解到如何设置安全措施,保护数据库的敏感信息,防止未授权的访问和数据泄露。 总而言之,通过练习Oracle网站,我们可以全面了解和掌握Oracle数据库的各种知识和技巧,提高自己在数据库领域的能力和竞争力。不仅对于数据库管理人员而言,对于开发人员和系统运维人员来说,熟练掌握Oracle技术都具有非常重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值