SQL Server 2000中的SQL语言是Transact-SQL语言 。
Transact-SQL语言主要组成部分有一下几种:
1.数据定义语言(DDL,Data Definition Language)
2.数据操纵语言(DML,Data Manipularion Language)
3.数据控制语言(DCL,Data Control Language)
4.系统存储过程(System Stored Procedure)
5.一些附加的语言元素

数据定义语言(DDL)

数据定义语言是指用来定义和管理数据库以及数据库中的各种对象的语句,这些语句包括CREATE、ALTER和DROP等语句。在SQL Server 2000中,数据库对象包括表、视图、触发器、存储过程、规则、缺省、用户自定义的数据类型等。这些对象的创建、修改和删除等都可以通过使用 CREATE、ALTER、DROP等语句来完成。
创建数据库表的一个例子
CREATE TABLE publishers
(
pub_id char(4) NOT NULL
CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED
CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756')
OR pub_id LIKE '99[0-9][0-9]'),
pub_name varchar(40) NULL,
city varchar(20) NULL,
state char(2) NULL,
country varchar(30) NULL
DEFAULT('USA')
)
 
修改视图的一个例子
USE pubs
GO
ALTER VIEW yourview
AS
SELECT title, mycount= @@ ROWCOUNT, ytd_sales
FROM titles
WHERE type = 'mod_cook'
GO
SELECT *
FROM yourview
GO
 
删除触发器的一个例子
/*下面的例子将删除触发器employee_insupd。
*/
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'employee_insupd' AND type = 'TR')
DROP TRIGGER employee_insupd
GO
 
数据操纵语言(DML)
数据操纵语言是指用来查询、添加、修改和删除数据库中数据的语句,这些语句包括SELECT、INSERT、UPDATE、DELETE等。在默认 情况下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成员才有权利执行数据操纵语言。
1、SELECT语句
SELECT语句的语法形式如下:
SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
[COMPUTE clause]
[FOR BROWSE]
几种常用语句的用法:
SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。
INTO子句用于指定所要生成的新表的名称。
FROM子句用于指定要查询的表或者视图,最多可以指定16个表或者视图,用逗号相互隔开。
WHERE子句用来限定查询的范围和条件。
GROUP BY子句是分组查询子句。
HAVING子句用于指定分组子句的条件。
GROUP BY子句、HAVING子句和集合函数一起可以实现对每个组生成一行和一个汇总值。
ORDER BY子句可以根据一个列或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号。
ASC表示升序排列,DESC表示降序排列。
COMPUTE子句使用集合函数在查询的结果集中生成汇总行。
COMPUTE BY子句用于增加各列汇总行。
SELECT子句的语法形式如下所示:
SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ] [ WITH TIES ] ]< select_list >
< select_list > ::=
{* | { table_name | view_name | table_alias }.*| { column_name | expression | IDENTITYCOL | ROWGUIDCOL }[ [ AS ] column_alias ]| column_alias = expression}[ ,...n ]
显示居住在加利福尼亚州且姓名不为 McBadden 的作者列。
USE pubs
SELECT au_fname, au_lname, phone AS Telephone
FROM authors
WHERE state = 'CA' and au_lname <> 'McBadden'
ORDER BY au_lname ASC, au_fname ASC
使用两个相关子查询查找作者姓名,这些作者至少参与过一本受欢迎的计算机书籍的创作。
USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE au_id IN
(SELECT au_id
FROM titleauthor
WHERE title_id IN
(SELECT title_id
FROM titles
WHERE type = 'popular_comp'))
显示含有本年度截止到现在的当前销售额的行,然后按type以递减顺序计算书籍的平均价格和预付款总额
USE pubs
SELECT CAST(title AS char(20)) AS title, type, price, advance
FROM titles
WHERE ytd_sales IS NOT NULL
ORDER BY type DESC
COMPUTE AVG(price), SUM(advance) BY type
COMPUTE SUM(price), SUM(advance)
先删除表T1,然后又创建一个带有四个列的表T1。最后利用INSERT 语句插入一些数据行,这些行只有部分列包含值。
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'T1')
DROP TABLE T1
GO
CREATE TABLE T1
( column_1 int identity,
column_2 varchar(30)
CONSTRAINT default_name DEFAULT ('column default'),
column_3 int NULL,
column_4 varchar(40)
)
INSERT INTO T1 (column_4)
VALUES ('Explicit value')
INSERT INTO T1 (column_2,column_4)
VALUES ('Explicit value', 'Explicit value')
INSERT INTO T1 (column_2,column_3,column_4)
VALUES ('Explicit value',-44,'Explicit value')
SELECT *
FROM T1
一个简单的修改语句
UPDATE publishers
SET city = 'Atlanta', state = 'GA‘
一个带有WHERE条件的修改语句
UPDATE authors
SET state = 'PC', city = 'Bay City'
WHERE state = 'CA' AND city = 'Oakland'
通过 UPDATE 语句使用来自另一个表的信息,其修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新销售记录。
UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
数据控制语言(DCL)
 
