发布日期:2015-10-16 14:07 来源: 标签: oracle教程 oracle函数大全 insert into插入表 select查询
本章节我们将学习INSERT INTO插入表及SELECT查询表记录的相关知识,下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
插入记录

INSERT INTO table_name (column1,column2,...)
values ( value1,value2, ...);

示例
insert into emp (empno,ename) values(9500,'AA');


把 一个表中的数据插入另一个表中

INSERT INTO <table_name> <SELECT 语句>
示例
create table a as select * from emp where 1=2;

insert into a select * from emp where sal>2000;

查询记录


一般查询
SELECT [DISTINCT] <column1 [as new name] ,columns2,...>
FROM <table1>
[WHERE <条件>]
[GROUP BY <column_list>]
[HAVING <条件>]
[ORDER BY <column_list> [ASC|DESC]]


DISTINCT --表示隐藏重复的行
WHERE --按照一定的条件查找记录
GROUP BY --分组查找(需要汇总时使用)
HAVING --分组的条件
ORDER BY --对查询结果排序


要显示全部的列可以用*表示
示例:
select * from emp;

WHERE 语句的运算符
where <条件1>AND<条件2> --两个条件都满足
示例:
select * from emp where deptno=10 and sal>1000;

where <条件1>OR<条件2> --两个条件中有一个满足即可
示例:
select * from emp where deptno=10 OR sal>2000;

where NOT <条件> --不满足条件的
示例:
select * from emp where not deptno=10;

where IN(条件列表) --所有满足在条件列表中的记录
示例:
select * from emp where empno in(7788,7369,7499);

where BETWEEN .. AND ..  --按范围查找
示例:
select * from emp where sal between 1000 and 3000;

where 字段 LIKE --主要用与字符类型的字段
示例1:
select * from emp where ename like '_C%'; --查询姓名中第二个字母是'C'的人
'-' 表示任意字符;
'%' 表示多字符的序列;

where 字段 IS [NOT] NULL --查找该字段是[不是]空的记录

汇总数据是用的函数
SUM --求和
示例:
select deptno,sum(sal) as sumsal from emp GROUP BY deptno;

AVG --求平均值
MAX --求最大值
MIN --求最小值
COUNT --求个数


子查询
SELECT <字段列表> from <table_name> where 字段 运算符(<SELECT 语句>);

示例:
select * from emp where sal=(select max(sal) from emp);

运算符
Any
示例:
select * from emp where sal>ANY(select sal from emp where deptno=30) and deptno<>30;
--找出比deptno=30的员工最低工资高的其他部门的员工

ALL
select * from emp where sal>ALL(select sal from emp where deptno=30) and deptno<>30;
--找出比deptno=30的员工最高工资高的其他部门的员工


连接查询
SELECT <字段列表> from <table1,table2> WHERE table1.字段[(+)]=table2.字段[(+)]

示例
select empno,ename,dname from emp,dept where emp.deptno=dept.deptno;


查询指定行数的数据

SELECT <字段列表> from <table_name> WHERE ROWNUM<行数;
示例:
select * from emp where rownum<=10;--查询前10行记录
注意ROWNUM只能为1 因此不能写 select * from emp where rownum between 20 and 30;

要查第几行的数据可以使用以下方法:
select * from emp where rownum<=3 and empno not in (select empno from emp where rownum<=3);
结果可以返回整个数据的3-6行;不过这种方法的性能不高


相关评论

专题信息
    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。本教程重点讲解Oracle函数、SQL语言、PL/SQL语言、oracle安装、SQL技巧等多方面的知识,对大家学习Oracle以及Oracle的实际应用有很大帮助。