人生中的第一篇博客,从现在开始记录点点滴滴,不再虚度年华。
———BEYOND
I.学习sql之前回忆一下,什么是变量?
- 变量:能存储数据的值。
- 变量是一块内存空间的表示。
- 数组一连串空间
- 变量是存储数据的容器(通俗讲)
II.变量分为局部变量和全局变量
局部变量的使用是先申明再赋值。
全局变量由系统定义和维护,可以直接使用,但一般不自定义全局变量。
1:局部变量:
局部变量的名称必须以标记@作为前缀
声明局部变量的语句如下:
declare @variable name(局部变量名称) DataType(数据类型)
局部变量赋值有两种方法:Set语句或Select语句
如图所示:
2:全局变量
SqlServer中的所有全局变量都使用两个@符号作为前缀
常用的几个全局变量:(@@error重点)
@@error | 上一条SQL错误号 |
@@identity | 最后一次插入的标识值 |
@@rowcount | 受上一个SQL语句影响的行数 |
@@serviceName | 该计算机上的SQL服务名称 |
@@Version | SQLServer的版本信息 |
注:程序员不能自己定义全局变量,不能给全局变量赋值
Ⅲ:select语句和set语句区别
Set | Select | |
同时对多个变量赋值 | 不支持 | 支持 |
表达式返回多个值时 | 出错 | 将返回的最后一个值赋给变量 |
表达式未返回值时 | 变量将赋值为NULL | 变量保持原值 |
注:被赋值的变量的数据来源于数据表的时候,不要用set,选用select
如下图所示:
1 2
3
|
Declare @stuName nvarchar(32) Select @stuName=studentname from student Where studentno=23 |
Ⅳ:数据类型转换
cast()与convert()函数
基本语法:
cast(表达式 as 数据类型)
convert(数据类型[(长度)],表达式[,样式])
二者在本质上无任何区别
唯一不同之处是:在将日期时间类型的数据转换为字符串数据时,convert()函数可以通过第三个参数指定转换后字符数据的显示格式不同。
Ⅴ:逻辑控制语句
1:顺序结构控制语句
begin
语句或语句块
end
2:If-else条件语句(重点)
例如:
统计并显示2013-08-09 的oop考试平均分
如果平均分在70以上,显示“考试成绩优秀”,并显示前三名学生的考试信息
如果在70分以下,显示“考试成绩较差”,并显示后三名学生的考试信息
3:while循环语句
示例:
检查学生“oop”课最近一次考试是否有不及格(60分及格)的学生。
如有,每人加2分,高于95分的学生不再加分,直至所有学生这次考试成绩均及格
注:在SQL 中,只有while一种循环,没有do-while和for循环
4:case多分支语句
case-end语句计算一组条件表达式,并返回其中一个符合条件的结果
基本语法:
case
when 条件1 then 结果1
when 条件2 then 结果2
[ else 其他结果]
end
示例:
ABCDE五级打分制显示学生oop课最近一次考试成绩(姓名和等级)
A级: 90分以上,B级:80-分,C级: 70-分,D级:60-分,E级:60分以下
批处理
GO指令:GO关键字标志着批处理的结束,它是一条或多条SQL语句的集合
作用: 能简化数据库的管理;
批处理可以提高语句执行的效率;
提示: GO是SQL Server特有的批处理命令,只有SQL Server的查询编辑器才能识别并处理,编辑其他应用程序时不能使用该命令。