多表操作

来源:互联网 发布:网络尖兵防御是什么 编辑:程序博客网 时间:2024/06/08 15:45

多表操作

1. 基本连接操作

 1)   结构:From子句将不同表隔开,where创建一个同等连接(同等连接:第一个基表中一列值与第二个基表相应的一列的值相             等的连接);结果是在查询的时候结果为两个基表中列值相匹配的行。

 2)   原则:from包含所有表名;where定义一个同等连接;多个表中有同一个列名时,列名表示方式为表名.列名

2. 内连接(自然连接)

      结构:from中必须定义一个on子句;必须有join关键字

3. 外连接

 1)   结构:主表行在从表中找到匹配行(主表直接返回查询结果)

      主表行在从表中未找到匹配行(主表全部返回,从表不匹配的填上NULL返回)

 2)   内连接与外连接最大的区别:

      外连接中提到的表,至少返回一个表或视图的全部行

 3)   主表位置:left outer join(左外);right outer join(右外);full outer join(完全)

4.  连接查询

    将两个表的列进行组合

5.  联合查询

    与连接查询最大的区别:联合查询中有两个或者两个以上的select子句,这些子句将多个查询结果集组合成一个结果集

6.  交叉连接与自连接

    交叉连接:两个表中每两个可能成对的行占一行

    自连接:一个表与其自身进行连接的查询

    总结:交叉连接是两个表的各行所有可能组合;自连接是一个表与自身相连接的查询

    关键字:

    交叉连接:cross join

    自连接:使用别名实现一个表自身连接 inner join

具体操作查询

操作包括(插入SQL数据,更新SQL数据,删除SQL数据)

1.  Inster…values

   (Inster [into]表名 列名

    Values 插入的值)

  1.1    如果使用defult插入与inster一起使用,可节省时间

       例如: values(20,’消费’,defult,defult)

  1.2    注意:插入的值内用括号和逗号将内容写出;插入的列中未被制定的要支持空值或默认值

2.  Inster…select

  2.1  select:指定插入表的值(与values作用一样),通过select生成结果集,再由inster…select将这些行添加到表中

  2.2  注意:两个表中涉及到的列的数据类型一致,明确是否存在默认值。

  2.3  Inster 表名  select 列名 from 表名 where 条件

3.  Select into (创建表:将任何查询结果集放置到一个新表中)

  3.1   select 列名 into 新表名  from 表名 where 条件(如果新表时本地临时表则在表名前面加#;如果是全局临时表则             在表名前面加##)

  3.2   本地临时表:当前会话中可见(使用者结果会话本地临时空间会被收回)

  3.3   全局临时表:所有会话中可见(创建表的会话结束且当前参照表的最后一个T-SQL完成后,全局临时表被释放)

  3.4   例如:

       Use 手镯营销系统

       Select 珠宝代号as 手镯编号,珠宝售价as 售价into  #手镯价格

       From 手镯信息

       查看结果 select* from 手镯价格

4.   更新----update

  4.1  update [top] 表名/视图名

       set 列名=表达式\dafult\null@variable=expression […,n]

       where 条件

  4.2  注意:不更新标识列,每次只能修改一个表信息,同时更新一列或多列,可将一个变量或多个变量放在同一个表达式中

  4.3  例如:

       Update 手镯信息

       Set 珠宝售价=珠宝售价-200

       返款价=返款价-200

       Where 珠宝名称=’美白玛瑙手镯’

  4.4  多表更新:嵌套查询

Update 手镯信息

Set 珠宝售价=珠宝售价+200

Where 珠宝商编号in(

Select 珠宝商编号

From 销售信息

Where 珠宝代号=’ASG-06’)

Where 珠宝编号=5

解释:

最终结果:首先修改’销售信息’表,选中的’珠宝商编号‘  对应的’珠宝售价‘列+200

然后将修改更新给’手镯信息’表