Oracle 学习笔记(三)

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;

今天笔记做到这,后续有空继续。

猜你喜欢

转载自www.cnblogs.com/stephen-java/p/10739331.html