数据库视频第八章(1)--sql语言

第八章 Transact-SQL语言

结构化查询语言SQL:(SQL)是ANSI和ISO定义的标准,T-SQL是microsoft公司对sql标准的一个实现。
T-sql语言:T-sql语言是sql(结构化查询语言的增强版本),与多种ANSISQL标准兼容,而且在标准的基础上还进行了许多扩展。T-sql代码已成为sql server 的核心,T-sql在关系数据库管理系统中实现数据的检索,操纵和添加功能。
分类:在microsoft sql server 系统中,T-sql可以创建,维护,保护数据库对象,并且可以 操作对象中的数据,所以T-sql语言是一种完整的语言。根据T-sql语言的执行功能特点,可以将T-sql语言分为基本三类:
数据定义语言(DDL):create database,create table,drop table ,atler table 等对数据库对象的添加删除修改等
数据操纵语言(DML):update,insert,delete,select 对数据的增删查改
数据控制语言(DCL):控制数据库的访问权限与安全
其他常用类型:
事务管理语言
流程控制语言:循环结构,选择,分支等
附加的语言元素:定义变量常量等
常量与变量(附加的语言元素)
常量:具体的值,不需要声明,1就是一个int整形的常量,张三这个名字就是一个字符串的常量
变量:全局变量,系统中已经存在,不能自己声明
局部变量,用户根据需要自己声明
局部变量 声明方法: declare @变量名 变量类型
给变量赋值
方法一:set @变量名=表达式
方法二:select @变量名=表达式

declare @name varchar(50)
select @name='张三'
select @name
declare @name varchar(50)
set @name='张三'
select @name

运算符
算数运算符:+,-,,/,%(除数取余)
比较运算符:=,<,>,<=,>=,<>(不等于),!=(不等于),!<(不小于),!>(不大于)
逻辑运算符
在这里插入图片描述位运算符

其他运算符
赋值运算符:=
连接运算符:+
一元运算符:+(数值为正),-(数值为负),~(返回数字的逻辑非)
表达式:一个复杂的式子是一个表达式,一个常量一个变量也是一个表达式
在这里插入图片描述
注释:在数据库编程中添加注释(存储过程,变量等),养成良好的编程习惯
注释是程序代码中不被执行的文本字符串,用于对代码进行说明或暂时用来进行诊断的部分语句,一般的,注释主要描述程序名称,作者名称,变量名称,代码更改日期,算法描述等。
在mircosoft sql server 2008系统中,支持两种注释方式,1.双连号(–)注释方式 2.正斜杠星号字符(/
…*/)
为单行代码添加注释

declare @name varchar(50)   --声明姓名变量字符串

为多行代码添加注释
在这里插入图片描述
流程控制语句:控制T-sql语句的执行顺序
当为一条语句时,可加可不加begin…end,但是当语句不止一句时,需要使用begin end 语句块

declare @num int
select @num=avg(分数) from 成绩信息
 where 考试编号='801' and 课程编号='2'
if @num>80
begin
	print '这门课老师教的非常成功!'
end
else
	print'这个老师教学方法需要改进!'

下列代码为多个if else嵌套的流程控制语句

declare @num int
select @num=avg(分数) from 成绩信息 where 考试编号='801' and 课程编号='2'
if @num>=60
begin
	if @num<70
	print'成绩刚刚及格,还需要继续努力!'
	else if @num<80
	print '成绩中等!'
	else if @num<90
	print '成绩良好!’
	else print '成绩优秀,希望把经验与大家分享!'
end
else print'这个老师教学方法需要改进!'

case语句应用:根据所任职务添加新的一列员工职称,给员工职称赋值

select 员工姓名,所任职务,员工职称=
case 所任职务
when '经理' then '高级职称'
when ‘主管' then ’中级职称'
when ‘职员' then '初级职称'
else '其他职称'
end
from 新员工信息

while循环语句
在这里插入图片描述
在这里插入图片描述
waitfor延迟语句
有两种书写方式:
方法一:
Waitfor delay ‘00:00:05’ --5s之后执行下面的语句
Exec sp_help --执行系统存储过程
方法二:
Waitfor time ‘17:09:06’–指定具体的时间执行下面的语句命令
Exec sp_help --执行系统存储过程

