Oracle操作

来源:互联网 发布:linux 7 配置ip地址 编辑:程序博客网 时间:2024/04/29 20:33

一.Oracle操作

1. 连接oracle:

1) sqlplus  

2) scott

3) tiger

2. sqlplus scott/tiger;

3. 

4. sqlplus scott

tiger

5.界面登录

5. 退出quit

Exit

二.查询

1. SELECT EMPNO, ENAME, JOB, SAL  FROM EMP WHERE SAL < 2500 ;

2. SELECT EPNO, ENAME, JOB, SAL FROM EMP WHERE SAL < 2500;

3.CHANGE /EPNO/EMPNO

Run

4.增加一行

5删除一行

6. 保存SAVE命令 运行命令文件

7.清缓冲区

8.DESCRIBE列出表的结构

二.Oracle查询

1.显示EMP表中所有的部门号、职工名称和管理者号码

2.

1. 算术运算符在SQL中的使用

SELECT ENAME, SAL+250*12 FROM EMP;

2. 连字符的使用

把职工号和职工名字连接起来,如下:

SELECT EMPNO||ENAME EMPLOYEE FROM EMP;

把职工号和职工名字中间用‘-’连接起来,并输出‘WORKS IN DEPARTMENT’,如下:

SELECT EMPNO|| ’-’ ||ENAME EMPLOYEE, ‘WORKS IN DEPARTMENT’, DEPTNO

FROM  EMP;

3. 禁止重复

如果列举出EMP表中所有部门号:

Select deptno from emp;

从上表中可以看出部门号之间存在着许多的相同的,可以用DISTINCT子句来消除重复的。

SELECT DISTINCT deptno from emp;

4. 排序

按单个字段排序,如按照ENAME排序,

SELECT ENAME, JOB, SAL*12, DEPTNO

FROM EMP

ORDER BY ENAME;

5.按多个字段排序:

如按部门号升序,按工资降序排序

SELECT DEPTNO, JOB, ENAME

FROM EMP

ORDER BY DEPTNO, SAL DESC;

按多个字段排序:

如按部门号升序,按工资降序排序

SELECT DEPTNO, JOB, ENAME

FROM EMP

ORDER BY DEPTNO, SAL DESC;

6.带条件的查询

1)查询工作是CLERK的所有职工的姓名,职工号和部门号

SELECT ENAME, EMPNO, JOB, DEPTNO

FROM EMP

WHERE JOB = ‘CLERK’;

2)从DEPT表中查询出部门号大于20的部门名称

SELECT  DNAME, DEPTNO

FROM  DEPT

WHERE  DEPTNO > 20;

3)复合条件查询

查询工作是MANAGER并且工资大于1500,或者工作是SALESMAN的职工信息:

SELECT EMPNOENAME, JOBSALDEPTNO

FROM EMP

WHERE SAL>1500 AND JOB = ‘MANAGER’ OR JOB = ‘SALESMAN’;

5. 操作符的应用

1) BETWEEN的应用

查询工资在10002000之间的职工名字和工资信息。

SELECT ENAME, SAL

FROM EMP

WHERE SAL BETWEEN 1000 AND 2000

2) IN

查询有790275667788三个MGR号之一的所有职工:

SELECT EMPNO, ENAME, SAL, MGR

FROM EMP

WHERE MGR IN 790275667788);

3) LIKE

通配符%代表任意0或多个字符。

通配符_代表任意单个字符。

查询名字以“S”开始的所有职工:

SELECT ENAME

FROM  EMP

WHERE ENAME LIKE S%’;

查询名字只有4个字符的所有职工:

SELECT ENAME

FROM  EMP

WHERE ENAME LIKE _ _ _ _’;

4) IS NULL

查询没有管理者的所有职工:

SELECT ENAMEMGR

FROM  EMP

WHERE MGR IS NULL

6. &号替代变量

1) 数字变量输入:

SELECT EMPNOENAMESAL

FROM EMP

WHERE DEPTNO = &DEPARTMENT_NUMBER;

Enter value for department_number:10

2) 字符串变量输入:

SELECT EMPNOENAMESAL*12

FROM EMP

WHERE JOB = ‘&JOB_TITLE’;

Enter  value for  job_title: MANAGER

7. 字符函数的应用 

 TO_CHAR 数字数据转换为字符串

SQL> select to_char(8897) from dual;

8. 数字函数的应用

 TO_NUMBER字符串数据转换为数字

SQL> select to_number('8897') from dual;

9. 数据类型转换

TO_DATE字符串数据转换为日期数据

SQL> select to_date('03-12-81') from dual;

10. 分组函数的应用

1) 分组函数见课本P60

2) 分组函数应用

求平均值

SELECT AVG(SAL) FROM EMP;

求最小值

SELECT MIN(SAL) FROM EMP WHERE JOB = ‘CLERK’;

求数目

SELECT COUNT(*) FROM EMP WHERE DEPTNO = 20;

3) GROUP BY子句

求每个部门中的平均工资:

SELECT JOBAVGSAL) FROM EMP

GROUP BY JOB

4) HAVING子句

查询人数超过3人的部门中的平均工资:

SELECT DEPTNOAVGSAL) FROM EMP

GROUP BY DEPTNO

HAVING COUNT*>3;

11. 连接

EMPDEPT中查询出职工名字、工作和部门名称:

SELECT ENAMEJOBDNAME FROM  EMP, DEPT

WHERE EMP.DEPTNO = DEPT.DEPTNO;

12. 子查询的应用

EMP中查询出工资最低的职工:

SELECT ENAMEJOBSAL FROM EMP

WHERE SAL = SELECT MINSALFROM EMP );

EMP中查询出每个部门工资最低的职工:

SELECT ENAMESALDEPTNO FROM EMP

WHERE SAL IN 

SELECT MINSAL) FROM EMP GROUP BY DEPTNO);