oracle 表查询
oracle 表基本查询
在此,基于 scott 用户存在的 emp,dept 表演示学习。
emp 雇员表
clerk 员工
salesman 销售
manager 经理
analyst 分析师
president 总裁
mgr 上级的编号
hiredate 入职时间
sal 工资
comm 奖金
deptno 部门编号
dept 部门表
deptno 部门编号
accounting 财务部
research 研发部
operations 业务部
loc 部门所在地点
salgrade 工资级别
grade 级别
losal 最低工资
hisal 最高工资
简单查询语句
查看表结构
DESC emp;
查询所有列
SELECT * FROM dept; 切忌动不动就用 select *,影响效率。
打开显示操作时间的开关,下面显示查询时间
SET TIMING ON;
建表
CREATE TABLE users(userId VARCHAR2(10), uName VARCHAR2 (20), uPassw VARCHAR2(30));
插入数据
INSERT INTO users VALUES('a0001', 'Stephen', '8888888');
可以插入几万条数据,用于测试 sql。
从自己复制,加大数据量。
INSERT INTO users (userId,UNAME,UPASSW) SELECT * FROM users;
统计行数
SELECT COUNT (*) FROM users;
查询指定列
SELECT ename, sal, job, deptno FROM emp;
取消重复行 DISTINCT
SELECT DISTINCT deptno, job FROM emp;
查询 Stephen 所在部门,工作,薪水
SELECT deptno,job,sal FROM emp WHERE ename = 'Stephen ';
注意:oracle对内容的大小写是区分的,ename='Stephen'和ename='stephen'不是同一个人。
使用算术表达式 nvl null
如何显示每个雇员的年工资,使用 nvl 函数来处理 null 值
SELECT sal*13+nvl(comm, 0)*13 "年薪" , ename, comm FROM emp;
使用列的别名
SELECT ename "姓名", sal*12 AS "年收入" FROM emp;
连接字符串(||)
SELECT ename || ' is a ' || job FROM emp;
使用 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;
使用 like 操作符
%:表示 0 到多个字符 ;_:表示任意单个字符
查找首字符为 A 的员工姓名和工资
SELECT ename,sal FROM emp WHERE ename like 'A%';
查找第三个字符为大写 S 的所有员工的姓名和工资
SELECT ename,sal FROM emp WHERE ename like '__S%'; 两个_
在 where 条件中使用 in
查询 empno 为 7844, 7839,123,456 的员工
SELECT * FROM emp WHERE empno in (7844, 7839,123,456);
使用 is null 的操作符
查询没有上级的员工x信息
错误写法:select * from emp where mgr = '';
正确写法:SELECT * FROM emp WHERE mgr is null;
今天笔记做到这,后续有空继续。