SQL Server重点知识快速入门

210 阅读1分钟

1.存储过程

提前编译,执行速度快 可多次调用,提高了程序的可移植性 在客户端调用时,只需要使用一个存储过程名及参数即可,减少网络流量 安全

创建存储过程

【例1】首先,在test数据库中创建一个名为procGetStudent的存储过程,用于查询stu_info表中的所有记录。

CREATE PROC procGetStudent 
AS 
SELECT * FROM stu_info 
GO 


/*  调用存储过程procGetStudent */
EXEC procGetStudent

【例2】在test数据库中创建一个名为procGetAvgMaxMin的存储过程,用于查询特定课程的考试成绩平均分、最高分和最低分。使用EXECUTE语句调用该存储过程查询“信息基础”的各项分数。

CREATE PROC procGetAvgMaxMin 
@course_name char(20) 
//@course_name char(20) =‘信息基础’默认值
AS 
SELECT AVG(exam) AS平均分, MAX(exam) AS最高分, MIN(exam) AS最低分 
FROM score AS s INNER JOIN course AS c ON s.cno=c.cno
WHERE c.cname=@course_name 
GO 

/* 调用存储过程procGetAvgMaxMin,查询“信息基础”的各项分数*/
EXEC procGetAvgMaxMin '信息基础'
“ALTER PROCEDURE”修改存储过程
“DROP PROCEDURE”删除存储过程

2.自定义函数

【例3】创建一个用户定义函数funcGetAge,功能为可以根据出生日期和当前日期计算年龄,并将年龄返回给调用语句。

CREATE FUNCTION funcGetAge 
(@birth_date datetime,@now_date datetime)
/*声明了两个变量,分别用于存放出生日期和当前日期*/ 
RETURNS int /*指定返回值类型为int型*/ 
AS 
BEGIN
//函数体为空
RETURN(DATEDIFF(year,@birth_date,@now_date)) 
/*返回计算结果*/
END

3.触发器

CREATE TRIGGER [schema_name.]trigger_name 
ON table_name 
AFTER {[INSERT],[UPDATE],[DELETE]}
[NOT FOR REPLICATION] 
AS {sql_statements}