数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只 有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。
1、GRANT语句
GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。
授予语句权限的语法形式为:
GRANT {ALL | statement[,...n]} TO security_account [ ,...n ]
授予对象权限的语法形式为:
GRANT { ALL [ PRIVILEGES ] | permission [ ,...n ] }{[ ( column [ ,...n ] ) ] ON { table | view }| ON { table | view } [ ( column [ ,...n ] ) ]| ON { stored_procedure | extended_procedure }| ON { user_defined_function } } TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ]
2、DENY语句
DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。否定语句权限的语法形式为:
DENY { ALL | statement [ ,...n ] } TO security_account [ ,...n ]
否定对象权限的语法形式为:
DENY { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,...n ] [ CASCADE ]
3 REVOKE语句
REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。
收回语句权限的语法形式为:
REVOKE { ALL | statement [ ,...n ] } FROM security_account [ ,...n ]
收回对象权限的语法形式为:
REVOKE [ GRANT OPTION FOR ] { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } { TO | FROM } security_account [ ,...n ] [ CASCADE ] [ AS { group | role } ]
系统存储过程
 
系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程 可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。
系统存储过程的部分示例如下:
sp_addtype:用于定义一个用户定义数据类型。
sp_configure:用于管理服务器配置选项设置。
xp_sendmail:用于发送电子邮件或寻呼信息。
sp_stored_procedures:用于返回当前数据库中的存储过程的清单。
sp_help:用于显示参数清单和其数据类型。
sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。
sp_helptext:用于显示存储过程的定义文本。
sp_rename:用于修改当前数据库中用户对象的名称。
其它语言元素
 
注释
注释是程序代码中不执行的文本字符串(也称为注解)。在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。
变量
变量是一种语言中必不可少的组成部分。Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。
局部变量
局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次 数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前 加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。
全局变量
全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。
使用全局变量时应该注意以下几点:
①全局变量不是由用户的程序定义的,它们是在服务器级定义的。
②用户只能使用预先定义的全局变量。
③引用全局变量时,必须以标记符“@@”开头。
④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。
运算符
运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进行比较。在SQL Server 2000中,运算符主要有以下六大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符以及字符串串联运算符
算术运算符
算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加(+)、减(—)、乘(*)、除(/)和取模(%)。
赋值运算符
Transact-SQL 中只有一个赋值运算符,即等号(=)。赋值运算符使我们能够将数据值指派给特定的对象。另外,还可以使用赋值运算符在列标题和为列定义值的表达式之间建立关系。
位运算符
位运算符使我们能够在整型数据或者二进制数据(p_w_picpath 数据类型除外)之间执行位操作。此外,在位运算符左右两侧的操作数不能同时是二进制数据。
比较运算符
比较运算符用于比较两个表达式的大小或是否相同,其比较的结果是布尔值,即TRUE(表示表达式的结果为真)、FALSE(表示表达式的结果为假)以及UNKNOWN。除了 text、ntext 或 p_w_picpath 数据类型的表达式外,比较运算符可以用于所有的表达式。
逻辑运算符
逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括AND、OR和NOT等运算符。逻辑运算符和比较运算符一样,返回带有 TRUE 或 FALSE 值的布尔数据类型。
字符串串联运算符
字符串串联运算符允许通过加号 (+) 进行字符串串联,这个加号即被称为字符串串联运算符。例如对于语句SELECT ‘abc’+’def’,其结果为abcdef。
运算符的优先等级从高到低如下所示
括号:();
乘、除、求模运算符:*、/、%;
加减运算符:+、- ;
比较运算符:=、>、<、>=、<=、<>、!=、!>、!<;
位运算符:^、&、|;
逻辑运算符:NOT;
逻辑运算符:AND;
逻辑运算符:OR。
函数
在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。Transact-SQL 编程语言提供了三种函数:
㈠行集函数:行集函数可以在Transact-SQL语句中当作表引用。
㈡聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。
㈢标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。
SQL Server中最常用的几种函数
 
