一. SQL Server和T-SQL的区别(⭐T-SQL 包含了 SQL)
SQL Server是结构化查询语言,是目前关系型数据库管理系统中使用最广泛的查询语言
T-SQL是标准SQL语言的扩展,是SQL Server的核心,在SQL的的基础上添加了变量,运算符,函数和流程控制等,Microsoft SQL Server支持的语言
二.T-SQL语言的组成
数据定义语言(DDL:CREATE、DROP、ALTER)定义存储数据的结构和组织
2.数据操纵语言(DML:INSERT(插入)、UPDATE(修改)、DELETE(删除))添加新数据、删除旧数据和修改以前存储的数据对数据库进行更新。
3.数据控制语言(DCL):检索、添加和修改数据的能力,保护存储的数据不被未授权的用户所访问
4.数据查询语言(DQL),例如:SELECT语句
5.程序化SQL语句
语 句 | 功 能 |
declare | 定义查询游标 |
explan | 描述查询描述数据访问计划 |
open | 检索查询结果打开一个游标 |
fetch | 检索一条查询结果记录 |
close | 关闭游标 |
prepare | 为动态执行准备SQL语句 |
execute | 动态执行SQL语句 |
describe | 描述准备好的查询 |
三.T-SQL语句结构
SELECT 子句 [INTO 子句]
FROM 子句
[WHERE 子句]
[GROUP BY 子句]
[HAVING 子句]
[ORDER BY 子句]
表达式
declare变量声明语句
局部变量名必须以@开始开头
declare @变量名 [as] 数据类型 = 值
2.select语句赋值
select @变量名 = 字段名 from xx
set赋值
declare @变量名 数据类型
set @变量名 = 值 / (表达式)
一条set赋值语句只能给一个变量赋值,而一条select语句可以给多个变量赋值
// 1
declare @num1 int = 1
// 2
declare @num2 int
select @num2 = 2 from emp where id = 'xx'
// 3
declare @num3 int
set @num3 = 3
3. 函数
数据类型转换函数
convert(数据类型(长度),表达式[,n])
4. 运算符
算术运算符:+、-、*、/、%(求余)
字符串运算符:+(连接)
比较运算符:=、>、>=、<、<=、<>(不等于)、!>(不大于)、!<(不小于)
逻辑运算符:NOT、AND、OR、ALL(所有)、ANY(或SOME,任意一个)、BETWEEN…AND、
EXISTS(存在)、IN(在范围内)、LIKE(匹配)
按位运算符:&(位与)、|(位或)、^(按位异或)
一元运算符:+(正)、-(负)、~(按位取反)
赋值运算符:=(等于)
5. 流程控制
BEGIN…END
语句用于将多个 Transact-SQL 语句组合为一个逻辑块。当流程控制语句必须执行一个包含两条或两条以上的 T-SQL 语句的语句块时,使用 BEGIN…END 语句。
declare @x int,@y int,@t int
set @x=1
set @y=2
begin
set @t=@x
set @x=@y
set @y=@t
end
print @x
print @y
IF
在 SQL Server 中为了控制程序的执行方向,也会像其他语言(如C语言)有顺序、选择和循环 3 种控制语句,其中 IF 就属于选择判断结构
declare @x int
set @x = 8
if @x % 2 = 0
print '@x 偶数'
print 'end'
IF…ELSE
declare @x int,@y int
set @x = 8
set @y = -3
if @x > 0
if @y > 0
print '@x@y位于第一象限'
else
print '@x@y位于第四象限'
else
if @y > 0
print '@X@y位于第二象限'
else
print '@x@y位于第三象限'
WHILE
WHILE 子句是 T-SQL 语句支持的循环结构。在条件为真的情况下,WHILE 子句可以循环地执行其后的一条 T-SQL 命令。如果想循环执行一组命令,则需要配合 BEGIN…END 子句使用
declare @n int,@sum int
set @n = 1
set @sum = 0
while @n <= 10
begin
set @sum = @sum + @n
set @n = @n + 1
end
print @sum