分页的SQL语句
DECLARE @PAGEINDEX INT --定义变量索引页数
DECLARE @PAGESIZE INT--定义变量当前的页数
--在编写SQL的语句时,如果有查询先查询后分页
SELECT * FROM (
SELECT ROW_NUMBER() OVER(ORDER BY ID) AS NUM ,* FROM STUDENT) AS TEMP
WHERE TEMP.NUM BETWEEN ((@PAGEINDEX-1)*@PAGESIZE+1) AND (@PAGEINDEX*@PAGESIZE)
创建视图
CREATE VIEW V_STUDENT
AS
SELECT * FROM STUDENT
创建存储过程关键字(PROC/PROCEDURE)
1.无参查询
CREATE PROC/PROCEDURE P_SEARCH
AS
BEGIN
SELECT * FROM STUDENT
END
--调用存储过程的关键字(exec)
EXEC P_SEARCH
2.有参存储过程
CREATE PROC/PROCEDURE P_INSERT
@STUTYPEID INT,
@STUNAME NVARCHAR(20),
@STUSEX CHAR(4),
@STUCOUNT INT OUTPUT
AS
BEGIN
INSERT INTO STUDENT VALUES(@STUTYPEID,@STUNAME,@STUSE)
SELECT @STUCOUNT = COUNT(ID) FROM STUDENT
END
--封装BEGIN END之间的语句方便继续调用
--创建一个存储过程 输出一个新的创建的参数
创建/删除临时表的关键字是:(CREATE \DROP)
CREATE TABLE #名称
EG: CREATE TABLE #STUDENTLOG
DROP FROM #临时表
EG: DROP FROM #STUDENTLOG
事务的定义:(事务就是一个异常处理机制)
BEGIN TRAN --定义事务
BEGIN TRY
INSERT INTO STUDENT VALUSE(...)
END TRY
BEGIN CATCH
--异常处理机制 能够判断语法是否正确
END CATCH
IF(@@TRANCOUNT>0)
ROLLBACK TRAN
COMMIT TRAN
触发器的定义关键字(TRIGGER)
1.插入触发器
--创建触发器
CREATE TRIGGER T_INSERTSTU
ON STUDENT--基于的是那个表
AFTER INSERT --在添加后触发
AS
BEGIN
DECLARE @STUNAME NVARCHAR(50)--定义变量
DECLARE @STUAGE INT
SELECT @STUNAME=STUNAME,@STUAGE=STUAGE FROM INSERTED --定义的变量赋值来自于添加中的相应的字段
INSERT INTO STUDENTLOG VALUSE (0,'新增学生姓名'+@STUNAME+',年龄'+CONVERT(NVARCHAR(10),@STUAGE)+'岁'+GETDATE())--将相应的字段拼接
END
执行了添加语句触发T_INSERTSTU
2.删除触发器
–创建一个删除触发器
CREATE TRIGGER T_DELSTUDENT
ON STUDENT
AFTER DELETE
AS
BEGIN
DECLARE @ID INT
DECLARE @STUNAME NVARCHAR(20)
DECLARE @STUAGE INT
SELECT @ID = ID,@STUNAME=STUNAME,@STUAGE=STUAGE FROM DELETED
INSERT INTO STUDENTLOG VALUES(1,'删除了的学生的ID是:'+CONVERT(nvarchar (10),@ID)+',姓名是:'+@STUNAME+',年龄是:'+CONVERT(nvarchar (10),@STUAGE),GETDATE())
END
DELETE FROM STUDENT WHERE ID=
3.修改触发器
--创建一个修改的触发器
CREATE TRIGGER T_UPTSTUDENT
ON STUDENT
AFTER UPDATE
AS
BEGIN
DECLARE @STUNAMEU NVARCHAR(20)--修改之后的姓名
DECLARE @STUAGEU INT --修改之后的年龄
DECLARE @STUNAMEA NVARCHAR(20)--修改之前的姓名
DECLARE @STUAGEA INT --修改之前的年龄
SELECT @STUNAMEA = STUNAME ,@STUAGEA = STUAGE FROM DELETED
SELECT @STUNAMEU =STUNAME ,@STUAGEU = STUAGE FROM INSERTED
INSERT INTO STUDENTLOG VALUSE(1,,'修改前的姓名是:'+@STUNameA+'修改后的姓名是:'+@STUNameU,GETDATE())
END
--修改之后触发
update Student set stuName='' where ID=1
在使用SELECT INTO 新表 FROM 旧表 时,新表可以不必存在 系统会自动生成一个表
创建标量函数需要主要点:
CREATE FUNCTION F_NAME(@ID INT)--括号里面是参数和参数的类型
RETURN 具体的类型 --返回的类型
AS
BEGIN
DECLARE @SQLNAME NVARCHAR(30)
SELETE @SQLNAME(STUNAME+STUSEX) FROM STUDENT WHERE ID =@ID
RETURN @STUNAME
END
调用函数需要加上dbo.
SELECT DBO.F_NAME(ID) DBO.STUDENT--结构
SELECT * FROM DBO.STUDENT
第一种方式新建表值函数
CREATE FUNCTION F_TABLENAME()
RETURN TABLE
AS
RETURN (SELEDCT * FROM STUDENT)
第二种方式新建表值函数
create function f_table(@ name nvarchar(20))
return @tb table(name nvarchar(50),adress nvarchar(50))
as
begin
insert into @tb select '张国忠','河北石家庄';
return
end
select * from dbo.f_table
--测试调用
select * from dbo.f_table('')