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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章