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;
?
今天筆記做到這,后續有空繼續。