字符串函数
字符串函数可以对二进制数据、字符串和表达式执行不同的运算,大多数字符串函数只能用于char和varchar数据类 型以及明确转换成char和varchar的数据类型,少数几个字符串函数也可以用于binary和varbinary数据类型。此外,某些字符串函数还 能够处理text、ntext、p_w_picpath数据类型的数据。
字符串函数的分类:
基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。
字符串查找函数:CHARINDEX、PATINDEX。
长度和分析函数:DATALENGTH、SUBSTRING、RIGHT。
转换函数:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。
日期和时间函数
日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。在SQL Server 2000中,日期和时间函数的类型如表2-5所示;另外,表2-6列出了日期类型的名称、缩写形式以及可接受的值。
数学函数
数学函数用于对数字表达式进行数学运算并返回运算结果。数学函数可以对SQL Server提供的数字数据(decimal、integer、float、real、money、smallmoney、smallint 和 tinyint)进行处理。
转换函数
一般情况下,SQL Server会自动处理某些数据类型的转换。例如,如果比较 char 和 datetime 表达式、smallint 和 int 表达式、或不同长度的 char 表达式,SQL Server 可以将它们自动转换,这种转换被称为隐性转换。但是,无法由SQL Server自动转换的或者是SQL Server自动转换的结果不符合预期结果的,就需要使用转换函数做显示转换。转换函数有两个:CONVERT和CAST。
系统函数
系统函数用于返回有关SQL Server系统、用户、数据库和数据库对象的信息。系统函数可以让用户在得到信息后,使用条件语句,根据返回的信息进行不同的操作。与其它函数一样,可以在SELECT语句的SELECT和WHERE子句以及表达式中使用系统函数。
聚合函数
聚合函数可以返回整个或者几个列或者一个列的汇总数据,它常用来计算SELECT语句查询的统计值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。
流程控制语句
流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。
IF…ELSE语句
IF…ELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。 IF…ELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQL Server允许嵌套使用IF…ELSE语句,而且嵌套层数没有限制。
IF…ELSE语句的语法形式
IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ]
BEGIN…END语句
BEGIN…END语句能够将多个Transact-SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGIN…END语句
BEGIN…END语句语法形式为:
BEGIN { sql_statement | statement_block } END
CASE函数
CASE函数可以计算多个条件式,并将其中一个符合条件的结果表达式返回。CASE函数按照使用形式的不同,可以分为简单CASE函数和搜索CASE函数。
CASE函数的语法形式
CASE input_expressionWHEN when_expression THEN result_expression [ ...n ][ELSE else_result_expressionEND
搜索 CASE函数的语法形式
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression END
WHILE…CONTINUE…BREAK语句
WHILE…CONTINUE…BREAK语句用于设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。其中,CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循 环的第一行命令。BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。
结束WHILE语句的语法形式为:
WHILE Boolean_expression { sql_statement | statement_block }[ BREAK ] { sql_statement | statement_block } [ CONTINUE ]
GOTO语句
GOTO语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于GOTO语句和标识符之间的程序将不会被执行。GOTO语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以“:”结尾。
GOTO语句的语法形式
GOTO label
……
label:
程序清单2-50:利用GOTO语句求出从1加到5的总和。
declare @sum int, @count int
select @sum=0, @count=1
label_1:
select @sum=@sum+@count
select @count=@count+1
if @count<=5
goto label_1
select @count @sum
WAITFOR语句
WAITFOR语句用于暂时停止执行SQL语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。
WAITFOR语句的语法形式为:
WAITFOR { DELAY 'time' | TIME 'time' }
其中,DELAY用于指定时间间隔,TIME用于指定某一时刻,其数据类型为datetime,格式为‘hh:mm:ss’。
RETURN语句
RETURN语句用于无条件地终止一个查询、存储过程或者批处理,此时位于RETURN语句之后的程序将不会被执行。
RETURN语句的语法形式为:
RETURN [ integer_expression ]
其中,参数integer_expression为返回的整型值。存储过程可以给调用过程或应用程序返回整型值。

转载于:https://blog.51cto.com/chenxing/44891

SQL SERVER2000中Transact-SQL语言详解相关推荐

  1. Sql server中时间函数用法详解

    SQL中的时间函数非常有用,特别是在我们进行初始赋值.复杂查询的时候,就显得特别方便. 1.获得系统当前时间 select getdate()  2.DateName ( datepart , dat ...

  2. SQL语句中EXISTS的使用详解及示例

    EXISTS怎么用? EXISTS和NOT EXISTS子句的返回值是一个BOOL值. EXISTS内部有一个子查询语句(SELECT - FROM-), 我将其称为EXIST的内查询语句.其内查询语 ...

  3. autocad中的diesel语言详解

    Diesel,Rudolf,1858-1913,德国工程师,所谓的DIESEL的发明者. "Dumb Interpretively Evaluated String Expression L ...

  4. mysql中groupby用法_详解SQL中GroupBy的用法

    GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. 1.概述 "Group By"从字面意义上理解就是根据"By"指定的规则对数据进行分 ...

  5. SQL Server 默认跟踪 -- 捕获事件详解

    SQL Server 默认跟踪 -- 捕获事件详解 哪些具体事件默认跟踪文件能够捕获到? --returns full list of events SELECT * FROM sys.trace_e ...

  6. 【深度好文】Flink SQL流批⼀体化技术详解(一)

    持续输出 敬请关注 大数据架构  湖仓一体化  流批一体 离线+实时数仓  各种大数据解决方案  各种大数据新技术实践 持续输出  敬请关注 [珍藏版]数仓平台.推荐系统架构选型及解决⽅案_大数据研习 ...

  7. c语言排序常用问题,【更新中】【排序详解】解决排序问题(以C语言为例)

    [更新中][排序详解]解决排序问题(以C语言为例) [更新中][排序详解]解决排序问题(以C语言为例) 文章目录 排序的相关概念 简单排序 一.插入排序: (一)插入排序基本思想 (二)插入排序基本操 ...

  8. SQL Server 2008 R2 安装过程详解

    SQL Server 是Microsoft 公司推出的关系型数据库管理系统.Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理.M ...

  9. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  10. java的匿名函数_JAVA语言中的匿名函数详解

    本文主要向大家介绍了JAVA语言中的匿名函数详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.使用匿名内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: ...

最新文章

  1. Ubuntu 14.04下 Redis MongoDB安装及使用
  2. 以后版本网卡命名规则
  3. ASP.NET Core自定义响应内容
  4. 使用Guava CharMatcher和Apache Commons Lang StringUtils确定字符串中字符或整数的存在
  5. vsftpd 源码安装 linux/redhat
  6. vdp备份oracle系统,VDP文件级恢复需要在用VDP备份的机器上浏览
  7. js开源框架最新版下载
  8. python读取二进制文件_python中读写二进制文件
  9. XML注释内容中不能出现“--”
  10. FastStone Capture屏幕长截图
  11. 计算机英语摘要,计算机专业英语摘要.ppt
  12. Linux网络管理之ss命令– 显示活动套接字信息
  13. 关于spring security的URL路径验证问题
  14. basic auth java_java发送带Basic Auth使用 httpclient自带的认证方式
  15. LeetCode两个爬楼梯题目解析(动态规划)
  16. house robbers
  17. 博友关于炒股理念的思考
  18. android七牛多张图片上传
  19. 产品开发中,TR是技术评审节点。
  20. 那些参加IT培训的人怎么样了?工作月薪都上万吗?

热门文章

  1. UIWebView控件的简易浏览器小案例
  2. 【值得学习】售前工程师的成长(四)---一个老员工的经验之谈
  3. docker部署php的性能,Docker 学习之部署php + nginx(一)
  4. jQuery Mobile入门必看
  5. 基础总结篇之七:ContentProvider之读写短消息
  6. Git学习系列(三)版本回退和管理文件的修改及删除操作
  7. CorePlot-曲线图
  8. 摄像头YUV2格式详解
  9. Android FrameWork——Binder机制详解(1)
  10. Sun 解决方案大会归来