Transact-SQL语法速查手册

Transact-SQL 语法速查手册
1.        命名规则:
l          第一个字母必须是 Unicode2.0 标准定义的字母、下划线、 at 符号( @ )和数字符号( # );
l          后续字符可以是 Unicode2.0 标准定义的字母、来自基本拉丁字母或其他国家 / 地区脚本的十进制数字、 at 符号( @ )、美元符号( $ )、数字符号( # )或下划线;
l          标识符不能是 Transact-SQL 的保留字;
l          不允许嵌入空格或其他特殊字符;
l          标识符长度不大于 128 字符,本地临时表标识符不大于 116 字符。
注: SQL Server2000 中,常规标识符的格式规则取决于数据库的兼容级别,兼容级别可以用系统存储过程 sp_dbcmptlevel 来设置。以上是兼容级别为 80 时的规则。
2.        特殊字符说明
以下字符位于标识符开始位置时具有特殊意义:
l          @ 符号开始的标识符表示局部变量或参数;
l          @@ 符号开始的标识符表示全局变量;
l          # 符号开始的标识符表示临时表或过程;
l          ## 符号开始的标识符表示全局临时对象;
l          -- 单行注释;
l          /*…*/ 多行注释。(多行注释不能跨越批处理)
1. 命名规则:
l          标识符长度不大于 128 字符(不包括分隔符字符),本地临时表标识符不大于 116 字符;
l          标识符的主体可以是包含当前代码页内字母 ( 分隔符本身除外 ) 的任意组合。
2. 分隔标识符类型:
l          被引用的标识符用双引号分隔开,例如 SELECT * FROM “My Table”
l          括在括号中的标识符用方括号分隔,例如 SELECT * FROM [My Table]
SQL Server2000 中,一个对象的全称语法格式为:
server.database.owner.object
其中, server 为服务器名, database 为数据库名, owner 为所有者, object 为对象名。默认情况下, server 为本地服务器, database 为当前数据库, owner 为在指定的数据库中与当前连接会话的登陆标识相对应的数据库用户或者数据库所有者。
1.        % 包含零个或更多字符的任意字符串
例如:查找姓名中包含有“华”字的所有学生
WHERE sname LIKE ‘% %’
2.        _ 任何单个字符
例如:查找姓王,名字包含 3 个字的学生
WHERE sname LIKE ‘ __’
3.        [] 指定范围或集合中的任何单个字符
例如:查找姓刘和姓王,名字包含 3 个字的学生
WHERE sname LIKE ‘[ , ]__’
4.        [^] 不属于指定范围或集合的任何单个字符
例如:查找除姓刘和姓王以外,名字包含 3 个字的学生其他学生
WHERE sname LIKE ‘[^ , ]__’
变量名称
说明
@@CONNECTIONS
返回自 SQL Server 本次启动以来,所接受的连接或试图连接的次数
@@CPU_BUSY
返回自 SQL Server 本次启动以来, CPU 工作的时间,单位为毫秒
@@CURSOR_ROWS
返回游标打开后,游标中的行数
@@DATEFIRST
返回 SET DATAFIRST 参数的当前值
@@DBTS
返回当前数据库的当前 timestamp 数据类型的值
@@ERROR
返回上次执行 SQL 语句产生的错误编号
@@FETCH_STATUS
返回 FETCH 语句游标的状态
@@IDENTITY
返回最新插入的 IDENTITY 列值
@@IDLE
返回自 SQL Server 本次启动以来, CPU 空闲的时间,单位为毫秒
@@IO_BUSY
返回自 SQL Server 本次启动以来, CPU 处理输入和输出操作的时间,单位为毫秒
@@LANGID
返回本地当前使用的语言标识符
@@LANGUAGE
返回当前使用的语言名称
@@LOCK_TIMEOUT
返回当前的锁定超时设置,单位为毫秒
@@MAX_CONNECTIONS
返回 SQL Server 允许同时连接的最大用户数目
@@MAX PRECISION
返回当前服务器设置的 decimal numeric 数据类型使用的精度
@@NESTLEVEL
返回当前存储过程的嵌套层数
@@OPTIONS
返回当前 SET 选项信息
@@PACK_RECEIVED
返回自 SQL Server 本次启动以来,通过网络读取的输入数据包数目
@@PACK_SENT
返回自 SQL Server 本次启动以来,通过网络发送的输出数据包数目
@@PACKET_ERRORS
返回自 SQL Server 本次启动以来, SQL Server 中出现的网络数据包的错误数据
@@PROCID
返回当前的存储过程标识符
@@REMSERVER
返回注册记录中显示的远程数据服务器名称
@@ROWCOUNT
返回上一个语句所处理的行数
@@SERVERNAME
返回运行 SQL Server 的本地服务器名称
@@SERVICENAME
返回 SQL Server 运行时注册键名称
@@SPID
返回服务器处理标识符
@@TEXTSIZE
返回当前 TESTSIZE 选项的设置值
@@TIMETICKS
返回一个计时单位的微秒数,操作系统的一个计时单位是 31.25 毫秒
@@TOTAL_ERRORS
返回自 SQL Server 本次启动以来,磁盘的读写错误次数
@@TOTAL_READ
返回自 SQL Server 本次启动以来,读磁盘的次数
@@TOTAL_WRITE
返回自 SQL Server 本次启动以来,写磁盘的次数
@@TRANCOUNT
返回当前连接的有效事务数
@@VERSION
返回当前 SQL Server 服务器的日期,版本和处理器类型
 
类别
数据类型
字节
取值范围
精度
整数型
bigint
8
 
 
int
4
 
 
smallint
2
 
 
tinyint
1
0~255
 
逻辑数值型
bit
 
1,0 NULL
 
小数数据型
decimal
 
 
 
numeric
 
 
 
货币型
money
8
 
4
smallmoney
4
 
4
近似数值型
float
4
 
7
real
8
 
15
字符型
char
1~8000
 
 
varchar
 
 
 
text
 
 
 
Unicode 字符型
nchar
1~8000
 
 
nvarchar
 
 
 
ntext
 
 
 
二进制数据
binary
1~8000
 
 
varbinary
1~8000
 
 
image
 
 
 
日期时间型
datetime
 
 
 
smalldatetime
 
 
 
其他类型
cursor
 
 
 
sal_variant
 
 
 
table
 
 
 
timestamp
 
 
 
uniqueidentifier
 
 
 
SQL Server 中的运算夫及其优先级如下所示(优先级由高到低)
l          + (正)、 - (负)、 ~ (按位取反)
l          * (乘)、 / (除)、 % (取模,及求余)
l          + (加)、 + (连接)、 - (减)
l          = > < >= <= <> != !< !>
l          ^ (位异或)、 & (位与)、 | (位或)
l          NOT
l          AND
l          ALL ANY BETWEEN IN LIKE OR SOME
l          = (赋值)
注:所有运算符均遵循左结合型,即同一表达式中若出现多个优先级相同的运算符时,将按从左到右的顺序对表达式进行求值
一、BEGIN…END
1. 【格式】
BEGIN
{
         sql 语句 | 语句块
}
END
2. 【示例】
BEGIN
         DECLARE @MyVar float
         SET @MyVar = 456.256
         BEGIN
                   PRINT CAST (@MyVar AS varchar(12))
         END
END
二、IF…ELSE
1. 【格式】
IF Boolean_expression
         {sql 语句 | 语句块 }
[ELSE
         {sql 语句 | 语句块 }]
2. 【示例】
USE School
IF (SELECT AVG(degree) FROM score WHERE cno=’3-105’)>80
BEGIN
                   PRINT ‘ 课程: 3-105’
                   PRINT ‘ 考试成绩还不错
END
ELSE
BEGIN
         PRINT ‘ 课程: 3-105’
         PRINT ‘ 考试成绩一般
         END
三、CASE
1. 【简单 CASE 格式】
CASE input_expression
WHEN when_expression THEN result_expression
[…n]
         [ELSE else_result_expression]
END
2. 【简单 CASE 示例】
USE School
GO
SELECT tname AS ‘ 姓名 ’,depart AS ‘ 单位 ’,
         CASE prof
                   WHEN ‘ 教授 ’ THEN ‘ 高级职称
                   WHEN ‘ 副教授 ’ THEN ‘ 高级职称
                   WHEN ‘ 讲师 ’ THEN ‘ 中级职称
                   WHEN ‘ 助教 ’ THEN ‘ 初级职称
         END AS ‘ 职称类型
FROM teacher
GO
3. 【搜索 CASE 格式】
CASE
WHEN Boolean_expression THEN result_expression
[…n]
         [ELSE else_result_expression]
END
4. 【搜索 CASE 示例】
USE School
GO
SELECT sno AS ‘ 学号 ’,cno AS ‘ 课程号 ’,
         CASE
                   WHEN degree>=90 THEN ‘A’
                   WHEN degree>=80 THEN ‘B’
                   WHEN degree>=70 THEN ‘C’
                   WHEN degree>=60 THEN ‘D’
                   WHEN degree<60 THEN ‘E’
         END AS ‘ 成绩
FROM score ORDER BY sno
GO
四、WHILE
1. 【格式】
WHILE Boolean_expression
{sql 语句 | 语句块 }
[BREAK]
{sql 语句 | 语句块 }
[CONTINUE]
2. 【示例】
DECLARE @s int,@i int
SET @i = 0
SET @s = 0
WHILE @i<=100
         BEGIN
                   SET @s = @s+@i
                   SET @i = @i+1
         END
PRINT ‘1+2+…+100=’+CAST(@s AS char(25))
五、GOTO
1. 【格式】
GOTO lable
2. 【示例】
DECLARE @avg float
USE School
If(SELECT COUNT(*) FROM score WHERE sno=’108’)=0
         GOTO label1
BEGIN
         PRINT ‘108 学号学生的平均成绩:
         SELECT @avg=AVG(degree) FROM score WHERE sno=’108’
         PRINT @avg
         RETURN
END
Label1:
         PRINT ‘108 学号的学生无成绩
六、RETURN
1. 【格式】
RETURN [integer_expression]
2. 【示例】
USE School
GO
CREATE PROC MyPro @no char(5)
AS RETURN(SELECT AVG(degree)FROM score WHERE sno=@no)
七、WAITFOR
1. 【格式】
WAITFOR {DELAY ‘time’ | TIME ‘time’}
2. 【示例】
BEGIN
         WAITFOR TIME ‘1:10:00’
         PRINT ‘ 现在是 1:10:00’
END
函数分类
函数
说明
聚合函数
COUNT
 
SUM
 
AVG
 
MIN
 
MAX
 
配置函数
 
 
游标函数
 
 
日期和时间函数
DAY
 
MONTH
 
YEAR
 
GETDATE
 
数学函数
 
 
元数据函数
 
 
行集函数
 
 
安全性函数
 
 
字符串函数
 
 
系统函数
 
 
系统统计函数
 
 
文本和图像函数
 
 
1. 【格式】
 
2. 【示例】
USE test
GO
CREATE FUNCTION CubicVolume
-- 输入参数
(@CubeLength decimal(4,1),@CubeWidth decimal(4,1),@CubeHeight decimal(4,1))
RETURNS decimal(12,3)   -- 返回立方体的体积
AS
         BEGIN
                  RETURN(@CubeLength*@CubeWidth*CubeHeight)
         END
GO


语句类型
语句
说明
数据查询语言 DQL
SELECT
从数据库表中检索数据和列
数据操作语言 DML
INSERT
向数据库表中添加新数据行
UPDATE
更新数据库表中的数据
DELETE
从数据库表中删除数据行
数据定义语言 DDL
CREATE DATABASE
创建数据库
ALTER DATABASE
修改数据库
DROP DATABASE
删除数据库
CREATE TABLE
创建数据库表
ALTER TABLE
修改数据库表结构
DROP TABLE
从数据库中删除表
CREATE VIEW
创建视图
ALTER VIEW
修改视图
DROP VIEW
从数据库中删除试图
CREATE INDEX
创建索引
DROP INDEX
删除索引
CREATE PROCEDURE
创建存储过程
DROP PROCEDURE
删除存储过程
CREATE TRIGGER
创建触发器
DROP TRIGGER
删除触发器
CREATE SCHEMA
添加模式
DROP SCHEMA
删除模式
CREATE DOMAIN
创建数据值域
ALTER DOMAIN
改变域定义
DROP DOMAIN
删除域
数据控制语言 DCL
CRANT
授予用户访问权限
DENY
拒绝用户访问
REVOKE
解除用户访问权限
事务控制
COMMIT
结束当前事务
ROLLBACK
终止当前事务
SET TRANSACTION
定义当前事务数据访问特征
程序化 SQL
DECLARE
为查询设定游标
EXPLAN
为查询描述数据访问计划
OPEN
检索查询结果打开一个游标
FETCH
检索一行查询结果
CLOSE
关闭游标
PREPARE
为动态执行准备 SQL 语句
EXECUTE
动态执行 SQL 语句
DESCRIBE
描述准备好的查询

一、SELECT
1. 【格式】
SELECT 列名表
[INTO 新表名 ]
FROM 表或视图名
[WHERE 查询限定条件 ]
[GROUP BY 分组表达式 ]
[HAVING 分组条件 ]
[ORDER BY 次序表达式 ]
2. 【示例】查询 score 表中至少有 5 名学生选修的并以 3 开头的课程号的平均分数。
SELECT cno,AVG(degree) AS ‘ 平均分
FROM score
WHERE cno LIKE ‘3%’
GROUP BY cno
HAVING COUNT(*)>5
注: SQL 的执行顺序是:
执行 WHERE 子句,从表中选取行;
GROUP BY 对选区的行进行分组;
执行聚合函数;
执行 HAVING 子句选区满足条件的分组( HAVING 子句聚合函数的作用域为每一分组)。
一、INSERT
1. 【格式】
INSERT INTO <table_name>
[(<column_name>[{,<column_name>}…])]
VALUES(<value>[{,<value>}…])
注:“ <> ”为必选项,“ [] ”为可选项,“ {} ”为可重复出现项。
2. 【示例】
INSERT INTO score
(sno,cno,score)
VALUES(1001,254,’95’)
二、UPDATE
1. 【格式】
UPDATE<table_name>
SET<set clause expression>[{,< set clause expression >}…]
[WHERE <search_condition>]
注:“ <> ”为必选项,“ [] ”为可选项,“ {} ”为可重复出现项。
2. 【示例】
UPDATE 商品信息
SET 产地 =
(SELECT 供应商所在城市
FROM 供应商信息
WHERE 供应商名称 =’ 南方电讯 ’),
备注 =’ 货亿到
WHERE 产地 =’ 上海市
三、DELETE
1. 【格式】
DELETE FROM<table_name>
[WHERE <search_condition>]
注:“ <> ”为必选项,“ [] ”为可选项,“ {} ”为可重复出现项。
2. 【示例】
DELETE FROM 业务员信息
WHERE 业务员姓名 LIKE ‘ __’
一、CREATE DATABASE
1. 【格式】
CREATE DATABASE database_name
[
[ON [filespec]]
[ LOG ON [filespec]]
]
filespec 定义为
([NAME=logical_file_name,]
FILENAME=’os_file_name’
[,SIZE=size]
[,MAXSIZE={max_size | UNLIMITED}]
[,FILEGROWTH=growth_increment])
2. 【示例】
CREATE DATABASE School
ON
(NAME= School,
FILENAME='d:/Program Files/Microsoft SQL Server/MSSQL/Data/ School_Data.mdf',
SIZE=50MB,
MAXSIZE=2000,
FILEGROWTH=20)
LOG ON
(NAME= School_Log,
FILENAME='d:/Program Files/Microsoft SQL Server/MSSQL/Data/ School_Log.ldf',
SIZE=50MB,
MAXSIZE=2000,
FILEGROWTH=20)
二、ALTER DATABASE
1. 【格式】
ALTER DATABASE database_name
{ ADD FILE filespec
| ADD LOG FILE filespec
| REMOVE FILE logical_file_name
| MODIFY FILE filespec
| MODIFY NAME=new_dbname
}
filespec 定义为
([NAME=logical_file_name,]
FILENAME=’os_file_name’
[,SIZE=size]
[,MAXSIZE={max_size | UNLIMITED}]
[,FILEGROWTH=growth_increment])
2. 【示例】
 
三、DROP DATABASE
1. 【格式】
DROP DATABASE database_name
2. 【示例】
DROP DATABASE School
四、CREATE TABLE
1. 【格式】
CREATE TABLE table_name
(
         column_name1 data_type [NULL | NOT NULL] [PRIMARY | UNIQUE][FOREIGN KEY [(column_name)]] REFERENCES ref_table [(ref_column)]
         [column_name2 data_type…]
         …
)
2. 【示例】
CREATE TABLE book (
         bid int NOT NULL PRIMARY KEY,
         bname char(8) NOT NULL,
         authorid int FOREIGN KEY REFERENCES authors(authorid)
)
五、ALTER TABLE
1. 【格式】
ALTER TABLE table_name
ADD [column_name data_type]
         [PRIMARY KEY | CONSTRAIN]
         [FOREIGN KEY (column_name)
         REFERENCES ref_table(ref_column)]
DROP [CONSTRAINT] constraint_name | COLUMN column_name
2. 【示例】
ALTER TABLE book ADD price int
六、DROP TABLE
1. 【格式】
DROP TABLE table_name
2. 【示例】
DROP TABLE book
七、CARETE VIEW
1. 【格式】
CREATE VIEW [database_name.][owner.]view_name [(column [,…n])]
[WITH view_attribute [,…n]]
AS
Select_statement
[WITH CHECK OPTION]
view_attribute 定义为:
{ENCRYPTION | SCHEMABINDING | VIEW_METADATA}
2. 【示例】
USE School
GO
CREATE VIEW st2_degree
AS
SELECT student.sname AS ‘ 姓名 ’,course.cname AS ‘ 课程 ’,score.degree AS ‘ 成绩
FROM student,course,score
WHERE student.sno=score.sno AND course.cno=score.cno
GO
八、ALTER VIEW
1. 【格式】
ALTER VIEW [database_name.][owner.]view_name [(column [,…n])]
[WITH view_attribute [,…n]]
AS
select_statement
[WITH CHECK OPTION]
view_attribute 定义为:
{ENCRYPTION | SCHEMABINDING | VIEW_METADATA}
2. 【示例】
ALTER VIEW 珠宝信息 _VIEW( 商品名称 , 单价 )
AS
SELECT 名称编号 , 单价
FROM 商品信息
WHERE 单价 >1000
九、DROP VIEW
1. 【格式】
DROP VIEW {view_name} [,…n]
2. 【示例】
USE test
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS _
                            WHERE TABLE_NAME=’View1’)
DROP VIEW View1
GO
十、CREATE INDEX
1. 【格式】
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_name
ON {table_name | ivew_name} (column [ASC | DESC][,…n])
[WITH index_option [,…n]]
[ON filegroup]
index_option 定义为
{ PAD_INDEX | FILLFACTOR=fillfactor | IGNORE_DUP_KEY | DROP_EXISTING | STATISTICS_NORECOMPUTE | SORT_IN_TEMPDB}
2. 【示例】
USE School
IF EXISTS(SELECT name FROM sysindexes WHERE name=’IDX_tno’)
         DROP INDEX teacher.IDX_tno
GO
USE School
CREATE INDEX IDX_tno ON teacher(tno)
GO
十一、DROP INDEX
1. 【格式】
DROP INDEX ‘table.index | view.index’ [,…n]
2. 【示例】
USE test
GO
DROP INDEX table1.Idx1
GO
十二、CREATE PROCEDURE
1. 【格式】
CREATE PROC[EDURE] procedure_name [; number]
[{@parameter data_type} [VARYING ][ = default][OUTPUT]]
[,…n]
[WITH
         {RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS sql_statement [,…n]
2. 【示例】
USE School
IF EXISTS(SELECT name FROM sysobjects WHERE name=’stud_degree’ AND type=’P’)
         DROP PROCEDURE stud_degree
GO
USE school
GO
CREATE PROCEDURE stud_degree
AS
         SELECT student.sno,student.sname,course.cname,score.degree
         FROM student,course,score
         WHERE student.sno=score.sno AND course.cno=score.cno
         ORDER BY student.sno
GO
十三、ALTER PROCEDURE
1. 【格式】
 
2. 【示例】
 
十四、DROP PROCEDURE
1. 【格式】
DROP PROCEDURE procedure_name
2. 【示例】
DROP PROCEDURE test_ret
十五、CREATE TRIGGER
1. 【格式】
CREATE TRIGGER trigger_name ON { table_name | view_name }
[WITH ENCRYPTION]
{
         { {FOR | AFTER | INSTEAD OF} {[INSERT] [,] [UPDATE] [,] [DELETE]}
                   [WITH APPEND]
                   [NOT FOR REPLICATION]
                   AS
                   [{IF UPDATE (column)
                            [{ AND | OR UPDATE (column)}
                                     […n]
                   | IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask)
                            {comparison_operator} column_bitmask […n]
                   }]
                  sql_statement […n]
         }
}
2. 【示例】
CREATE TRIGGER [Hotel_Department_Update] ON dbo.Hotel_Department
FOR INSERT, UPDATE
AS
IF NOT EXISTS (SELECT * FROM Hotel WHERE ItemID IN (SELECT ItemID FROM inserted))
         BEGIN
                   PRINT ' 更新数据库失败,所属记录不存在! '
                  ROLLBACK TRAN                 -- 撤消操作
         END
         RETURN
GO
十六、ALTER TRIGGER
1. 【格式】
ALTER TRIGGER trigger_name ON (table_name | view_name)
[WITH ENCRYPTION]
{
         {(FOR | AFTER | INSTEAD OF ) {[DELETE] [,] [INSERT] [,] [UPDATE]}
                   [NOT FOR REPLICATION]
                   AS
                  Sql_statement […n]
         }
         |
         {(FOR | AFTER | INSTEAD OF) {[INSERT] [,] [UPDATE] }
                   [NOT FOR REPLICATION]
                   AS
                   {IF UPDATE (column)
                   [{AND | OR} UPDATE (column)]
                   […n]
                   | IF (COLUMNS_UPDATED() {bitwise_operator}
                            updated_bitmask)
                  {comparison_operator} column_bitmask […n]
                   }
                  sql_statement […n]
         }
}
2. 【示例】
 
十七、DROP TRIGGER
1. 【格式】
DROP TRIGGER {trigger_name} [,…n]
2. 【示例】
DROP TRIGGER trig1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值