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;