您的位置:首页 > 数据库 > Oracle

Oracle表的管理 复杂查询

2011-10-14 09:39 525 查看
Oracle表的管理
期望目标
1. 掌握Oracle表的管理
2. 掌握对Oracle表的各种查询技巧
3. 学会创建新的Oracle数据库

一、Oracle支持的数据类型
char 定长,最大2000字符。执行效率极快,但浪费空间。
在查询方面速度很快。例如select …… from xx where 某个字段 = xx。如果经常以某个列作为条件查询的话建议使用此字段使用char类型。
varchar2(20) 变长,最大4000字符。执行效率很慢,但节约空间。
所以说每种数据类型都有其存在的意义。

二、删除数据:
delete from student;
删除所有记录,表结构还在,写日志可以恢复的,速度慢。
drop table student;
删除表的结构和数据
delete from student where stuid=’100’;
删除一条记录
truncate table student;
删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。

三、Oracle表的基本查询
1.查看该用户下的所有对象Select * from tab;
2.列出职位为(MANAGER)的员工的编号,姓名

Select empno,ename from emp where job = „Manager‟;
3.找出奖金高于工资的员工

Select * from emp where comm>sal;
找出每个员工奖金和工资的总和

Select sal+comm,ename from emp;
找出部门 10 中的经理(MANAGER)和部门 20 中的普通员工(CLERK)

Select * from emp where (deptno=10 and job=‟MANAGER‟) or (deptno=20 and job=‟CLERK‟);
找出部门 10 中既不是经理也不是普通员工,而且工资大于等于 2000 的员工

Select * from emp where deptno=10 and job not in(„MANAGER‟,‟CLERK) ‟ and sal>=2000;
找出有奖金的员工的不同工作

Select distinct job from emp where comm is not null and comm>0
找出没有奖金或者奖金低于 500 的员工

Select * from emp where comm<500 or comm is null;
显示雇员姓名,根据其服务年限,将最老的雇员排在最前面

select ename from emp order by hiredate ;

NV[/b]L[/b]([/b])[/b]函数: 如果第一个参数不为空,则返回第一个参数,否则返回第二个参数。[/b][/b]
select nvl(comm,0) from emp;
年薪按升序排列
select ename,(sal+nvl(comm.,0))*12 as 年薪 from emp ;
找出25年前雇的员工
select * from emp where hiredate<=add_months(sysdate,-25*12);
所有员工名字前加上 Dear ,并且名字首字母大写
select 'Dear ' || initcap(ename) from emp;
找出姓名为 5 个字母的员工
select * from emp where length(ename)=5;
找出姓名中不带 R 这个字母的员工
select * from emp where ename not like '%R%';
显示所有员工的姓名的第一个字
select substr(ename,0,1) from emp;
找到 2 月份受雇的员工
select * from emp where to_char(hiredate,'fmmm')='2';

由于文档支持内容的长度有限,复杂查询见附件。


本文出自 “此刻打盹,你将做梦;..” 博客,请务必保留此出处http://zhaolong1990ok.blog.51cto.com/1451036/687367
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: