SQL:1999连接
SQL:1999连接
SQL:1999连接在语法上和传统的ORACLE连接有着很大的不同。SQL:1999连接的类型在from语句中指明。ORACLE 9I支持的SQL:1999连接包括:
l CROSS连接
l NATURAL连接
l OUTER连接
l LEFT OUTER连接
l RIGHT OUTER连接
l FULL OUTER连接
以下的几个小节将详细介绍这些新的连接方式。
2.3.1.1 CROSS连接
CROSS连接是一种对两个表的交叉乘积。是对两个表的卡笛尔乘积。下面的例子:
SELECT last_name, department_name
from employees
CROSS JOIN departments;
这个语句等同于:
SELECT last_name, department_name
from employees, departments;
2.2.1.2 NATURAL连接
NATURAL连接的条件是两个表中名称相同的字段都有相同的值。如果两个表中相同名称的字段的类不同,那么会发生错误。如果有select *,那么在结果集中,相同的字段只出现一次。
在NATURAL连接中,选取的字段前面不需要用别名限定。比如:
SELECT employee_id, last_name, department_id
from employees
NATURAL JOIN departments;
等同于下面的语句:
SELECT employee_id, last_name, departments.department_id
from employees, departments
WHERE employees.department_id = departments.department_id;
如果并不是所有的名称相同的字段都需要进行’=’连接,那么就不能使用NATURAL连接,而可以使用USING语句,比如
SELECT employee_id, last_name, job_history.department_id
from employees
JOIN job_history
USING (employee_id);
这个语句等同于:
SELECT employees.employee_id, last_name, job
相关文档:
最近做了一网站,但是在外面访问太慢。本想找下原因。看看是程序原因还是数据库原因。在网上逛逛。看了一下数据库索引。现在总结一下。方便下次查看。本文比较基础是入门级别的。
首先,什么是索引?从BookOnline上search了一下:
&nbs ......
CREATE proc [dbo].[proc_DeleteTemplet] (@templeId varchar(15),@errorMessage varchar(50) output)
as
begin
declare @error int
set @error =0
begin tran
delete from tc_templet_Head where fBillNo=@templeId
set @error=@error+@@error
delete from tc_templet_ ......
--1. 创建表,添加测试数据
CREATE TABLE tb(id int, [value] varchar(10))
INSERT tb SELECT 1, 'aa'
UNION ALL SELECT 1, 'bb'
UNION ALL SELECT 2, 'aaa'
UNION ALL SELECT 2, 'bbb'
UNION ALL SELECT 2, 'ccc'
--SELECT * from tb
/**//*
id value
----------- ----------
1 aa
1 bb
2 aaa
......
写一个存储过程,将表一按照表二的形式进行查询。
仓库名称 商品名称 数量
A
S001 12
A S002 17
A
S003 10
B S001 21
B
S002 5
B S003 ......