黑马程序员--SQL编程

来源:互联网 发布:amazon.it 编辑:程序博客网 时间:2024/06/07 15:49
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

SQL语法代表了另一种编程体系在这个体系里:

       >不使用“{}”定义语句块

>定义变量时类型放后面

>通常不区分大小写

一、使用变量

1、局部变量

1> 语法:

>declare @变量名变量类型(varchar

2> 例如:

>declare @name varchar(18)

>declare @number int

3> 局部变量的赋值方法

>set @name='你是猪'

       >select @name=name from Student where stuNo=1001

4> setselect赋值语句的异同

>set赋值语句一般用于赋给变量指定的数据常量

>select赋值语句用于从表中查询数据,然后再赋值给变量。需要注意的是,select语句需要确保筛选的记录不多于一条,如果查询的记录多于一条将把

最后一条记录的值赋给变量

>set语句和select的区别

set                              select

-----------------------------------------------------------------------------------------------------------

同时对多个变量赋值不支持支持

表达式返回多个值时出错将返回的最后一个值赋给变量

表达式未返回值时变量被赋null变量保持原值

-----------------------------------------------------------------------------------------------------------

>建议使用set,原因是因为set语句没有结果集,占用资源少,因此,给一个变量赋值时,使用set效率更高

5>使用变量进行模糊查询的语法:

       >select * from Student where name like '%'+@name+'%'

2、全局变量

1> 常用的全局变量

变量含义

-------------------------------------------------------------------------------------------

@@error                                         最后一个T-SQL错误的错误号

@@identitymax费时,易错)最后一次插入的标识值

@@language                                  当前使用语言的名称

@@max_connections                     可以创建的同时连接的最大数目

@@rowcount                                  受上一次SQL语句影响的行数

@@servername                              本地服务器的名称

@@servicename                            该计算机上的SQL服务的名称

@@timeticks                                  当前计算机上没刻度的微妙数

@@transcount                                当前连接打开的事物数

@@version                                     SQL Server的版本信息

2> @@indentity实例

>     insert Student values('你是猪','青岛')

print '最后插入标识列为:'+convert(varchar(20),@@identity)

       >     SqlConnection conn = new SqlConnection("server=.;database=MyText;integrated security=SSPI");

                conn.Open();

                string sql = string.Format("insert Student values('{0}','{1}');select @@identity;"

                                        ,textBox1.Text

                                        ,textBox2.Text);

                SqlCommand cmd = new SqlCommand(sql,conn);

                int res = Convert.ToInt32(cmd.ExecuteScalar());

                conn.Close();

                MessageBox.Show(res.ToString());

二、输出语句

1print语句和select语句

1> 语法:

>print 局部变量或字符串

>select 局部变量 as自定义列名

2> 转换函数

>int值转换为字符串

>print '最后插入标识列为:'+convert(varchar(20),@@identity)

       >print语句要求以单个变量或字符串表达式作为参数,而‘+’运算符作为连接两个字符串的连接符,要求‘+’运算符两侧的操作数的数据类型必须一致

3> printselect的异同

>print语句输出的结果将在消息窗口中以文本方式显示

>select语句输出的结果将在结果窗口以表格方式显示

三、数据类型转换

1cast()convert()函数

1> 语法:

>cast(表达式 as数据类型)

       >convert(数据类型[(长度)],长度[,样式])

2> 异同

>cast()convert()基本类似,convert()函数与cast()不同的是,在将日期时间类型/浮点类型的数据转换为字符串数据时,convert()函数可以通过第三个参数指定转换后的字符

样式,不同的样式使转换后字符数据的显示格式不同。convert()函数的第三个参数可以省略

>一般建议使用convert()函数

四、逻辑控制语句

1begin-end语句

1> 概述:

>begin-end语句的作用类似于C#语言的"{ }"符号,它经常在分支结构语句和循环语句中出现,表示语句块的开始和结束。在一个语块中可以包含另一个语句块

2> 规范:

>if-end语句和while语句中,beginend应放置在新的一行。当beginend之间有多行SQL语句时,可以在end语句后添加注释以使他么能够很好的匹配起来,提高代码可读性

3> 语法:

beign

语句和语句块

end

2if-else条件语句

1> 概述:

>if-else语句属于分支结构,它与C#编程语言的if语句类似,也是根据条件是否成立来确定程序的执行方向

2> 语法:

if(条件)

语句或语句块1

       else

语句或语句块2

3case多分支语句

1> 概述:

>等同于C#中的switch

2> 语法:

case

              when 条件1 then结果1

4while循环语句

1> 概述:

>while循环语句可以根据某些条件重复执行一条SQL语句或一个语句块

2> 语法:

while(条件)

begin

语句或语句块

[break | continue]

              end

五、批处理

1GO指令

1> 概述:

>以一条命令的方式来处理一组命令的过程称为批处理

2> 其他

>由于每个批处理之间是独立的,因此,在一个批处理出现错误时,并不会影响其他批处理中SQL代码的运行

>GO关键字标志着批处理的结束

>批处理的好处是能够简化数据库的管理

>本节说的是SQL批处理,而不是命令行批处理,SQL批处理只能保存在后缀为sql的文本文件中,但可通过OSQL-iSQL文件名,命令被自动执行

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
原创粉丝点击