Oracle学习日记
Posted wenxing9415
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle学习日记相关的知识,希望对你有一定的参考价值。
1、临时表
1.1类型:会话级临时表、事务级临时表
1.2两种临时表的异同:
相同点:两种表都不能永久保存记录,他们都是用临时表空间
不同点:会话级别只有当会话结束时表中的数据才会被截断,而事务级临时表不管是COMMIT/ROLLBACK或者是会话结束,临时表中的数据都会被截断。
1.3什么时候使用临时表:把复杂的逻辑拆分开来,用临时表储存中间结果,以方便后面的逻辑处理。程序执行过程中可能要存放一些临时的数据,这些数据在整个程序的会话过程中都用到等等。
1.4临时表创建方法
语法结构:CREATE GLOBAL TEMPORARY TABLE TABLE_NAME(COL1 TYPE1,COL2 TYPE2…) ON COMMIT PRESERVE ROWS;
CREATE GLOBAL TEMPORARY TABLE STUDENT
(STU_ID NUMBER(5),
CLASS_ID NUMBER(5),
STU_NAME VARCHAR2(8),
STU_MEMO VARCHAR2(200)) ON COMMIT PRESERVE ROWS ;
2、聚合函数
定义:聚合函数同时可以对多行数据进行操作,并返回一个结果集。
聚合函数与GROUP BY 使用
注意:不使用分组则把整个表作为一组
AVG,SUM,MIN,MAX,COUNT
栗子:查询EMP表中各部门工资大于2000的员工人数,并且按人数从高到低排列
SELECT E.DEPTNO, COUNT(1) CT1
FROM EMP E
WHERE E.SAL > 2000
GROUP BY E.DEPTNO
ORDER BY CT1 DESC
3、数据操作语言(DML)
3.1数据插入INSERT
语法格式:INSERT INTO 表名(列1,列2……) VALUES(值1,值2……)
栗子:往学生表(student)里插一条记录,学号(s001),姓名(SASA),性别(女)
INSERT INTO student(SID,SNAME,SSEX) VALUES(‘s001‘,‘SASA‘,‘女‘)
注意:列名可以省略,当省略列名时,默认是表中的所有列名,列名顺序为表定义中列的先后顺序。值的数量和顺序要与列名的数量和顺序一致。值的类型与列名的类型一致。
3.2向表中插入一个结果集
语法结构:INSERT INTO 表名1(列名1,列名2……) 查询结果集;
4、更新数据UPDATE
语法结构:UPDATE 表名 SET 列名1=值,列名2=值…… WHERE 条件
栗子:在学生表(student)里更改一条记录,将学号(s001)的学生性别改为男
UPDATE student SET ssex=‘男‘ WHERE sno=‘s001‘;
5、删除数据DELETE
语法结构:DELETE FROM表名 WHERE 条件
栗子:删除学生表(student)里学号为s001的记录
DELETE FROM student_1 WHERE sno=‘s001‘;
6、TRUNCATE(DDL命令)
语法结构:TRUNCATE TABLE 表名
TRUNCATE和DELETE异同:
相同点:都能把表中数据全部删除
不同点:TRUNCATE是DDL命令,删除的数据不能恢复,DELETE是DML命令,删除后的数据可通过日志文件恢复
性能方面比较:如果一个表中数据很多,TRUNCATE相对DELETE速度快。TRUNCATE命令比较危险,慎用!!!
7、操作符
运算符 |
说明 |
运算符 |
说明 |
= |
等于 |
> |
大于 |
<>或者!= |
不等于 |
<= |
小于或者等于 |
< |
小于 |
>= |
大于或者等于 |
三个运算符优先级:NOT>AND>OR
8、字符串连接操作符(||)
栗子:在EMP表中,查询工资在2000元以上的姓名以及工作。
SELECT (ENAME || ‘is a ‘ || JOB) AS "Employee Details"
FROM EMP
WHERE SAL > 2000;
Oracle中字符串可以用单引号,存在特殊字符的时候,必须用双引号。
9、DISTINCT操作
作用:在Oracle查询中结果中,可能出现若干行相同的情况,那么可以使用DISTINCT消除重复行。
栗子:DISTINCT消除重复行(GROUP BY性能较好)
SELECT DISTINCT DEPTNO FROM EMP;
10、NULL操作
特性:
1、空值跟任何值进行算术运算,得到的结果都为空值
2、 空值跟任何值进行关系运算,得到的结果都为不成立
3、 空值不参与任何聚合运算
4、 排序的时候,空值永远是最大的
栗子:查询EMP表中没有发奖金的员工。
SELECT * FROM EMP E WHERE COMM IS NULL;
11、IN操作
在Where子句中可以使用IN操作符来查询其列值在指定的列表中的行。
栗子:查询出工作职责是SALESMAN、PRESIDENT或者ANALYST的员工。
SELECT E.ENAME,E.JOB,E.SAL
FROM EMP E
WHERE E.JOB IN (‘SALESMAN‘, ‘PRESIDENT‘, ‘ANALYST‘);
12、BETWEEN…AND…
在WHERE子句中,可以使用BETWEEN操作符来查询列值包含在指定区间内的行。
栗子:查询工资从1000到2000之间的员工。
SELECT E.ENAME, E.JOB, E.SAL FROM EMP E WHERE E.SAL BETWEEN 1000 AND 2000;
13、LIKE模糊查询
模糊查询使用LIKE关键字通过字符匹配检索出所需要的数据行。字符匹配操作可以使用通配符“%”和“_”:
%:表示零个或者多个任意字符。
_:代表一个任意字符。
栗子:显示员工名称以J开头以S结尾的员工的姓名、工资和工资。
SELECT E.ENAME, E.JOB, E.SAL
FROM EMP E
WHERE E.ENAME LIKE ‘J%S‘;
以上是关于Oracle学习日记的主要内容,如果未能解决你的问题,请参考以下文章