表连接、Tsql基本编程和存储过程

表连接:
将多个表的数据一次性查询出来,共同显示

子查询方式:
select 列名1,列名1,(select 列名2 from 表名2 where 表名2.共同列名=表名1.共同列名) from 表名1 -- .就是的意思

笛卡尔积:有点像穷举
select 列名1,列名2 from 表名1,表名2 --把第一个表的数据挨个拿出来跟第二个表所有数据进行对比一下,得出来是两个表数量的相乘
where 表名2.共同列名=表名1.共同列名

join on:
select 列名1,列名2 from 表名1 join 表名2 on 表名2.共同列名=表名1.共同列名 --join 后加上一个表,on后面是什么条件上加上

join前可以有三个修饰符
inner join:内连接,就是默认,所有能对起来的可能都连接上
left join:以左边表为主,把左边表数据显示完整,再拼接上右边数据
right join:以右边表为主,把右边表数据显示完整,再拼接上左边数据,

注意:必须添加where条件或on后面跟条件,两个表的关系列

纵连接:先把上面的显示完然后接上下面的
union
select 列名1 from 表名1
union
select 列名2 from 表名2

注意:纵连接的表,列数必须一样,对应列的数据类型要一样

TSQL基本编程:
定义变量:
declare @a int;--declare声明变量的意思,变量名字前一定加@
declare @b int;

赋值:
set @a=10; --赋值
select @b =9; --赋值

打印在消息框中:
print @b --映射在消息框

映射在结果集中:
select @a ;--映射,显示在结果集

分支语句写法:
declare @aa int;
select @aa=10;
declare @bb int;
select @bb=9;
declare @cc int;

if @aa>@bb --没有小括号,空格就行
begin --没有花括号,是用begin,end 代替
select @cc=@aa+@bb;--成立走这
end

else
begin
select @cc=@aa-@bb;
end

select @cc;
注意:执行要从头开始选中

循环语句写法:
declare @aaa int;
select @aaa=1; --初始条件

while @aaa<=10; --循环条件
begin
select @aaa; --循环体
select @aaa+=1; --状态改变
end

存储过程:就是函数

定义:ps:
create proc jiafa --创建存储过程
@a int, --参数,可以有多个,用逗号隔开,最后一个可以不用加逗号
@b int
as --花括号下面就是函数体,用as
declare @c int; --函数体
select @c=@a+@b
return @c
go --执行接下来代码,也可以不用写

保存:
保存在数据库里可编程性的存储过程的系统存储过程里

修改:
在系统存储过程的表名那右键修改
alter 修改,添加,修改存储过程
proc 存储过程
dbo 不用管,表名前面基本都有
改完函数体执行一遍就行

使用:
declare @ab int;
exec @ab=jiafa 5,10; --exec 执行函数,
select @ab;

原文地址:https://www.cnblogs.com/sunshuping/p/5578748.html