求SQL关键字和其语法(好的话,给100分)

要求,见解,有注释,完全,无误

1.数据定义语言(DDL)
数据定义语言是指用来定义和管理数据库以及数据库中的各种对象的语句,这些语句包括Create、Alter和Drop等语句。在SQL Server 2000中,数据库对象包括表、视图、触发器、存储过程、规则、缺省、用户自定义的数据类型等。这些对象的创建、修改和删除等都可以通过使用Create、Alter、Drop等语句来完成。

2.数据操纵语言(DML)
数据操纵语言是指用来查询、添加、修改和删除数据库中数据的语句,这些语句包括Select、Insert、Update、Delete等。在默认情况下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成员才有权利执行数据操纵语言。

3.数据控制语言(DCL)
数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。
DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

----------------------------------------------

4. 系统存储过程

系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。
sp_addtype:用于定义一个用户定义数据类型。
sp_configure:用于管理服务器配置选项设置。
xp_sendmail:用于发送电子邮件或寻呼信息。
sp_stored_procedures:用于返回当前数据库中的存储过程的清单。
sp_help:用于显示参数清单和其数据类型。
sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。
sp_helptext:用于显示存储过程的定义文本。
sp_rename:用于修改当前数据库中用户对象的名称
3.数据控制语言(DCL)
数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。
DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

----------------------------------------------

4. 系统存储过程

系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。
sp_addtype:用于定义一个用户定义数据类型。
sp_configure:用于管理服务器配置选项设置。
xp_sendmail:用于发送电子邮件或寻呼信息。
sp_stored_procedures:用于返回当前数据库中的存储过程的清单。
sp_help:用于显示参数清单和其数据类型。
sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。
sp_helptext:用于显示存储过程的定义文本。
sp_rename:用于修改当前数据库中用户对象的名称。
程序代码

1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改数据库的名称,由userdb1更改为userdb2

2.EXEC sp_rename 'user_log','用户登录表'
更改当前数据库表的名称,由user_log,改为'用户登录表'
EXEC sp_rename 'user_info.user_name', '用户名','column'
将user_info表的'user_name'列重命名为'用户名'

3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
从服务器分离数据库,并可以选择在分离前在所有的表上运行 Update STATISTICS。

4. 将数据库附加到服务器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 将只有一个数据文件的数据库附加到当前服务器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

----------------------------------------------

SQL中的注释
在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。

SQL中的变量

Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。

3.数据控制语言(DCL)
数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。
DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

----------------------------------------------

4. 系统存储过程

系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。
sp_addtype:用于定义一个用户定义数据类型。
sp_configure:用于管理服务器配置选项设置。
xp_sendmail:用于发送电子邮件或寻呼信息。
sp_stored_procedures:用于返回当前数据库中的存储过程的清单。
sp_help:用于显示参数清单和其数据类型。
sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。
sp_helptext:用于显示存储过程的定义文本。
sp_rename:用于修改当前数据库中用户对象的名称。
程序代码

1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改数据库的名称,由userdb1更改为userdb2

2.EXEC sp_rename 'user_log','用户登录表'
更改当前数据库表的名称,由user_log,改为'用户登录表'
EXEC sp_rename 'user_info.user_name', '用户名','column'
将user_info表的'user_name'列重命名为'用户名'

3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
从服务器分离数据库,并可以选择在分离前在所有的表上运行 Update STATISTICS。

4. 将数据库附加到服务器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 将只有一个数据文件的数据库附加到当前服务器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

----------------------------------------------

SQL中的注释
在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。

SQL中的变量

Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。

局部变量:局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。
全局变量:全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。

使用全局变量时应该注意以下几点:
①全局变量不是由用户的程序定义的,它们是在服务器级定义的。
②用户只能使用预先定义的全局变量。
③引用全局变量时,必须以标记符“@@”开头。
④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。

----------------------------------------------

SQL中的函数

