概述
SQL 结构化查询语言,T-SQl 是SQL的增强版本,与多种ANSISQL标准兼容、
分类 基本类型:数据定义语言,数据操纵语言,数据控制语言。
常量与变量
Declare @name nvarchar(50)
Set @name='田泽凯'
Select @name
运算符
% 取余 , & 位与逻辑运算, | 位或逻辑运算, ^ 位异或逻辑运算,
表达式
Declare @str nvarchar(50)
Select @str='姓名:'+姓名+'性别:' From 学生信息 where 学号='1613210102'
Select @str
注释
添加注释 俩横线 -- ; /* dfsdf sdf sfagasdg */
Declare @name --学生姓名
If…else 语句
If 波尔表达式
{SQL_statemeat|statement_block} --当为真时 执行
Else
{阿斯蒂芬斯蒂芬撒地方} --为假时 执行
If…else 语句嵌套
Declare @num TNT
Select AVG(分数)
FROM 成绩信息
Where 课程编号='2' and 考试编号='0802',
If @NUM>=60
Begin
if @NUM<70
print '成绩刚刚及格,还需要努力'
else if @NUM<80
print'成绩中等'
else if @nuM<90
print'成绩良好'
else print'成绩优秀,希望把精要与大家分享分享!'
end
Else
Print'这个老师方法需要改进'
-- 当成绩为89 时 输出 成绩良好
Case语句
Case 需要变量判断
WHEN 取值情况1 THEN 操作语句、
…
…
每一种情况都可以添加
ELSE 。。。
End
CASE 语句 示例
Select 员工姓名,所任职位,员工职称=
Case 所任职位
When '经理' then '高级职称'
When '主管' then '中级职称'
When '员工' then '初级职称'
Else '其他职称'
End
From 员工信息
While语句 (控制循环)
Deckare @i int,@num int
Set @i=1
SET @num =1
While @i<=10
Begin
set @num=@num *@i
set @ i=@i+1
end
Print @num --输出的是10的阶乘
WAITFOR延迟语句
WAUTFOR
{
DELAY time
|TIME time
}
GOTO 语句 (跳转语句)
TRY…CATCH错误处理语句
BEGIN TRY
DECLARE @num INT
SET @num=1/0
SELECT @num
END TRY
Begin catch
select error_LINE() as '错误行数',error_message( ) '错误消息'
End catch
数学函数
ABS | 返回数值表达式的绝对值 |
EXP | 返回指定表达式以e为底的指数 |
CEILING | 返回大于会等于数值表达式的最小整数 |
LN | 返回数值表达式的自然对数 |
SIGN | 返回数值表达式的正号(+),负号(-) 或零 |
ROUND | 返回舍入到指定长度或精度的数值表达式 |
SOUARE | 返回数值表达式的平方 |
SQRT | 返回数值表达式的平方根 |
字符串函数
ASCII | 返回字符表达式中最左侧的字符的ASCII代码值 |
CHAR | ASCII代码转换函数,返回指定ASCII代码的字符 |
LEFT | 左子串函数,返回字符串中从左边指定个数的字符 |
LEN | 字符串函数,返回指定字符串表达式的字符数,不包含尾随空格 |
LOWER | 小写字母字符串,将大写字符数据转换成小写字符,返回表达式 |
LTRIM | 删除前导空格字符串,返回删除了前空格之后的字符表达式 |
REPLACE | 替换函数,用第三个表达式替换第一次字符串表达式中出现的所有第二个指定字符串表达式的匹配项 |
REOLICATE | 复制函数,已制定的次数重复字符表达式 |
UPPER | 大写函数,返回小写字符数据转换为大写的字符表达式 |
CHARINDEX() | 返回字符串中某个指定的子串出现的开始位置,可谓字符串也可为列名表达式。如果没有返现子串,则返回0值。 |
PATINEX() | 返回字符串中某个指定的子串出现的开始位置,子串表达式前后必须有 % ,否则返回值为0 |
字符串函数使用示例
聚合函数
AVG ; COUNT ; MAX ; MIN ; SUM .
日期和时间函数
DATEADD | 返回给定日期加上一个时间间隔后的datetime值 |
DATEDIFF | 返回两个指定日期的日期边界数和时间边界数 |
DATENAME | 返回表示指定日期的指定日期部分的字符串 |
DATEPART | 返回表示指定日期的指定日期部分的整数 |
day | 返回一个整数,表示指定日期的天datepatr部分 |
GETDATE | 以datetime值的SQL Server2008标准内部格式返回当前系统日期和时间 |
MONTH | 返回表示指定日期的‘月’ 部分的整数 |
YEAR | 返回指定日期的的年份的整数 |
标量值函数
CREATE FUNCTION 具体的名称
RETURNS int类型, 或别的类型
表值函数
CREATE FUNCTION function_name
REURNS TABLE
游标概述
:是一个数据访问机制,允许用户访问单独的数据行,而不是对整个行集进行操作,
游标只要包括以下部分:
(1)游标结果集 由定义游标的SELECT语句返回的行的集合。
(2)游标位置 指向这个结果集中的某一行指针。
特点:
游标返回一个完整的结果集,运行程序设计语言之调用集合中的一行。
允许定位在结果记得特定行。
从结果集的当前位置检索一行或多行。
支持对结果集中的当前位置的行进行数据修改,
游标的声明
DECLARE 变量名 可选两个参数【INSENSITIVE】【SCROLL】
操作游标
打开游标 OPEN
检索游标 FRTCH 。。。RELATIVE
关闭游标 CLOSE
释放游标 DEALLOCATE
判断游标提取状态
取值: ·oFETCH语句成功。 -1FETCH语句失败或行不在结果集中。 -2提取的行不存在。
游标的应用示例
第一步骤 声明游标 ;创建临时表,
第二步骤 打开游标,声明变量, while语句判断, 将查到数据 放入临时表中。
第三步骤 FETCH 获取下一个数据
第四步骤 关闭 ,释放游标,
事务
先创建一个事务,当 所有操作完成之后,再对事务进行处理。
锁
:一个事务向系统提出请求,对被操作的数据加锁。其他事物必须等到此事务解锁之后才能访问该数据。
单位 :行、页、表、盘区和数据库。
类型:共享锁;独占锁;更新锁。
系统与原数据函数
CONVERT()将一种数据类型转变为另一种数据类型
CURRENT USER 返回当前用户的名称。
ISDATE()判断他的输入是不是一个有效日期。
ISNULL()用一个指定替换值替换任何空值。
ISNUMRTIC()判断他的输入是不是一个数值。
事务模式
自动提交事务, 显示事务,隐式事务,批处理事务。
XACT_ABORT选项
选项用于指定当SQL语句出现运行时错误时,SQl Server是否自动回滚到当前事务,
死锁 : 两个以上进程执行过程中,争夺资源造成相互等待的现象 。
条件: 互斥条件,请求与保持条件,不剥夺条件,循环等待条件。
解除和预防: 按同一顺序访问对象,避免事务中的用户交互,保持事务简短并在一个批处理,使用度隔离级别,使用绑定连接。
嵌套事务
事务里面嵌套事务 和 if 嵌套类似。