码迷,mamicode.com
首页 > 数据库 > 详细

Sql Server 创建联结

时间:2020-09-10 23:09:08      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:sele   运行时   arc   一个   arch   --   sql   联结   使用   

--联结(join) 也可以叫做(等值联结)(内联结) 联结机制 联结是SQL中最重要、最强大的特性。 (之一)

--关系表的设计就是把信息分解为多个表,一类数据一个表 各表通过某些共同的值相互关联(所以才叫关系型数据库)。

--关系型数据库的可伸缩型 要比 非关系型数据库的可伸缩型要好。 可伸缩:能够适应不断增加的工作量而不失败。 所以前期设计阶段非常重要。

 

/*使用联结的初衷

关系型数据库需要把信息分解为多个表,之后通过某些值进行互相关联。原因:如果不同类型的数据都放在同一个表 1.数据容易重复、冗余。 2.不便于修改。3. 精准度降低。
但是分解为多个表,如何用一个select语句就可以检索到数据呢。 使用联结。

*/

select * from Vendors; --供应商表

select * from Products; -- 产品信息表 vend_id (供应商ID 也是用于vendors和products进行关联的值)


create table vendors_1 (vend_id varchar(15),vend_name varchar(20),vend_state int)

create table products_1 (prod_id varchar(15),vend_id varchar(20),prod_name varchar(15),prod_price int ,prod_desc varchar(100))

select * from vendors_1

insert into vendors_1 (vend_id,vend_name,vend_state) values (‘A1‘,‘sanZhang‘,1) ,(‘B1‘,‘siLi‘,1),(‘C1‘,‘wuWang‘,0);

insert into products_1 (prod_id,prod_name,prod_price,prod_desc) values(‘TA5‘,‘阿波罗Kt‘,3.499,‘这是一款kkt所制造的kkt‘),(‘TA2‘,‘望京府‘,9.499,‘这是一款非常好用的望远镜‘),(‘TA3‘,‘不枉‘,31.499,‘这是一款由白金所打造的猪‘),(‘TA4‘,‘K爱莎t‘,3.499,‘这是一款爱莎朱乃‘)

update products_1 set vend_id= ‘A1‘ WHERE prod_id=‘TA1‘

update products_1 set vend_id= ‘A1‘ WHERE prod_id=‘TA3‘

update products_1 set vend_id= ‘B1‘ WHERE prod_id=‘TA2‘

update products_1 set vend_id= ‘C1‘ WHERE prod_id=‘TA4‘

 

select * from vendors_1
select * from products_1

select * from vendors_1,products_1;
select * from products_1,vendors_1;

-- 要保证所有的联结都有 where子句
select * from products_1 ,vendors_1 where products_1.vend_id=vendors_1.vend_id;


-- INNER JOIN ON inner join on 语法: 表名 INNER JOIN 表名 ON 表名的列=表名的列
select prod_id,prod_name,vendors_1.vend_id from products_1 inner join vendors_1 on products_1.vend_id=vendors_1.vend_id;

select * from products_1 inner join vendors_1 on products_1.vend_id=vendors_1.vend_id;
-- OR
select * from products_1,vendors_1 where products_1.vend_id=vendors_1.vend_id;


--如果我们 要将两个表 进行使用联结机制 可以使用 INNER JOIN ON 联结机制规范首选 INNER JOIN ON ON子句用于联结表特定的列
select * from products_1 inner join vendors_1 on products_1.vend_id=vendors_1.vend_id;


-- DBMS在运行时关联指定的每个表, 但是联结非常耗费资源,因此需要注意不要联结不需要的表。 联结的表越多,性能下降的就越厉害。
select * from OrderItems,products,vendors where OrderItems.prod_id=products.prod_id and products.vend_id=vendors.vend_id and order_num=20007;

select * from OrderItems inner join products inner join vendors on OrderItems.prod_id=products.prod_id on products.vend_id=vendors.vend_id

 

 

--使用子查询
select * from Customers where Customers.cust_id in
(select Orders.cust_id from orders where orders.order_num in
(select OrderItems.order_num from OrderItems where orderitems.prod_id=‘BR01‘));

--使用联结 如果 不标明查询列 而使用 * 则联结是对多个表的数据进行查询所有数据, 子查询是对最外层的表进行查询所有数据
select * from Customers,Orders,OrderItems
where OrderItems.prod_id=‘BR01‘ and OrderItems.order_num=orders.order_num and orders.cust_id=Customers.cust_id;

Sql Server 创建联结

标签:sele   运行时   arc   一个   arch   --   sql   联结   使用   

原文地址:https://www.cnblogs.com/java-263/p/13585085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!