当join左右两边满足on后的条件时,输出语句。
形式:
select [a.]culomn1,[b.]culomn2 from table1 [as a] [inner] join table2 [as b] on condition
外联:输出主表所有元素,附表的元素满足on后条件的则填充数据,否则使用null填充
左外联:以join左边的表为主表,join右边表为附表。
形式
select [a.]culomn1,[b.]culomn2 from table1 [as a] left join table2 [as b] on condition
右外联:以join右边的表为主表,join左边表为附表。
形式:
select [a.]culomn1,[b.]culomn2 from table1 [as a] right join table2 [as b] on condition
全外联:将左联和右联的结果融合在一起,即输出左,右联的公共部分和不同部分在一个表里。
形式:
select [a.]culomn1,[b.]culomn2 from table1 [as a] full join table2 [as b] on condition
定义:将某一列或者多列捆绑为分组标准对表进行分组,只能查询分组标准内的元素和聚合函数返回的结果。需要分组标准内的元素完全一致才能分为同一组。
形式:
select culomn1[,culomn2......],聚合函数 from table1 group by culomn1[,culomn2....]
ps:聚合函数的作用对象是分组后的每个被分为同一小组的元素。
定义:类似于c语言中的函数,各类面向对象语言的方法,只要创建,用的时候直接调用即可(非官方哈哈哈)
带参数:
创建:
CREATE PROC 存储过程名
@参数1 数据类型 = 默认值 ,
…… ,
@参数n 数据类型 = 默认值 OUTPUT
AS
[declare @参数]
SQL语句
GO
调用:
exec 存储过程名,参数值1,........,参数值2,......参数值n output
无参数:
创建:
CREATE PROC 存储过程名
AS
[declare @参数]
SQL语句
GO
调用:
exec 存储过程名
输出:output标记的变量作为输出,需要在调用的时候在输出变量后面加上output标志
eg:
原始表:
创建存储过程:
create proc getname
@name varchar(20) output
as
select @name = name from test
输出:
declare @name varchar(20)
exec getname @name
select @name
结果:
ps:这个只能够查询一条信息,返回的是所有返回值的最后一个
将存储过程的查询结果以表形式传出:
原始表:
创建:
Create proc table_name
as
select Name as name,ID as id from testa;
调用:
declare @table table(name varchar(20),id int)
insert into @table exec temp
select * from @table
结果:
ps:上述语句必须给列名创建别名也就是as操作,别名要与调用时声明的临时表变量里面的列名一致,个数也 需要一致。
declare @name varchar(20),@number varchar(20)
if exists(select * from MASTER.dbo.syscursors where cursor_name='cursor_temp')
deallocate cursor_temp --MASTER.dbo.syscursors判断是否存在游标的位置
declare cursor_temp CURSOR For
select name,numver from test --声明游标:declare cursor名 CURSOR FOR sql语句,变量名对应
open cursor_temp ---打开游标
fetch next from cursor_temp into @name,@number --取数据
while @@FETCH_STATUS=0 ---这个是全局变量,判断是否游标已经运行到最后一步
begin
print @name + ' ' + @number
fetch next from cursor_temp into @name,@number --取下一条数据
end
(未完待续.......以后补充)