zoukankan      html  css  js  c++  java
  • SqlTest(2013-07-10)

    USE WSS_Content 
    SELECT * FROM dbo.utTable32 WHERE DB0461A IN (SELECT DB0461A FROM dbo.utTable32 WHERE ID IN('1','2','2'))
    ---Row_NUMBER() OVER()
    SELECT ROW_NUMBER()OVER(ORDER BY ID)AS RowNum,* FROM dbo.utTable32 ---按照id升序排序,并编号。
    SELECT ROW_NUMBER()OVER(ORDER BY DB0461A)AS RowNum,* FROM dbo.utTable32 --按照车牌号升序排序并编号。
    SELECT ROW_NUMBER()OVER(PARTITION by DB0461A ORDER BY DB0461A)AS RowNum,* FROM dbo.utTable32 --按照车牌号升序排序并编号。
    --SELECT ROW_NUMBER()OVER(ORDER BY ID RANGE BETWEEN 2 preceding AND 2 preceding)AS RowNum,* FROM dbo.utTable32
    --SELECT DB0461A,DB0923A,SUM(DB0923A)OVER(order by id) AS SS FROM dbo.utTable32
    SELECT * FROM dbo.utTable32 WHERE DB0461A LIKE '豫ca%2'
    SELECT COUNT(*),DB0461A  FROM dbo.utTable32 WHERE ID>90 GROUP BY DB0461A
    SELECT COUNT(*),DB0461A  FROM dbo.utTable32 GROUP BY DB0461A HAVING ID>90
    
    SELECT * FROM dbo.utTable23 T23,dbo .utTable24 T24 WHERE T23 .DB0835A =T24 .DB0835A ;
    SELECT CAST(DB0835A as nvarchar(30))+CAST(DB0836A AS NVARCHAR(30)) FROM dbo.utTable23 
    SELECT SUBSTRING(DB0835A,8,LEN(DB0835A)-7) FROM dbo.utTable23 
    --======================游标==========================================================
    
    
    --定义游标
    DECLARE UT32_CURSOR CURSOR FOR 
    SELECT ID,DB0002A FROM DBO.UTTABLE32
    --打开游标
    OPEN UT32_CURSOR
    --定义变量
    DECLARE @ID INT
    DECLARE @NAME NVARCHAR(40)
    DECLARE @CLASSid int
    SELECT @CLASSid =1
    --循环移动游标
    FETCH NEXT FROM UT32_CURSOR INTO @ID,@NAME 
    WHILE(@@FETCH_STATUS=0)
    BEGIN
    IF @CLASSid =12
    BEGIN 
    SELECT @CLASSid =1
    END
    SELECT @CLASSid=@CLASSid +1
    INSERT INTO dbo.StuTable(ID,StuName,ClassId)VALUES(@ID,@NAME,@CLASSid)
    FETCH NEXT FROM UT32_CURSOR INTO @ID,@NAME 
    END
    --关闭游标
    CLOSE UT32_CURSOR
    DEALLOCATE UT32_CURSOR
    ------------------------------
    --随机查询
    SELECT * FROM dbo.utTable32 ORDER BY NEWID()
    select cast( floor(rand(20)*100) as int) 
    SELECT RAND(100)*100,RAND(),RAND()
    
    ------------------------------
    DECLARE StuTable_CURSOR CURSOR FOR 
    SELECT ID FROM StuTable
    DECLARE @Age INT
    DECLARE @UpId INT
    SELECT @Age =0
    OPEN StuTable_CURSOR
    FETCH NEXT FROM StuTable_CURSOR INTO @UpId
    WHILE(@@FETCH_STATUS =0)
    BEGIN
        SELECT @Age=CAST(FLOOR(RAND()*50) AS INT)
        WHILE(@Age <20)
        BEGIN
          SELECT @Age=CAST(FLOOR(RAND()*50) AS INT)
        END
        UPDATE StuTable SET StuAge=CAST(@Age AS NVARCHAR(20)) WHERE ID =@UpId
        FETCH NEXT FROM StuTable_CURSOR INTO @UpId
    END
    CLOSE StuTable_CURSOR
    DEALLOCATE StuTable_CURSOR
    -------------------------------
    CREATE TABLE #ObjList(ObjName nvarchar(20) not null)
    INSERT INTO #ObjList VALUES ('语文')
    INSERT INTO #ObjList VALUES ('数学')
    INSERT INTO #ObjList VALUES ('英语')
    INSERT INTO #ObjList VALUES ('化学')
    INSERT INTO #ObjList VALUES ('物理')
    INSERT INTO #ObjList VALUES ('生物')
    
    DECLARE STUTB_CURSOR CURSOR FOR 
    SELECT ID FROM StuTable
    
    DECLARE Obj_CURSOR CURSOR SCROLL FOR
    SELECT ObjName FROM #ObjList
    
    DECLARE @StuId int
    DECLARE @ObjName nvarchar(20)
    DECLARE @SID int
    DECLARE @Score int 
    SELECT @SID =0
    SELECT @Score =1
    
    
    OPEN STUTB_CURSOR
    OPEN Obj_CURSOR
    
    FETCH NEXT FROM STUTB_CURSOR INTO @StuId
    WHILE(@@FETCH_STATUS =0)
    BEGIN
      FETCH NEXT FROM Obj_CURSOR INTO @ObjName
      IF(@@FETCH_STATUS =-1)
      BEGIN 
       FETCH FIRST FROM Obj_CURSOR INTO @ObjName
       --FETCH NEXT FROM Obj_CURSOR INTO @ObjName
      END
      WHILE(@@FETCH_STATUS =0)
      BEGIN
        SELECT @Score =CAST(FLOOR(RAND()*100) AS INT)+1
        SELECT @SID=@SID+1
        INSERT INTO ScoreTable (ID,ObjectName,Score,StuId) 
             VALUES (@SID,@ObjName,@Score,@StuId)
        FETCH NEXT FROM Obj_CURSOR INTO @ObjName
      END
      FETCH NEXT FROM STUTB_CURSOR INTO @StuId
    END
    CLOSE STUTB_CURSOR
    CLOSE Obj_CURSOR
    DEALLOCATE STUTB_CURSOR
    DEALLOCATE Obj_CURSOR
    ----------------------------------
    DELETE FROM ScoreTable WHERE 1=1
    ----------------------------------
    ---统计每个班级的人数
    SELECT C.ClassName,COUNT(*) AS COUT FROM ClassTable C LEFT JOIN StuTable S ON C.ID =S.ClassId GROUP BY C.ClassName
    SELECT COUNT(*) AS COUT FROM ClassTable C LEFT JOIN StuTable S ON C.ID =S.ClassId WHERE C.ClassName ='2.2班'
    ----------------------------------
    DECLARE UP_CURSOR CURSOR FOR
    SELECT C.ClassName,COUNT(*) AS COUT 
    FROM ClassTable C LEFT JOIN StuTable S 
    ON C.ID =S.ClassId 
    GROUP BY C.ClassName
    DECLARE @Class nvarchar(20)
    DECLARE @Count INT
    OPEN UP_CURSOR
    FETCH NEXT FROM UP_CURSOR INTO @Class,@Count
    WHILE(@@FETCH_STATUS =0)
    BEGIN
     UPDATE dbo.ClassTable SET StuCount =@Count WHERE ClassName =@Class 
     FETCH NEXT FROM UP_CURSOR INTO @Class,@Count
    END
    CLOSE UP_CURSOR
    DEALLOCATE UP_CURSOR
    -----------------------------------
    --统计每个学生各科目成绩和总分
    CREATE TABLE #STUSCORE
    (
      ID INT,
      HX INT,
      SW INT,
      SX INT,
      WL INT,
      YY INT,
      YW INT
    )
    ALTER TABLE #STUSCORE ADD ZF INT
    USE WSS_Content 
    DECLARE STC_CURSOR CURSOR FOR
    SELECT ID FROM WSS_Content.dbo.StuTable --FOR --read only --WHERE ID BETWEEN 1 AND 200
    
    DECLARE @StudId int
    OPEN STC_CURSOR
    FETCH NEXT FROM STC_CURSOR INTO @StudId
    WHILE(@@FETCH_STATUS =0)
    BEGIN
      DECLARE SOC_CURSOR CURSOR SCROLL FOR
      SELECT ObjectName,Score,StuId FROM WSS_Content.dbo.ScoreTable WHERE StuId=@StudId ORDER BY ObjectName
      DECLARE @HX INT
      DECLARE @SW INT
      DECLARE @SX INT
      DECLARE @WL INT
      DECLARE @YY INT
      DECLARE @YW INT
      DECLARE @KSFS INT
      DECLARE @CODE INT
      DECLARE @KMLX NVARCHAR(20)
      DECLARE @IDD INT
      DECLARE @ZF INT
      OPEN SOC_CURSOR
      FETCH NEXT FROM SOC_CURSOR INTO @KMLX,@KSFS,@IDD
      IF @@FETCH_STATUS =-1
      BEGIN 
        FETCH FIRST FROM SOC_CURSOR INTO @KMLX,@KSFS,@IDD
      END
      WHILE(@@FETCH_STATUS =0)
      BEGIN
         IF(@KMLX='语文')BEGIN SELECT @YW=@KSFS END
         IF(@KMLX='数学')BEGIN SELECT @SX=@KSFS END
         IF(@KMLX='英语')BEGIN SELECT @YY=@KSFS END
         IF(@KMLX='物理')BEGIN SELECT @WL=@KSFS END
         IF(@KMLX='化学')BEGIN SELECT @HX=@KSFS END
         IF(@KMLX='生物')BEGIN SELECT @SW=@KSFS END
         FETCH NEXT FROM SOC_CURSOR INTO @KMLX,@KSFS,@IDD
      END
      SELECT @ZF =0
      SELECT @ZF=@YW+@SX+@YY+@WL+@HX+@SW
      INSERT INTO #STUSCORE VALUES (@IDD,@HX,@SW,@SX,@WL,@YY,@YW,@ZF)
      CLOSE SOC_CURSOR
      DEALLOCATE SOC_CURSOR
      FETCH NEXT FROM STC_CURSOR INTO @StudId
    END
    CLOSE STC_CURSOR
    DEALLOCATE STC_CURSOR
    -----------------------------------
    DELETE FROM #STUSCORE WHERE 1=1
    SELECT * FROM #STUSCORE 
    SELECT A.ID,B.StuName AS 姓名 ,A.YW AS 语文,A.SX AS 数学,A.YY AS 英语,A.WL AS 物理,A.HX AS 化学,A.SW AS 生物,A.ZF AS 总分 FROM #STUSCORE A JOIN StuTable B ON A.ID =B.ID ORDER BY A.ZF DESC
    SELECT * FROM ScoreTable 
    -----------------------------------
    DECLARE STUCUR Insensitive SCROLL CURSOR 
    FOR SELECT ID FROM StuTable
    DECLARE @AID INT
    OPEN STUCUR
    FETCH NEXT FROM STUCUR INTO @AID
    DELETE FROM StuTable WHERE ID=@AID
    FETCH FIRST FROM STUCUR INTO @AID
    PRINT @AID
    CLOSE STUCUR
    DEALLOCATE STUCUR
    SELECT * FROM StuTable 
    -----------------------------------
    DECLARE SSTUCUR CURSOR SCROLL
    FOR SELECT StuName FROM StuTable
    DECLARE @StuNam NVARCHAR(10)
    OPEN SSTUCUR
    FETCH ABSOLUTE 1 3 FROM SSTUCUR INTO @StuNam
    PRINT @StuNam
    CLOSE SSTUCUR
    DEALLOCATE SSTUCUR
    
    SELECT * FROM StuTable 
    ------------------------------------
    DECLARE SSTUCUR1 CURSOR 
    FOR SELECT StuName FROM StuTable
    FOR UPDATE OF StuName
    OPEN SSTUCUR1
    FETCH NEXT FROM SSTUCUR1
    UPDATE StuTable SET StuName='褚强强' WHERE CURRENT OF SSTUCUR1 
    CLOSE SSTUCUR1
    DEALLOCATE SSTUCUR1
    
    DECLARE @PRI nvarchar(10)
    FETCH NEXT FROM SSTUCUR1 INTO @PRI
    --===========================================================
    DECLARE @STUDENT NVARCHAR(20)
    SELECT TOP 200 @STUDENT=StuName FROM StuTable --WHERE
    PRINT @STUDENT
    --=========================全局变量=================================
    SELECT @@IDENTITY
    SELECT * INTO TABLE1 FROM StuTable 
    select @@datefirst as '星期的第一天', datepart(dw, getDate()) AS '今天是星期';
    select @@datefirst as '星期的第一天', datepart(MM, getDate()) AS '月份';
    select @@dbts;--返回当前数据库唯一时间戳
    
    --===========================逻辑控制语句=============================
    IF 0>0
      SELECT '90'
    ELSE IF 1=2
      SELECT '120'
    ELSE
      SELECT '110'
    ----------------------------------
    PRINT '等三秒。。。。'
    waitfor delay '00:00:10';--定时三秒后执行
    SELECT * FROM StuTable 
    ----------------------------------
    declare @i int;    
    set @i = 1;
    while (@i < 11)    
    begin                        
      if (@i < 5)            
      begin                
        set @i = @i + 1;     
        continue;                   
      end      
      print @i;       
      set @i = @i + 1;                   
    end
    ----------------------------------
    ----按分数划分等级A B C D
    SELECT *,
         '等级'=CASE 
                  WHEN SCORE >= 90 THEN 'A'
                  WHEN 75<SCORE AND Score < 90 THEN 'B'
                  WHEN 60<=Score AND Score<= 75 THEN 'C'
                  WHEN SCORE<60 THEN 'D'
                 END
    FROM ScoreTable 
    ----------------------------------
    --===================常量、变量==================================================
    DECLARE @CONSTANT NVARCHAR(10)
    SET @CONSTANT=N'120'--ASCII字符常量
    SELECT @CONSTANT 
    SET @CONSTANT ='120'--UNICODE字符常量
    SELECT @CONSTANT 
    SET @CONSTANT ='123.'''
    SELECT @CONSTANT 
    ----------------------------------
    DECLARE @CONST NVARCHAR(10)
    DECLARE @INT INT 
    DECLARE @DATE DateTime
    SELECT @CONST,@INT,@DATE--常量、变量的默认值为null
    --用户不能建立全局变量,也不能用SET语句改变全局变量的值。
    
    -----------全局变量---------------
    SELECT @@VERSION AS 'SQL SERVER 版本',
           @@LANGUAGE AS '当前使用语言',
           @@MAX_CONNECTIONS AS '同时连接最大数目',
           @@ROWCOUNT AS '受上个sql命令影响的行数',
           @@SERVERNAME AS '服务器名称',
           @@TIMETICKS AS '当前计算机上每刻度的微秒数',
           @@TRANCOUNT AS '当前连接打开的事务数'
    ----------------------------------
    SELECT MAX(StuAge) FROM StuTable Group By StuAge 
    SELECT StuAge FROM StuTable Group By StuAge 
    --=============================日期函数=================================================
    --------------------------------
    DECLARE @TESTDATE DateTime
    SET @TESTDATE ='2013.1.1'
    SELECT DATEADD (DY,100,@TESTDATE),DATEADD(DD,100,@TESTDATE)
    ---------------------------------
    DECLARE @DATEDIFF1 DateTime
    DECLARE @DATEDIFF2 DateTime
    SET @DATEDIFF1 ='2013.03.10 10:23:23:23'
    SET @DATEDIFF2 ='2014.03.12 10:23:23:23'
    SELECT DATEDIFF(DD,@DATEDIFF1 ,@DATEDIFF2)
    ---------------------------------
    DECLARE @DATENAME DateTime
    SET @DATENAME ='2013.05.06 23:10:10'
    SELECT DATENAME(YY,@DATENAME) AS 年,DATENAME(MM,@DATENAME) AS 月,DATENAME(DD,@DATENAME) AS 天,
           DATENAME(WK,@DATENAME) AS 周,DATENAME(HH,@DATENAME) AS 时,DATENAME(MI ,@DATENAME) AS---------------------------------
    SELECT GETUTCDATE()--世界标准时间
    --===============================字符函数================================================
    DECLARE @SringTest char(10)
    SET @SringTest =ASCII('322')
    SELECT @SringTest
    DECLARE @Sring nvarchar(10)
    SET @Sring =ASCII('123')
    SELECT @Sring 
    SELECT CHAR(50)
    
    SELECT LEFT('ASDFGE',4)
    SELECT RIGHT('QWEERYU',2)
    SELECT LTRIM('   21455.')
    --SELECT 'A'+23
    SELECT 'A'+LTRIM(STR(23))
    SELECT 'A'+'23'
    SELECT LEN(STR(100)),LEN(LTRIM(STR(100)))
    
    SELECT StuName,ISNULL(StuAge,0) FROM StuTable WHERE StuAge is null
    SELECT StuName,ISNULL(StuAge,0) FROM StuTable WHERE ISNULL(StuAge,0)=0
    SELECT StuName FROM StuTable WHERE ISNULL(StuAge,0)=0
    SELECT REPLACE('231231200','2','X')
    SELECT REPLICATE('2',9)
    SELECT REVERSE('abcdefg')
    --================================运算符===============================================
    SELECT ~14,23%12
    SELECT * FROM StuTable WHERE StuAge !>30
    SELECT * FROM StuTable WHERE StuAge <=30
    SELECT * FROM StuTable WHERE 30<StuAge
    SELECT ID,StuAge,StuAge & ID FROM StuTable  --位运算
    
    DECLARE @J INT 
    SELECT @J=8
    WHILE(@J<18)
    BEGIN
     WHILE(@J<11)
     BEGIN
      IF @J=8
      BEGIN 
       CONTINUE
      END
      PRINT 'AB'
      SELECT @J=@J +1
     END
     PRINT 'SD'
      SELECT @J=@J +1
    END 
    
    SELECT * FROM ClassTable 
    --WAITFOR TIME '13:39:50'
    SELECT * FROM StuTable 
    --==================================自定义函数=========================================
    ---------------------------标量型函数
    --USE WSS_Content
    --GO
    --ALTER FUNCTION MYCOUNTER(@A INT,@B INT,@COUNTYPE NVARCHAR(3))
    --RETURNS INT
    --AS
    --BEGIN
    --  DECLARE @RESULT INT 
    --  SET @RESULT=CASE WHEN @COUNTYPE='+' THEN @A+@B
    --                   WHEN @COUNTYPE='-' THEN @A-@B
    --                   WHEN @COUNTYPE='*' THEN @A*@B
    --                   WHEN @COUNTYPE='/' THEN @A/@B
    --              END
    --  return (@RESULT)
    --END
    SELECT dbo.MYCOUNTER(1,2,'+'),dbo.MYCOUNTER(1,2,'*'),dbo.MYCOUNTER(1000,4,'/')
    ---------------------------内嵌表值函数
    --USE WSS_Content 
    --GO
    --CREATE FUNCTION MYTABLEFUNC(@WHERE NVARCHAR(10))
    --RETURNS TABLE
    --AS 
    --RETURN (SELECT * FROM StuTable WHER
    --------------------------多语句表值函数
    --===================================方法==============================================
    --E StuName=@Where)
    SELECT * FROM StuTable 
    SELECT stuName from MYTABLEFUNC('徐俊强')
    --=====================================游标=============================================
    DECLARE STUCURR CURSOR 
    FOR SELECT StuName FROM StuTable
    DECLARE @NAM nvarchar(10)
    OPEN STUCURR
    FETCH NEXT FROM STUCURR INTO @NAM
    WHILE(@@FETCH_STATUS=0)
    BEGIN
     PRINT @NAM 
     FETCH NEXT FROM STUCURR INTO @NAM
    END
    CLOSE STUCURR
    DEALLOCATE STUCURR
    --=====================================事物=========================================
    BEGIN TRANSACTION TRANS
    GO
    UPDATE StuTable
    SET StuName='贾政09'
    WHERE ID='18'
    GO
    SAVE TRANSACTION CHANGE
    UPDATE StuTable 
    SET StuName='李琦09'
    WHERE ID='19'
    GO 
    ROLLBACK TRANSACTION TRANS
    PRINT  'PROGRAM GO ON'
    --COMMIT TRANSACTION 
    
    SELECT * FROM StuTable 
    --=============================存储过程==============================================
    ---------------系统存储过程----------------
    exec sp_databases; --查看数据库
    exec sp_tables;        --查看表
    exec sp_columns student;--查看列
    exec sp_helpIndex student;--查看索引
    exec sp_helpConstraint student;--约束
    exec sp_stored_procedures;
    exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
    exec sp_rename student, stuInfo;--修改表、索引、列的名称
    exec sp_renamedb myTempDB, myDB;--更改数据库名称
    exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
    exec sp_helpdb;--数据库帮助,查询数据库信息
    exec sp_helpdb master;
    ----------------自定义存储过程--------------------------
    IF(EXISTS(SELECT * FROM sys.objects WHERE name='proc_getStuTable'))
       DROP PROC proc_getStuTable
    GO
    CREATE PROC proc_getStuTable
    AS
      SELECT * FROM StuTable
    
    EXEC proc_getStuTable
    ----------------带参数存储过程--------------------------
    IF(OBJECT_ID('PROC_STU','P') IS NOT NULL)
       DROP PROC PROC_STU
    GO
    CREATE PROC PROC_STU(@StuName nvarchar(20))
    AS
        SELECT * FROM StuTable WHERE (@StuName='' OR StuName=@StuName )
    GO
    EXEC PROC_STU '赵春玉'
    SELECT * FROM StuTable
    ----------------带通配符参数存储过程-------------------
    IF(OBJECT_ID('PROC_STU1','P') IS NOT NULL)
       DROP PROC PROC_STU1
    GO
    CREATE PROC PROC_STU1(@LikeName nvarchar(10))
    AS 
      SELECT * FROM StuTable WHERE StuName LIKE @LikeName
    GO
    EXEC PROC_STU1 '%春'
    ----------------带输出参数存储过程---------------------
    
    IF(OBJECT_ID('PROC_STU2','P')) IS NOT NULL
       DROP PROC PROC_STU2 
    GO
    CREATE PROC PROC_STU2(@id nvarchar(10),@StuName nvarchar(20) output,@StuAge nvarchar(20) out)
    with encryption
    AS 
      SELECT @StuName=StuName,@StuAge =StuAge FROM StuTable WHERE (@id='' OR ID=@id) 
                                                                   AND (@StuName ='' OR StuName=@StuName) 
    
    DECLARE @STU_NAME NVARCHAR(20)
    DECLARE @STU_AGE INT
    SET @STU_NAME ='赵春玉'
    EXEC PROC_STU2 ' ',@STU_NAME OUTPUT,@STU_AGE OUT 
    PRINT @STU_NAME
    PRINT @STU_AGE                                                           
    
    SELECT * FROM StuTable WHERE StuName='赵春玉'    
    
    exec sp_helptext 'PROC_STU2';
    exec sp_helptext 'proc_temp_encryption';
    
    --SELECT * FROM  dbo.utTable26 WHERE DB0836A='2013/07/24'  
    --INSERT INTO  dbo.utTable26  (DB0836A) VALUES ('2013/07/24')    
    -------------------------带游标参数的存储过程-----------------------
    if(OBJECT_ID('PROC_CURSOR','P') IS NOT NULL)
      DROP PROC PROC_CURSOR
    GO
    CREATE PROC PROC_CURSOR @CUR CURSOR VARYING OUTPUT
    AS 
       SET @CUR=CURSOR FORWARD_ONLY STATIC FOR 
       SELECT ID,StuName,StuAge FROM StuTable 
       OPEN @CUR   
      
      
    DECLARE @CURS CURSOR
    DECLARE @ID INT,
            @StuName nvarchar(20),
            @StuAge nvarchar(20)
    EXEC PROC_CURSOR @CUR=@CURS OUTPUT
    FETCH NEXT FROM @CURS INTO @ID,@StuName,@StuAge
    WHILE(@@FETCH_STATUS =0)    
    BEGIN
      PRINT CAST(@ID AS NVARCHAR(10))+' '+@StuName+' '+@StuAge
      FETCH NEXT FROM @CURS INTO @ID,@StuName,@StuAge
    END
    GO 
    ---------------分页存储过程------------------------
    CREATE PROC PROC_PA(@StartIndex int,@EndIndex int)
    AS
       SELECT * FROM( 
                    SELECT *,ROW_NUMBER() OVER(ORDER BY ID) AS DID FROM StuTable
                    ) T
               WHERE T.DID BETWEEN @StartIndex AND @EndIndex 
    GO
    ALTER PROC PROC_PAGE(@pageIndex int,@pageSize int)
    AS 
      DECLARE @StartIndex INT,
              @EndIndex INT
      SET @StartIndex =  (@pageIndex-1)*@pageSize +1
      SET @EndIndex =@StartIndex +@pageSize -1;
      EXEC PROC_PA @StartIndex,@EndIndex
    GO
    EXEC PROC_PAGE 1,20  
    EXEC PROC_PAGE 2,20  
    EXEC PROC_PAGE 3,20  
    GO         
    --===================================触发器========================================
    CREATE TRIGGER TRIG_StuTable ON StuTable
    FOR INSERT
    AS 
      DECLARE @MAXID NVARCHAR(12)
      SELECT @MAXID=MAX(ID) FROM StuTable 
      SELECT * FROM StuTable WHERE ID=@MAXID--向表StuTable中添加数据时,将新添的数据显示出来。
    GO
    ----------------------------------------------
    CREATE PROC InsertStuTableInfo(@stuName nvarchar(20),@stuAge int,@classId int)
    AS 
      DECLARE @maxId int
      SELECT @maxId=MAX(ID) FROM StuTable 
      INSERT INTO StuTable VALUES(@maxId+1,@stuName,@stuAge,@classId)
    GO 
    ---------------------------------------------- 
    EXEC InsertStuTableInfo '高工01',25,8
    GO
    --============================================视图==================================
    CREATE VIEW View_StuTable 
    AS 
      SELECT * FROM StuTable 
    GO
    
    DELETE FROM View_StuTable WHERE ID='18'
    DELETE FROM StuTable WHERE ID='18'
    GO
    CREATE VIEW View_Score
    AS 
      SELECT * FROM ScoreTable 
    GO
    DELETE FROM View_Score WHERE ID=2
    UPDATE View_Score Set Score=90 WHERE ID=3
    GO 
    
    ALTER VIEW View_StuClass
    AS
      SELECT S.ID,S.ClassId,S.StuName,S.StuAge ,C.ClassName FROM StuTable S JOIN ClassTable C ON S.ClassId =C.ID 
    GO  
    /*
    消息 4405,级别 16,状态 1,第 1 行
    视图或函数 'View_StuClass' 不可更新,因为修改会影响多个基表。
    附件:http://dl.vmall.com/c004cxnrfa http://dl.vmall.com/c03ulland3
  • 相关阅读:
    神经网络的数学推导
    矩阵乘法的梯度计算
    深入理解设计矩阵(Design Matrix)
    拉格朗日乘子
    PRML中文版(马春鹏)勘误表
    增强学习笔记 第三章 马尔科夫决策过程
    贝叶斯统计推断的阅读笔记
    Kalman Filter的数学推导
    线性代数随笔(二):矩阵和向量乘法
    线性代数随笔(一):线性变换,特征分解,二次型
  • 原文地址:https://www.cnblogs.com/Lijq/p/4447162.html
Copyright © 2011-2022 走看看