sql语句初步学习有感

1.inner join -------内联

join左右两边满足on后的条件时,输出语句。

形式:

select [a.]culomn1,[b.]culomn2 from table1 [as a] [inner] join table2 [as b] on condition

2.Left(Right) jion  ---------外联-左(右)

 外联:输出主表所有元素,附表的元素满足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

3.group by  ---------分组

定义:将某一列或者多列捆绑为分组标准对表进行分组,只能查询分组标准内的元素聚合函数返回的结果。需要分组标准内的元素完全一致才能分为同一组。

形式:

select culomn1[,culomn2......],聚合函数 from table1 group by culomn1[,culomn2....]

ps:聚合函数的作用对象是分组后的每个被分为同一小组的元素。

4.存储过程 

定义:类似于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

              原始表:

                 sql语句初步学习有感_第1张图片

              创建存储过程:

                                   

create proc getname
                                               @name varchar(20) output
                                               as 
                                               select @name = name from test 

              输出:

                                   

declare @name varchar(20)
                                               exec getname @name
                                               select @name

              结果:

                         sql语句初步学习有感_第2张图片

              ps:这个只能够查询一条信息,返回的是所有返回值的最后一个

将存储过程的查询结果以表形式传出:

               原始表:

                       sql语句初步学习有感_第3张图片

               创建:

                                

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

                结果:

                     sql语句初步学习有感_第4张图片

               ps:上述语句必须给列名创建别名也就是as操作,别名要与调用时声明的临时表变量里面的列名一致,个数也                                       需要一致。

5.游标

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

                (未完待续.......以后补充)

                                                

你可能感兴趣的:(sql)