在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。Transact-SQL 编程语言提供了三种函数:
一行集函数:行集函数可以在Transact-SQL语句中当作表引用。
二聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。
三标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。

1.字符串函数
字符串函数包括:
基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。
字符串查找函数:CHARINDEX、PATINDEX。
长度和分析函数:DATALENGTH、SUBSTRING、RIGHT。
转换函数:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。

基本字符串函数
UPPER:将小写字符数据转换为大写的字符
LOWER:将大写字符数据转换为小写的字符
SPACE:返回由重复的空格组成的字符串。如:space(2)则返回两个空格
REPLICATE:以指定的次数重复字符表达式。
语法:REPLICATE ( character_e­xpression , integer_e­xpression )
如:Select REPLICATE(au_fname, 2) FROM authors,则重复两遍每个作者的名字
STUFF:删除指定长度的字符并在指定的起始点插入另一组字符。
语法:STUFF ( character_e­xpression , start , length , character_e­xpression )
(start是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_e­xpression 长,则返回空字符串。
length是一个整数,指定要删除的字符数。如果 length 比第一个 character_e­xpression 长,则最多删除到最后一个 character_e­xpression 中的最后一个字符。)

3.数据控制语言(DCL)
数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。
DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

----------------------------------------------

4. 系统存储过程

系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。
sp_addtype:用于定义一个用户定义数据类型。
sp_configure:用于管理服务器配置选项设置。
xp_sendmail:用于发送电子邮件或寻呼信息。
sp_stored_procedures:用于返回当前数据库中的存储过程的清单。
sp_help:用于显示参数清单和其数据类型。
sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。
sp_helptext:用于显示存储过程的定义文本。
sp_rename:用于修改当前数据库中用户对象的名称。
程序代码

1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改数据库的名称,由userdb1更改为userdb2

2.EXEC sp_rename 'user_log','用户登录表'
更改当前数据库表的名称,由user_log,改为'用户登录表'
EXEC sp_rename 'user_info.user_name', '用户名','column'
将user_info表的'user_name'列重命名为'用户名'

3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
从服务器分离数据库,并可以选择在分离前在所有的表上运行 Update STATISTICS。

4. 将数据库附加到服务器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 将只有一个数据文件的数据库附加到当前服务器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

----------------------------------------------

SQL中的注释
在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。

SQL中的变量

Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。

局部变量:局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。
全局变量:全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。

使用全局变量时应该注意以下几点:
①全局变量不是由用户的程序定义的,它们是在服务器级定义的。
②用户只能使用预先定义的全局变量。
③引用全局变量时,必须以标记符“@@”开头。
④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。

----------------------------------------------

SQL中的函数

在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。Transact-SQL 编程语言提供了三种函数:
一行集函数:行集函数可以在Transact-SQL语句中当作表引用。
二聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。
三标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。

1.字符串函数
字符串函数包括:
基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。
字符串查找函数:CHARINDEX、PATINDEX。
长度和分析函数:DATALENGTH、SUBSTRING、RIGHT。
转换函数:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。

基本字符串函数
UPPER:将小写字符数据转换为大写的字符
LOWER:将大写字符数据转换为小写的字符
SPACE:返回由重复的空格组成的字符串。如:space(2)则返回两个空格
REPLICATE:以指定的次数重复字符表达式。
语法:REPLICATE ( character_e­xpression , integer_e­xpression )
如:Select REPLICATE(au_fname, 2) FROM authors,则重复两遍每个作者的名字
STUFF:删除指定长度的字符并在指定的起始点插入另一组字符。
语法:STUFF ( character_e­xpression , start , length , character_e­xpression )
(start是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_e­xpression 长,则返回空字符串。
length是一个整数,指定要删除的字符数。如果 length 比第一个 character_e­xpression 长,则最多删除到最后一个 character_e­xpression 中的最后一个字符。)

REVERSE:反转字符串Select REVERSE('abcd') 则返回‘dcba’

