SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL。T-SQL与PL/SQL不同,并没有固定的程序结构。
T-SQL包括以下4个部分:
在T-SQL中,命令和语句的书写是不区分大小写的。
1、标识符
①T-SQL规则标识符
②界定标识符
对于不符合标识符规则的标识符,则要使用界定符方括号([])或双引号(“”)将标识符括起来。如标识符[My Table]、“select”内分别使用了空格和保留字select。
2、数据类型
在SQL Server中提供了多种系统数据类型。除了系统数据类型外,还可以自定义数据类型。
①系统数据类型
(1)精确数字数据类型
(2)近似数字数据类型
(3)货币数据类型
(4)字符数据类型
(3)日期和时间数据类型
(4)二进制数据类型
(5)专用数据类型
②程序中的数据类型
(1)cursor
数据能够以驻留内存的状态进行存储。游标,与表类似,有数据行和列,但它们的相似之处仅限于此。不同之处如:游标没有索引。通过使用游标来建立数据集,以便一次处理一行数据。
(2)table
table数据类型与游标和表有几分相似之处。该数据类型用于存储行和列的数据,但不能在数据上建索引。此时,系统可以“一次处理一个数据集”的数据,就想处理一个标准的表那样。
(3)sql_varint
可以根据存储的数据改变数据类型,即用来存储一些不同类型的数据类型。不过强烈不推荐使用这种数据类型。
3、表达式
表达式常指由常量、变量、函数等通过运算符按一定的规则连接起来的有意义的式子。
1.变量
T-SQL的变量分为局部变量和全局变量。
(1)局部变量
局部变量由用户定义,一般出现在批处理、存储过程和触发器中,其作用范围仅在程序内部。
局部变量必须先声明,后使用。T-SQL还为局部变量提供了赋值语句。
①declare变量声明语句,其语法格式为:
declare @变量1 [as] datatype,@变量2 [as] datatype...
局部变量的赋值有三种方式:
①在变量定义的时候对其赋值:
declare @变量1 [as] datatype = value,@变量2 [as] datatype = value...
②select赋值语句,其语法格式为:
select @变量1 = 表达式1,@变量2 = 表达式2...
③set赋值语句,其语法格式为:
set @变量 = 表达式
【示例】
declare @sumsal as numeric(10,2),@dno as tinyint
select @dno = deptno,@sumsal = sum(sal)
from emp
where deptno = 10
group by deptno
print cast(@dno as varchar)+':'+cast(@sumsal as varchar)
(2)全局变量
全局变量由SQL Server系统定义,通常用来跟踪服务器范围和特定会话期间的信息,不能被用户显式地定义和赋值。可以通过访问全局变量来了解系统目前的一些状态信息。
全局变量名以@@开头。下面给出一些常用的全局变量。
全局变量 | 说明 |
---|---|
@@error | 上一条SQL语句报告的错误号 |
@@nestlevel | 当前存储过程或触发器的嵌套级别 |
@@rowcount | 上一条SQL语句处理的行数 |
@@servername | 本地服务器名称 |
@@identity | 最后插入的标识值 |
@@spid | 当前用户进程的会话id |
@@fetch_status | 上一条游标fetch语句的状态 |
@@cpu_busy | SQL Server自上次启动后的时间状态 |
2.函数
函数是用来完成某种特定功能,并返回处理结果的一组T-SQL语句,处理结果成为“返回值”,处理过程成为“函数体”。
函数又分为系统内置函数和用户自动以函数。SQL Server提供了大量系统内置函数,主要可以分为以下几类:数学函数、字符串函数、日期函数、convert函数、聚合函数。
(1)数学函数
T-SQL中提供的常用的数学函数如下:
(2)字符串函数
(3)日期和时间函数
首先列出日期时间函数中的重要参数。
日期时间元素 | 缩写 | 含义 |
---|---|---|
year | yy,yyyy | 年 |
month | m,mm | 月 |
day | d,dd | 日 |
dayofyear | dy | 年的天数 |
week | wk | 星期数 |
weekday | dw | 星期几 |
hour | hh | 时 |
minute | mi | 分 |
quarter | 刻 | |
second | ss | 秒 |
millisecond | ms | 毫秒 |
T-SQL中提供下列日期函数:
涉及日期时间常量时,SQL Server建议使用与dateformat及语言环境设置无关的字符串格式,通常这样的字符串常量符合下面两种形式:
(4)数据类型转换函数
转换的方式有隐式转换和显式转换两种。
隐式转换是SQL Server自动地将数据从一种数据类型转换为另一种数据类型,用户不可见。
显式转换使用convert函数,该函数可以将一种数据类型的表达式强制转换为另一种数据类型的表达式。两种数据类型必须能够进行转换,例如,char值可以转换为binary,但不能转换为image。该函数的主要作用是把数值型或日期型数据转换为字符串,而只包含数字的字符串转换为数值型数据一般隐式转换。
格式:convert(数据类型(长度),表达式[,n])
函数的第4个参数n是可选的,用于日期时间型数据类型和字符数据类型转换。参数取值如下表所示。
不带世纪数位 | 带世纪数位 | 格式 |
---|---|---|
1 | 101 | mm/dd/yyyy |
2 | 102 | yy.mm.dd |
3 | 103 | dd/mm/yyyy |
4 | 104 | dd.mm.yy |
5 | 105 | dd-mm-yy |
8 | 108 | hh:mi:ss |
20或120 | yyyy-mm-dd hh:mi::ss(24h) |
【示例】
select ename+''''+'s sal is'+convert(char(7),sal) as 'EMPLOYEE'S SAL' from emp;
select cid as '客户ID',cname as '客户名称'
convert(char(10),cRegisterationDate,102) as '注册日期'
from customer;
最终显示的日期格式就会如2006.12.02
3.运算符
算术运算符:+、-、*、/、%(求余)
字符串运算符:+(连接)
比较运算符:=、>、>=、<、<=、<>(不等于)、!>(不大于)、!<(不小于)
逻辑运算符:NOT、AND、OR、ALL(所有)、ANY(或SOME,任意一个)、BETWEEN...AND、EXISTS(存在)、IN(在范围内)、LIKE(匹配)
按位运算符:&(位与)、|(位或)、^(按位异或)
一元运算符:+(正)、-(负)、~(按位取反)
赋值运算符:=(等于)
作者:zoyoto
链接:https://www.jianshu.com/p/a7bb06705916
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。