T-SQL语言是具有强大查询功能的数据库语言,除此以外,T-SQL还可以控制DBMS为其用户提供的所有功能,主要包括如下:
数据定义语言(DDL,Data Definition Language)
SQL让用户定义存储数据的结构和组织,以及数据项之间的关系。
数据操纵语言(DML,Data Manipulation Language)
SQL允许用户或应用程序通过添加新数据、删除旧数据和修改以前存储的数据对数据库进行更新。
数据控制语言(DCL,Data Control Language)
可以使用SQL来限制用户检索、添加和修改数据的能力,保护存储的数据不被未授权的用户所访问。
数据检索语言
SQL允许用户或应用程序从数据库中检索存储的数据并使用它。
数据共享
可以使用SQL来协调多个并发用户共享数据,确保他们不会相互干扰。
数据完整性
SQL在数据库中定义完整性约束条件,使它不会由不一致的更新或系统失败而遭到破坏
因此,T-SQL是一种综合性语言,用来控制并与数据库管理系统进行交互作用。T-SQL是数据库子语言,包含大约40条专用于数据库管理任务的语句。
每条SQL语句均由一个谓词(Verb)开始,该谓词描述这条语句要产生的动作,例如SELECT或UPDATE关键字。谓词后紧接着一个或多个子句(Clause),子句中给出了被谓词作用的数据或提供谓词动作的详细信息。每一条子句都由一个关键字开始。
下面以SELECT语句为例介绍T-SQL语句的结构,语法格式如下:
SELECT 子句 [INTO 子句] FROM 子句 [WHERE 子句] [GROUP BY 子句] [HAVING 子句] [ORDER BY 子句]
聚合函数对一组值进行计算并返回单一的值,通常聚合函数会与SELECT语句的GROUP BY子句一同使用,在与GROUP BY子句使用时,聚合函数会为每一个组产生一个单一值,而不会为整个表产生一个单一值。
常用的聚合函数及说明:
1.SUM函数
SELECT SUM(FriendLimited) FROM tb_USER
SELECT AVG(AGE) FROM tb_USER
SELECT MIN(AGE),MAX(AGE) FROM tb_USER
SELECT COUNT(*) FROM tb_USER
SELECT DISTINCT(BloodTypeID) FROM tb_USER
通过指定的字段进行对数据进行分组
SELECT BloodTypeID,AVG(AGE) FROM tb_USER GROUP BY BloodTypeID
HAVING函数,查询数据表中的重复记录,可以借助HAVING子句实现,该子句用来指定组或聚合的搜索条件。HAVING子句只能与SELECT语句一起使用,而且,它通常在GROUP BY子句中使用。
SELECT AGE,COUNT(AGE) FROM tb_USER GROUP BY AGE
SELECT AGE,COUNT(AGE) FROM tb_USER GROUP BY AGE HAVING COUNT(AGE)>1
数学函数可以对数据类型为整型(integer)、实型(real)、浮点型(float)、货币型(money)和smallmoney的列进行操作。它的返回值是6位小数,如果使用出错,则返回NULL值并显示提示信息,通常该函数可以用在SQL语句的表达式中
常用的数学函数及说明:
算术函数(例如ABS、CEILING、DEGREES、FLOOR、POWER、RADIANS和SIGN)返回与输入值具有相同数据类型的值。三角函数和其他函数(包括EXP、LOG、LOG10、SQUARE和SQRT)将输入值转换为float并返回float值。
SELECT PI()
SELECT RAND()--随机0-1浮点
SELECT ROUND(1.205,0)--四舍五入
SELECT FLOOR(1.9002)--向下取整
SELECT CEILING(1.0005)--向上取整
SELECT DEGREES(-1.0)--将弧度转为度
SELECT RADIANS(60.0)--将度转为弧度
字符串函数作用于char、varchar、binary和varbinary数据类型以及可以隐式转换为char或varchar的数据类型。通常字符串函数可以用在SQL语句的表达式中。
常用的字符串函数及说明:
ASCII码共有127个,其中Microsoft Windows不支持1~7、11~12和14~31之间的字符。值8、9、10和13分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序而对文本显示有不同的影响。
SELECT ASCII('InLett')
SELECT CHARINDEX('e','InLett')
SELECT LEFT('INLETT',3)
SELECT RIGHT('INLETT',3)
SELECT LEN('INLETT')
SELECT REPLACE('INLETT','E','e')
SELECT REVERSE('INLETT')
SELECT STR(75)--将数字类型转为字符串类型
SELECT SUBSTRING('INLETT',2,2)
日期和时间函数主要用来操作datetime、smalldatetime类型的数据,日期和时间函数执行算术运行与其他函数一样,也可以在SQL语句的SELECT、WHERE子句以及表达式中使用。
常用的日期时间函数及说明:
DATEADD函数将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number参数的值必须为整数,而date参数的取值必须为有效日期。
语法如下:
DATEADD(datepart, number, date)
参数说明:
datepart:指定要与数值相加的日期部分的参数。
number:用于与datepart 相加的值。该值必须是分析表达式时已知的整数值。
date:返回有效日期或日期格式的字符串的表达式。
SELECT GETDATE()
SELECT DAY(GETDATE())
SELECT MONTH(GETDATE())
SELECT YEAR(GETDATE())
SELECT DATEADD(MONTH,-7,GETDATE())
SELECT DATEDIFF(MONTH,GETDATE(),DATEADD(DAY,100,GETDATE()))
当遇到类型转换的问题时,可以使用SQL Server所提供的CAST和CONVERT函数。这两种函数不但可以将指定的数据类型转换为另一种数据类型,还可用来获得各种特殊的数据格式。CAST和CONVERT函数都可用于选择列表、WHERE子句和允许使用表达式的任何地方。
在SQL Server中数据类型转换分为两种,分别如下:
隐性转换:SQL Server自动处理某些数据类型的转换。例如,如果比较char和datetime表达式、smallint和int表达式、或不同长度的char表达式,SQL Server可将它们自动转换,这种转换称为隐性转换,对这些转换不必使用CAST函数。
显式转换:显式转换是指CAST和CONVERT函数,CAST和CONVERT函数将数值从一种数据类型(局部变量、列或其他表达式)转换到另一种数据类型。
说明:
隐性转换对用户是不可见的,SQL Server自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个smallint 变量和一个int变量相比较,这个smallint变量在比较前即被隐性转换成int变量。
有关转换函数使用的几点说明如下:
CAST函数基于SQL-92标准并且优先于CONVERT。
当从一个SQL Server对象的数据类型向另一个数据类型转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar数值根本就不能被转换成image数值。nchar只能显式地转换成binary,隐性地转换到binary是不支持的。nchar可以显式地或者隐性地转换成nvarchar。
当处理sql_variant数据类型时,SQL Server支持将具有其他数据类型的对象隐性转换成sql_variant类型。然而,SQL Server并不支持从sql_variant数据类型隐性地转换到其他数据类型的对象。
CAST函数用于将某种数据类型的表达式显示转换为另一种数据类型。
语法如下:
CAST (expression AS data_type[(length)])
参数说明:
expression:表示任何有效的SQL Server表达式
AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。
data_type:表示目标系统所提供的数据类型,包括xml、bigint和sql_variant,不能使用别名数据类型。
length:指定目标数据类型长度的可选整数。默认值为30。.
使用CAST函数进行数据类型转换时,在下列情况下能够被接受。
两个表达式的数据类型完全相同。
两个表达式可隐性转换。
必须显式转换数据类型。
如果试图进行不可能的转换(例如,将含有字母的 char 表达式转换为 int 类型),SQL Server 显示一条错误信息。
如果转换时没有指定数据类型的长度,则SQL Server自动提供长度为30。
SELECT CAST('HELLO WORLD' AS NVARCHAR(5))
CONVERT函数与CAST函数的功能相似。该函数不是一个ANSI标准SQL函数,它可以按照指定的格式将数据转换为另一种数据类型。
语法如下:
CONVERT (data_type[ (length) ],expression [, style])
参数说明:
data_type表示目标系统所提供的数据类型,包括bigint和sql_variant。不能使用用户定义的数据类型。
length为nchar、nvarchar、char、varchar、binary和varbinary数据类型的可选参数。参数expression表示任何有效的SQL Server表达式。
style为日期样式,指定当将datetime数据转换为某种字符数据时或将某种字符数据转换为datetime数据时会使用style中的样式。style日期样式。
style日期样式:
SQL(Structured Query Language)是一种结构化查询语言,一般指标准数据库查询语言,它可以实现对数据以及关系数据库系统的管理,比如查询、更新,完成基本的数据库对象的定义、控制等功能,以及SQL语句的编写。T-SQL是SQL语言的扩展版本,是一种可以完成复杂逻辑的编程语言。T-SQL增加了流控制元素和各种功能函数,可以实现存储过程、触发器等的编写,让程式设计更加灵活。