oracle11g学习笔记(六)

Oracle的基本查询

首先,介绍PL/SQL软件中两个命令

1.清屏命令

  clear

2.关闭/打开显示操作时间命令

    set timing off/on

其次,是两个sql技巧

1.快速向数据库中插入大量数据

insert into users(userid,username,userpass)

       select * from user;

使用这个语句的前提是表中至少要有一条数据

2.查询所有记录数

select count(*) from user;

需要注意的是在写SQL 语句时,要注意大小写问题

Orace的字段不区分大小写,实体却区分大小写

一、使用算数表达式

? 显示每个雇员的年工资

可以使用列的别名

select ename "姓名",sal*12 as "年收入" from emp;

这里的中文最好用引号引上,尽量不要用中文

?如果计算表达式中有一个null值那么计算结果就为null,如何处理null值?

使用nvl函数处理

select sal*13+nvl(comm,0) "年工资" ,ename from emp;

nvl(comm,0)的意思是如果comm为null,那么按0计算,不是0按本身计算

?如何连接字符串

用"||"

select ename || ' is a ' || job from emp;

二、使用where子句

?如何显示工资高于3000的员工

select ename,sal from emp where sal >3000;

?如何查找1982.1.1后入职的员工

select ename from emp where hiredate>'1-1月-1982';

?查找工资在2000-2500之间的员工

select ename from emp where sal>=2000 and sal <=2500;

三、如何使用like操作符

%: 表示0到多个字符

_:表示任意单个字符

?如何显示首字母为s的员工

select ename from emp where ename like ‘s%’;

?如何显示第三个字母为大写O的所有员工的姓名和工资

select ename, sal from emp where ename like '__O%';

四、在where条件中使用in

?如何显示empno为123,456,234的雇员情况

select * from emp where empno in(123,234,456);

这种查询效率很高

五、使用is null操作符

? 如何显示没有上级的雇员情况

select * from emp where mgr is null;

六、使用逻辑操作符号

?查询工资高于500或是岗位为MANAGER的雇员,同时还要满足他们的姓名首写字母为大写的T

select * from emp where (sal>500 or job='MANAGER') and ename like 'T%';

这里的括号不可以忘记,否则条件就变了,因为and的优先级高于or

七、使用order by 子句

?如何按照工资从高到低的顺序显示雇员

select ename from emp order by sal desc;

desc 为逆序 asc为顺序(默认)

?按照部门号升序而雇员工资降序排列

select * from emp order by deptno asc,sal desc;

八、使用列的别名排序

select ename ,sal*12 "年薪" from emp order by "年薪" asc;

posted @ 2012-04-09 16:20  houjinxin  阅读(328)  评论(0编辑  收藏  举报