Oracle基础知识1 : 单表查询1

来源:互联网 发布:淘宝代销怎么关联发货 编辑:程序博客网 时间:2024/06/06 02:26
--基础部分 :


SELECT * FROM emp;
--显示雇员表emp中所有的数据
SELECT * FROM dept;
--显示部门表dept中所有的数据
SELECT deptno,loc FROM dept;
--显示部分列
SELECT empno,ename,sal,hiredate,job 
FROM emp;
--显示部分列
SELECT ename,sal,sal+300
FROM emp;
--显示雇员姓名,工资以及加300元以后的工资
SELECT ename,sal,12*sal+100,12*(sal+100)
FROM emp;
--算数表达式的运用(先乘除,后加减,有括号先算括号里的)
SELECT ename AS Name , sal*12 "Annual Salary"
FROM emp;
--为列设置别名 : 如果用 AS ,列名会全部大写 ; 
--如果用 "" 则会按照引号里面的内容原样输出 。(注意只能用双引号不能用单引号)
--列的别名可以用于 SELECT 与 ORDER BY ,不能用于 WHERE 。
SELECT ename||job AS "Employees"
FROM emp;
--使用连接符 || 将 ename 与 job 作为一个字符串连接并输入(并且列名为 Employees)
SELECT ename||' is a '||job AS "Employees Detail"
FROM emp;
--||同样可以连接自定义字符串(字符串必须由单引号引起来)
SELECT DISTINCT deptno 
FROM emp;

--使用DISTINCT消除重复记录

SELECT DISTINCT deptno,job  
FROM emp;
--先写的字段会作为主条件 , 但是查询结果不会被影响

SELECT ename,job,comm,20/comm
FROM emp
WHERE ename = 'KING';
--空值可以作为被除数~
DESCRIBE dept;
DESC dept;
--上面两句话都是显示表结构(好像DESC==DESCRIBE)








--比较运算符 :




SELECT ename,sal,comm
FROM emp
WHERE sal <= comm;
--显示工资小于等于奖金的人
SELECT ename,sal
FROM emp
WHERE sal BETWEEN 1000 AND 2000;
--显示工资在1000到2000的人
SELECT ename,hiredate
FROM emp
WHERE ename BETWEEN 'J' AND 'N';
--字符串同样可行
SELECT ename,mgr
FROM emp
WHERE mgr IN (7902,7566,7788);
--显示mgr为(7902,7566,7788)这个范围里面的记录。
SELECT empno,ename
FROM emp
WHERE ename IN ('FORD','ALLEN');


SELECT * 
FROM emp
WHERE ename LIKE 'S___';
--查询名字由S开头的雇员(用LIKE关键字)
--通配符 : % 代表任意多个字符 , _ 代表一个字符
SELECT * 
FROM emp
WHERE hiredate BETWEEN TO_DATE('1981-01-01','YYYY-MM-DD') AND TO_DATE('1981-12-31','YYYY-MM-DD');
SELECT * 
FROM emp
WHERE hiredate LIKE '%81';
--上面两句都可以显示1981年受雇的雇员( 日期是不是只能用TO_DATE()来写??)
SELECT ename 
FROM emp
WHERE ename LIKE '_A%';
--显示姓名第二个字母是A的雇员姓名
SELECT ename 
FROM emp
WHERE ename LIKE 'A\_B' ESCAPE '\';
--查找姓名是 A_B 的人 (此时 _ 就是 _ 本身而不代表单个字符)
SELECT * 
FROM emp
WHERE mgr IS NULL;
--显示 mgr 值为空的雇员
SELECT * 
FROM emp 
WHERE sal >= 2000 AND comm IS NULL;
--查询工资大于2000并且comm为空的雇员
SELECT ename,job
FROM emp
WHERE job NOT IN ('CLERK','MANAGER','ANALYST');
--查询工作不为***的雇员(NOT还可以和其他运算符一起用 , 比如 BETWEEN , LIKE , NULL)


--运算符优先级(由先到后) : 比较运算符 , NOT , AND , OR
SELECT ename,job,sal
FROM emp
WHERE job = 'SALESMAN' 
OR job = 'PRESIDENT'
AND sal > 1500;
--验证优先级


SELECT * 
FROM emp
ORDER BY hiredate DESC;
--按照入职时间排序( DESC 是降序 , 默认升序 — ASC)
SELECT * 
FROM emp
ORDER BY deptno,sal;
--先按照 deptno 排序 , 再按照 sal 排序


emp表↑


dept表↑

原创粉丝点击