oracle表基本查询
介绍
在我们前面笔记讲解的过程中我们利用c##scott用户存在的几张表(emp,dept)为大家演示如何使用select语句,select语句在软件编程中非常有用
c##scott.emp 雇员表
clerk 普员工
salesman 销售
manager 经理
analyst 分析师
president 总裁
mgr 上级的编号
hiredate 入职时间
sal 月工资
comm 奖金
deptno 部门
c##scott.dept部门表
deptno 部门编号
accounting 财务部
research 研发部
operations 业务部
loc 部门所在地点
salgrade 工资级别
grade 级别
losal 最低工资
hisal 最高工资
1. 简单的查询语句
1.1 查看表结构
DESC emp;
1.2 查询所有列
SELECT * FROM dept;
切忌动不动就用select *
SET TIMING ON; --打开显示操作时间的开关,在下面显示查询时间。
CREATE TABLE users(userId VARCHAR2(10), uName VARCHAR2 (20), uPassw VARCHAR2(30));
INSERT INTO users VALUES('a0001', '222', 'asdasd');
1.3 从自己复制,加大数据量 大概几万行就可以了 可以用来测试sql语句执行效率
INSERT INTO users (userId,UNAME,UPASSW) SELECT * FROM users;
1.4 统计行数
SELECT COUNT (*) FROM users;
1.5 查询指定列
SELECT ename, sal, job, deptno FROM emp;
1.6 如何取消重复行DISTINCT
SELECT DISTINCT deptno, job FROM emp;
1.7 查询SMITH所在部门,工作,薪水
SELECT deptno,job,sal FROM emp WHERE ename = 'SMITH';
注意:oracle对内容的大小写是区分的,所以ename='SMITH’和ename='smith’是不同的
2. 使用算术表达式 nvl null
2.1 如何显示每个雇员的年工资?
SELECT sal*13+nvl(comm, 0)*13 "年薪" , ename, comm FROM emp;
2.2 使用列的别名
SELECT ename "姓名", sal*12 AS "年收入" FROM emp;
2.3 如何处理null值
使用nvl函数来处理
2.4 如何连接字符串(||)
SELECT ename || ' is a ' || job FROM emp;
2.5 使用where子句
问题:如何显示工资高于3000的 员工?
SELECT * FROM emp WHERE sal > 3000;
问题:如何查找1982.1.1后入职的员工?
SELECT ename,hiredate FROM emp WHERE hiredate >'1-1月-1982';
问题:如何显示工资在2000到3000的员工?
SELECT ename,sal FROM emp WHERE sal >=2000 AND sal <= 3000;
3. 如何使用like操作符
%:表示0到多个字符 _:表示任意单个字符
问题:如何显示首字符为S的员工姓名和工资?
SELECT ename,sal FROM emp WHERE ename like 'S%';
如何显示第三个字符为大写O的所有员工的姓名和工资?
SELECT