select getdate() 该语句可以获得当前系统的时间
在这里插入图片描述
Go to 跳转语句:可以定义一些标签,通过if判断跳转到这些指定的标签

declare @counter int;
set @counter=1
while @counter<10
begin
	print @counter
	set @counter=@counter+1
	if @counter=4 goto branch_one     --jumps to the first branch.
	if @counter=5 goto branch_two     --this will never execute
end
Branch_one:
	print 'jumping to branch one.'
	goto branch_three
brahch_two:
	print 'jumping to branch two.'
branch_three:
	print 'jumping to branch three.' 

错误处理语句(错误捕捉)
在这里插入图片描述
算数运算符
ABS:返回数值表达式的绝对值
EXP:返回指定表达式以e为底的指数
CEILING:返回大于或等于数值表达式的最小整数
FLOOR:返回小于或等于数值表达式的最大整数
LN:返回数值表达式的自然对数
LOG:返回数值表达式以10为底的对数
POWER:返回对数值表达式及进行幂运算的结果
ROUND:返回舍入到指定长度或精度的数值表达式
SIGN:返回数值表达式的正好(+)负号(-)或零(0)
SQUARE:返回数值表达式的平方
SQRT:返回数值表达式的平方根

declare @i float,@j int,@a decimal(18,2)
set @i=-12.2324
set @j=100
print abs(@i)
print round(abs(@i),2)
print ceiling(round(abs(@i),2))          --对上述求出的结果12.23,求出大于或等于它的最小整数
print floor(abs(round(@i,2)))           --对上述求出的结果12.23,求出小于或等于它的最大整数
print power (@j,2)						 --对@j求2次幂,power是对数值表达式进行幂运算
print square (@j)						 --对@j求平方,只能求二次幂运算
print power (@j,0.5)			         --对@j进行1/2次幂运算
print sqrt(@j)					     --对@进行开方运算

字符串函数
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
下列代码执行结果为104,为h的ascii码值

declare @str nvarchar(50)
set @str='hello world'
print ascii(@str)

等同于下列的代码

print ascii('h')

下列代码返回指定的ascii码值对应的ascii代码的字符,语句执行结果为h

print char(104)

left函数从左边开始截取,截取5个字符,执行结果返回hello

declare @str nvarchar(50)
set @str='hello world'
print right (@str,5)

right函数从右边开始截取,截取5个,下列执行结果为orld!

declare @str nvarchar(50)
set @str='hello world!'
print right(@str,5)

substring(@string,从第几个字符开始,截取几个字符)

字符串函数
1.charindex()函数,返回字符串中某个指定的字符串出现的开始位置
charindex(所要查找的字符表达式,表达式),如果没有发现子串,则返回0值,此函数不能用于text和image数据类型
2.patindex()返回字符串中某个指定的子串出现的开始位置
patindex(%子串%,表达式)其中子串表达式前后必须要有%,否则返回值为0,与第一个函数不同的是,patindex函数的子串中可以使用通配符,且此函数可用于char,varchar和text数据类型

下列执行结果为3,子字符串分公司在@str1字符串中最先出现的位置为3

declare @str1 nvarchar(20)
set @str1='上海分公司财务经理'
print charinx('分公司',@str1)

聚合函数:AVG,COUNT,MAX,MIN,SUM

select avg(分数) as 平均分,count(分数) as 总人数, sum(分数) as 总体分数
from 成绩信息
where 考试编号='0801' and 课程编号='2
select max(分数) as 最高分,mint(分数) as 最低分
from 成绩信息
where 考试编号='0801' and 课程编号='2

日期和时间函数
1.dateadd:返回给指定日期加上一个时间间隔后的新的datetime值
2.datediff:返回跨两个指定日期的日期边界数和时间边界数
3.datename:返回标识指定日期的指定日期部分的字符串
4.datepart:返回标识指定日期指定日期部分的整数
5.day:返回一个整数,表示指定日期的天的部分
6.getdate:以datetime值的sql server2008标准内部格式返回当前系统日期和时间
7.getutcdate:返回标识当前的UTC时间
8.month:返回表示指定日期的"月"部分的整数
8.year:返回表示指定日期的年份的整数
在这里插入图片描述

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值