字符串查找函数
参考:http://www.badguy.name/article.asp?id=93

长度和分析函数
DATALENGTH :返回任何表达式所占用的字节数。
SUBSTRING:参考http://www.badguy.name/article.asp?id=105
LEFT:返回从字符串左边开始指定个数的字符。
RIGHT:返回从字符串左边开始指定个数的字符。Select RIGHT(au_fname, 5) FROM authors

2.日期和时间函数

datepart

示例:

3.数学函数
数学函数用于对数字表达式进行数学运算并返回运算结果。 常用的有:CEILING()、FLOOR()、ROUND()函数

4.转换函数
一般情况下,SQL Server会自动处理某些数据类型的转换。例如,如果比较 char 和 datetime 表达式、smallint 和 int 表达式、或不同长度的 char 表达式,SQL Server 可以将它们自动转换,这种转换被称为隐性转换。但是,无法由SQL Server自动转换的或者是SQL Server自动转换的结果不符合预期结果的,就需要使用转换函数做显示转换。转换函数有两个:CONVERT和CAST。

CAST ( e­xpression AS data_type )
CONVERT函数允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把日期转换成不同的样式。其语法形式为:
CONVERT (data_type[(length)],e­xpression [,style])
流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。

IF Boolean_e­xpression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]

BEGIN
{ sql_statement
| statement_block }
END

参考资料:http://www.badguy.name/article.asp?id=702

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-27
CharIndex 用来寻找一个指定的字符串在另一个字符串中的起始位置 Select charindex(‘accp’,’my accp course’,1) 返回:4
Len 返回传递给它的字符串长度 select
Upper/lower 把传递给它的字符串转换为大(小)写 Select Upper(‘sql server课程’) 返回:SQL SERVER课程
Rtrim/Ltrim 清除字符右(左)边的空格 Select Rtrim(‘ 周智宇 ’) 返回:周智宇 (前面的空格保)
Right/Left 从字符串右(左)边返回指定数目的字符 Select right(‘买卖提.吐尔松’,3) 返回:吐尔松
Replace 替换一个字符串中的字符 Select replace (‘莫乐可切.杨可’,’可’,’兰’)
返回:莫乐兰切.杨兰
Stuff 在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串 Select stuff(‘abcdefg’,2,3,’我的音乐我的世界’)
返回: a我的音乐我的世界efg

GetDate 取得当前的系统日期 Select getdate() 返回:今天的日期
DateAdd 将指定的数值添加到指定的日期部分后的日期 Select DateAdd(mm,4,’01/01/99’) 返回:05/01/99
DateDiff 两个日期之间的指定日期部分的区别 Select DateDiff(mm,’01/01/99’,’05/01/99’) 返回:4
DateName 日期中指定日期部分的字符串形式 Select DateName(dw,’01,01,2000’) 返回:星期六
DatePart 日期中指定日期部分的整数形式 Select DatePart(day,’01/15/2000’) 返回:15
Select DatePart(dw, ‘01/15/2000’) 返回:7(当周的第七天)
Select DatePart(wk,’ 01/15/2000’) 返回:3 (当年的第三周)

Abs 取数值表达式的绝对值 Select Abs(-43) 返回:43
Ceiling 取大于或等于指定数值、表达式的最小整数 Select ceiling(43.5) 返回:44
Floor 取小于或等于指定表达式的最大整数 Select Floor(43.5) 返回:43
Power 取数值表达式的幂值 Selcet Power(5,2) 返回:25
Round 将数值表达式四舍五入为指定精度 Select Round(43.543,1) 返回:43.5
Sign 对于正数返回+1,对于负数返回-1,对于0则返回0 Select Sign(-43) 返回:-1
Sqrt 取浮点表达式的平方根 Select Sqrt(9) 返回:3

把这些函数搞清楚就差不多了。。。。
第2个回答  2009-10-28
帮助文档