• Sql Server 创建联结


    --联结(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;

  • 相关阅读:
    C++实现高斯滤波器
    移动通信
    最简单的DLL
    C/C++ 编译和链接过程
    Servlet 详解
    对 Java 集合的巧妙利用
    Java 泛型
    Java 字符编码与解码
    HTTP 400 错误
    a 标签的四种样式
  • 原文地址:https://www.cnblogs.com/java-263/p/13585085.html
Copyright © 2020-2023  润新知