数据库编程

数据库编程

T-SQL编程基础知识

标识符

  • 标识符分类
    常规标识符(严格遵守标识符格式规则)
    界定标识符(引号”或方括号[])
  • 标识符格式规则
    字母或_、@、#开头的字母数字或_、@、$序列
    不与保留字相同
    长度小于128
    不符合规则的标识符必须加以界定(双引号””或方括号[])

注释语句
注释语句是对程序代码的说明或暂时禁用,是程序代码中不编译执行的语句
单行注释 –
例: --求‘3-105’课程的平均分
多行注释 /**/
例: /* 作者:
创建时间: */

数据类型

整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等

变量

局部变量
局部变量是用户定义,必须以@开头,在程序内声明,并只能在该程序内使用
(1)局部变量的声明
DECLARE @<局部变量名> <数据类型>[,…n]
(2)局部变量的赋值
SET|SELECT @<局部变量名>=<表达式>
(3)局部变量的显示
SELECT|PRINT @<局部变量名>

SET 、SELECT赋值的区别
SET赋值语句一般用户赋给变量指定的数据变量
SELECT赋值语句一般用于表中查询数据,当查询的记录多于一条,将把最后一条记录的值赋给变量
SET一次只能赋值一个变量
SELECT可以一次赋值多个变量
SELECT @a=1,@b=2

例1:创建一个@myvar 变量,然后将一个字符串值放在变量中,最后输出 @myvar 变量的值

declare @mychar char(20)
select @mychar='hello sql'
-- set @mychar='hello sql'也行
select @mychar

全局变量

全局变量是SQL Server系统内部使用的变量,以@@开头
全局变量不是由用户的程序定义的,它们是在服务器级定义的
用户只能使用预先定义的全局变量

例3 :用全局变量查看SQL Server的版本、当前所使用的SQL Server服务器的名称以及所使用的服务名称等信息

print '目前所用SQL Server的版本信息如下:'
print @@VERSION
print '目前SQL Server服务器名称为:'+@@SERVERNAME
print '目前所用服务器为:'+@@SERVICENAME

运算符

SQL Server 的运算符和其他高级语言类似,用于指定要在一个或多个表达式中执行的操作,将变量、常量和函数连接起来
在这里插入图片描述

流程控制语句

BEGIN 和 END标记一个程序语句块的开始和结束。它经常与IF…ELSE和WHILE 循环一起使用。

BEGIN
语句1
语句2
语句3
……
END

选择结构

IF ELSE
IF…ELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。其中,ELSE子句是可选的, SQL Server允许嵌套使用IF…ELSE语句,而且嵌套层数没有限制
语法格式

   IF <布尔表达式>
       <SQL语句>|<语句块>
  [ELSE
      <SQL语句>|<语句块>]

IF 条件
BEGIN
语句块1
END
[ELSE
BEGIN
语句块2
END]

例4:查找有没有学号为202015120的学生,有则显示学生信息,没有显式没找到

if exists(select * from student where sno='2020015120')
begin
select * from student where sno='2020015120'
end
else
print'没找着!'
Case语句

CASE语句可以计算多个条件式,并将其中一个符合条件的结果表达式返回。

CASE 表达式
WHEN 表达式的值1 THEN 返回表达式1
WHEN 表达式的值2 THEN 返回表达式2

ELSE 返回表达式n
END

例5:从学生表STUDENT中,选取SNO,SSEX,如果SSEX为‘男’则输出‘M’,如果为‘女’,则输出‘F’

select sno,ssex=
case ssex
when '男' then 'M'
when '女' then 'F'
end
from student

循环结构

WHILE
设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行

WHILE 逻辑表达式
BEGIN
T-SQL语句组
[break]/终止整个语句的执行/
[continue]/结束一次循环体的执行/
END

例7: 求1 ~10的和

declare @x int,@sum int
select @x=0,@sum=0
while @x<10
begin
set @x=@x+1
set @sum=@sum+@x
print 'sum='+convert(char(2),@sum)--类型转换函数convert
end

例8 打印1,2,3,4

DECLARE @x int
SELECT @x=1
WHILE @x<=10
BEGIN
    IF @x=5  
        BREAK
    ELSE
        PRINT CONVERT(char,@ x) 
    SELECT @x=@x+1
END

例9 打印1~5之间的所有奇数

declare @x int
select @x=0
while @x<=5
begin
select @x=@x+1
if @x%2=0
continue
print convert(char,@x)
end

等待语句

等待语句挂起一个程序中语句的执行,直到指定的某一时间点到来或在一定的时间间断之后才继续执行。
语法格式

WAITFOR DELAY '<时间间隔>‘ | TIME ‘<时间>’

其中,时间间隔以及时间均为datetime类型,格式为“hh:mm:ss”。
DELAY指定在多长时间后执行语句,最长为24小时
TIME指定运行批处理、存储过程或事务的时间,在time内不能指定日期

例10:设置等待一小时后执行查询

begin
waitfor delay '1:00:00'
select * from student
end

例11:设置到十点整执行查询

begin
waitfor time '10:00:00'
select * from student
end

RETURN语句
RETURN语句用于无条件地终止一个查询、存储过程或者批处理,位于RETURN语句之后的程序将不会被执行

系统函数

在这里插入图片描述

日期和时间函数

在这里插入图片描述
例12:使用日期时间函数计算自己现在的年龄

select '年龄'=datediff(YY,'1999-05-01',getdate())

取子串函数
SUBSTRING (字符串,int pos,int length)
函数返回的子串是从字符串左边第pos个字符起length个字符的部分。
SUBSTRING()函数不能用于TEXT 和IMAGE 数据类型

数据类型转换函数:CONVERT和CAST

  • CAST函数允许把一个数据类型强制转换为另一种数据类型,其语法形式为:
    CAST( expression AS data_type )
  • CONVERT函数允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把日期转换成不同的样式,其语法形式为:
    CONVERT (data_type[(length)],expression [,style])

例子:查询学生基本信息表STUDENT中的学号、姓名、年龄,并且将这三个字段通过“+”运算符连接显示在查询结果中

SELECT  SNO+SNAME+CAST(SAGE AS CHAR(2))
FROM STUDENT

游标

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值