• 最近常考的sql题目


    1.将dbo.Orders中的数据合并至Sales.Orders表中,匹配行进行更新操作,未匹配行进行插入操作,目标表中存在,源表中不存在,则删除。

    MERGE INTO Sales.Orders as S

    USING dbo.Orders AS O

    on S.orderid=O.orderid

    when matched

     then update set S.custid=O.custid,....

    when not matched

     then insert values(S.cusrid,....)

    when not matched by source 

    then DELETE;

    注:详细内容见http://www.cnblogs.com/zq281660880/archive/2013/03/07/2947852.html

     

    2.定义一个事务,向产品表中添加记录,如果添加成功,则接着给供应商表也添加一条数据,如果产品表记录添加失败,供应商表不做任何操作。

    BEGIN TRANSACTION

     INSERT INTO Product(ProductID,Name,Price,Supplierid)

     VALUES(1,'AA',34,34 );

     IF @@ERROR=0

          BEGIN

           INSERT INTO Suppliers(Supplierid,SupName,SupAddress)

           VALUES(2,'AA','AAA');

           COMMIT TRANSACTION

          END

     ELSE

      BEGIN

      ROLLBACK TRANSACTION

      END

    3.定义一个游标(例子)

    DECLARE @id AS INT,@name AS VARCHAR

    DECLARE c CURSOR FOR

    SELECT  ID,NAME FROM table1

    ORDER BY id;

    OPEN c 

    FETCH NEXT FROM c INTO @id,@name

    WHILE @@fetch_status=0

    BEGIN

    SELECT id,NAME

    FROM table1

    WHERE id=@id

    FETCH NEXT FROM c INTO @id,@name

    END

    CLOSE c

    DEALLOCATE c

    4.创建一个触发器,要求在产品表中插入一条记录时,向供应商表也插入一条记录

    CREATE TRIGGER SuppliersAdd

    ON Product

    AFTER INSERT

    AS

    INSERT INTO Suppliers

    SELECT INSERTED.Supplierid,INSERTED.Name,INSERTED.Price

    FROM inserted

    5.创建一个内联表值函数

     CREATE FUNCTION fnProduct(@id as INT,@n  as INT)

     RETURNS TABLE

     AS 

     RETURN

        SELECT TOP(@n) Productid,Name

    FROM Product

    WHERE Productid=@id;

     

     GO

    6.创建存储过程

    create proc sp_name

    @[参数名] [类型],@[参数名] [类型]

    as

    begin

    .........

    end

     

     CREATE PROCEDURE prProductUpd

      @ProductID AS INT,

      @Supplierid AS INT

      AS 

      BEGIN

       DECLARE @i AS NVARCHAR(50)

       BEGIN TRY

       UPDATE Product

       SET Supplierid = @Supplierid

       WHERE ProductID=@ProductID;

       SET @i=1;

       END TRY

       BEGIN CATCH

            SET @i=0;

       END CATCH

      END

    执行:

     EXEC  prProductUpd 1,33;

    7.逻辑处理顺序:

    FROM 、 WHERE GROUP BY HAVING SELECT、 OVER DISTINCT TOP ORDER BY 

     

     

     

  • 相关阅读:
    数据库第1,2,3范式学习
    node.js安装及小例子
    WorkSkill整理之 技能体系
    PTE 准备之 Read aloud
    PTE 准备之 Personal introduction
    PTE准备的时候,用英式英语还是美式英语
    sqlserver2014无法打开报Cannot find one or more components_修复方案
    beego 框架用的页面样式模板
    Go语言开发中MongoDB数据库
    xmind8 破解激活教程
  • 原文地址:https://www.cnblogs.com/luoxiaoxiao102/p/4271808.html
Copyright © 2020-2023  润新知