比较值n,返回值n
返回值(不满足条件时)
)
select last_name,salary,
decode( trunc(salary/2000,0),//条件
0, 0.00,//比较值1,返回值1
1, 0.09,
2, 0.20,
3, 0.30,
4, 0.40,
5, 0.42,
6, 0.44,
0.45
) TAX_RATE
from employees
where department_id=80;
从多表中显示数据:
SQL(老版本的)
等值查询
SELECT TABLE1.COLUMN,TABLE2.COLUMN FROM TABLE1,TABLE2 WHERE TABLE1.COLUMN1=TABLE2.COLUMN2;//自然连接
使用AND操作符增加查询条件
使用表的别名来简化查询。
提高查询功能。
SELECT E.ID,D.ID FROM EMPL E,DEP D WHERE E.NAME=D.NAME;
~~ ~
表别名
多表等值连接查询
为了连接N个表,至少需要N-1个连接条件。
非等值查询
使用 BETWEEN AND 查询近似值作为连接条件的多表结果。
WHERE E.SALARY BETWEEN J.LOW AND J.HIGH
外连接查询
SELECT T1.COL,T2.COL FROM WHERE T1.COL(+)=T2.COL;左外连接
所有T2的T1信息。
SELECT T1.COL,T2.COL FROM WHERE T1.COL=T2.COL(+);右外连接
所有T1的T2信息。
为了看到与连接条件不匹配的数据,就必须得用外连接。
自连接
通过表的别名来创建虚拟逻辑表,进行自连接查询。
select worker.last_name || 'work for' || manager.last_name
from employees worker,employees manager
where worker.manager_id=manager.employee_id;
9I适应性连接:
select t1.col,t2.col
from table
cross join t2 //交叉连接
natural join t2//自然连接:把两表中所有等值的字段都作为连接条件(但这些连接条件不用写)。
从两个表中选出连接列的值相等的所有行。
如果两个列的名称相同,但数据类型不同;或是类型相同,意义不同都会出错。
join t2 using (column_name);基于自然连接,只有在USING中出现的,才作为连接条件(在USING中列名前一定不能加前缀)。
join t2 on (t1.col=t2.col);基于ON的自然连接。等值、非等值或自连接都可以实现。
left|right|full outer join t2 on(t1.col=t2.col);
select e.last_name,d.department_name,l.city
from employees e
left outer join departments d on e.department_id=d.department_id
right outer join locations l on d.location_id=l.location_id;
*&*可以连续做左连接或右连接的操作。
full outer join 忽略连接条件,把要查询的列的所有行全显示出来。
笛卡尔乘积(多表查询容易产生的错误)形成原因:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-35179-13.html
只能说你自己缺脑子
只求真相
正义必胜