SQL基本查询
SQL查询语句的语法如下:
SELECT <*, column [alias], …> FROM table;
SELECT关键字选择所要查询的列,列名逗号隔开,FROM后选择要查询的数据表。
使用别名:
SELECT empno AS id , ename "Name" FROM emp;
在列名后加 as 别名,或者双引号,可以在查询表结果,列名显示别名。不用双引号将不会识别大小写。
运算符:>, <, >=, <=, !=, =
在oracle的where子句中,可以用运算符来制定条件查询
比如:查询职员表中薪水低于2000元的职员信息:SELECT ename, sal FROM emp WHERE sal < 2000;
AND,OR关键字:
在SQL中,如果查询条件有多个,可以用and,or并联。and相当于且,or相当于或。使用and关键字,每个并联的条件都要实现才能查询出数据,使用or,只要实现一个条件即可。
比如:查询薪水大于1000并且职位是’CLERK’的职员信息:
SELECT ename, sal, job FROM emp WHERE sal > 1000 AND job = 'CLERK';
查询薪水大于1000或者职位是’CLERK’的职员信息:
SELECT ename, sal, job FROM emp WHERE sal > 1000 OR job = 'CLERK';
LIKE条件:模糊查询
LIKE需要借助两个通配符:
%:表示0到多个字符
_:标识单个字符
例如:查询员工表员工名字第二个字母是A的员工
SELECT ename, job FROM emp WHERE ename LIKE '_A%';
IN和NOT IN:
可以认为是范围定义,IN表示所选条件在不在此范围,NOT IN相反
比如:查询职位是MANAGER或者CLERK的员工:
SELECT ename, job FROM emp WHERE job IN ('MANAGER', 'CLERK');
查询不是部门10或20的员工:
SELECT ename, job FROM emp WHERE deptno NOT IN (10, 20);
BETWEEN…AND…:数值范围查询关键字:
例如:查询薪水在1500-3000之间的职员信息:
SELECT ename, sal FROM emp WHERE sal BETWEEN 1500 AND 3000;
ANY和ALL:
运算符可以和ANY,ALL配合使用:ANY表示“任一的",ALL表示“全部的”
> ANY : 大于最小
< ANY:小于最大
> ALL:大于最大
< ALL:小于最小
SELECT * FROM dual(虚假表,并不存在) WHERE sal>ANY(1000,1500,3000);--选择薪水大于1000,因为大于任一值即可
SELECT * FROM dual(虚假表,并不存在) WHERE sal>ALL(1000,1500,3000);--选择薪水大于3000,因为大于所有值才可
DISTINCT:去除重复,在列名前加此关键字
ORDER BY:对查询出的数据按一定规则进行排序操作(可对一表多列排序)
SELECT <*, column [alias], …> FROM table [WHERE condition(s)] [ORDER BY column [ASC | DESC]] ;
其中,ASC是升序排列,DESC是降序排列
函数:MAX、MIN、AVG、SUM、COUNT
分别是:取最大值,最小值,平均值,和值,计数。均忽略NULL值。前四个不讲,下面是COUNT讲解。
COUNT函数用来计算表中的记录条数,例如获取职员表中一共有多少名职员记录:
SELECT COUNT(*) total_num FROM emp; 返回结果就是员工表中的全部条数,例如:20
关联查询:
实际应用中所需要的数据,经常会需要查询两个或两个以上的表。这种查询两个或两个以上数据表或视图的查询叫做连接查询,连接查询通常建立在存在相互关系的父子表之间。语法如下:
SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 = table2.column2;
或者
SELECT table1.column, table2.column FROM table1 JOIN table2 ON (table1.column1 = table2.column2);
这种连接法称为等值连接(内连接):在有主外键关联关系的表间建立,并将连接条件设定为有关系的列,使用等号”=”连接相关的表。通常等值连接的两表会有相同的列名,通过这两表的这一列连接。
外连接(左/右外连接):内连接返回两个表中所有满足连接条件的数据记录,在有些情况下,需要返回那些不满足连接条件的记录,需要使用外连接,即不仅返回满足连接条件的记录,还将返回不满足连接条件的记录。
外连接的语法如下:
SELECT table1.column, table2.column FROM table1[ LEFT | RIGHT ] JOIN table2 ON table1.column1 = table2.column2;
全连接:全外连接是指除了返回两个表中满足连接条件的记录,还会返回不满足连接条件的所有其它行。即是左外连接和右外连接查询结果的总和。
SELECT e.ename, d.dname FROM emp e FULL OUTER JOIN dept d ON e.deptno = d.deptno
自连接:自连接是一种特殊的连接查询,数据的来源是一个表,即关联关系来自于单表中的多个列。
想要明白这些知识如何运用,请关注:
http://blog.csdn.net/xie_xiansheng/article/details/50785030