zoukankan      html  css  js  c++  java
  • Sql Server数据库常用Transact-SQL脚本

    数据库

    1、创建数据库

    USE master ;  
    GO  
    CREATE DATABASE Sales  
    ON   
    ( NAME = Sales_dat,  
        FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATAsaledat.mdf',  
        SIZE = 10,  
        MAXSIZE = 50,  
        FILEGROWTH = 5 )  
    LOG ON  
    ( NAME = Sales_log,  
        FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATAsalelog.ldf',  
        SIZE = 5MB,  
        MAXSIZE = 25MB,  
        FILEGROWTH = 5MB ) ;  
    GO 

    2、查看数据库

    SELECT name, database_id, create_date  
    FROM sys.databases ;  

    3、删除数据库

    DROP DATABASE Sales;

    1、创建表

    CREATE TABLE PurchaseOrderDetail  
    (  
        ID uniqueidentifier NOT NULL  
        ,LineNumber smallint NOT NULL  
        ,ProductID int NULL  
        ,UnitPrice money NULL  
        ,OrderQty smallint NULL  
        ,ReceivedQty float NULL  
        ,RejectedQty float NULL  
        ,DueDate datetime NULL  
    );  

    2、删除表

    DROP TABLE dbo.PurchaseOrderDetail;  

    3、重命名表

    EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';  

    1、添加列

    ALTER TABLE dbo.doc_exa ADD column_b VARCHAR(20) NULL, column_c INT NULL ;

    2、删除列

    ALTER TABLE dbo.doc_exb DROP COLUMN column_b;

    3、重命名列

    EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';

    约束

    1、主键

    --在现有表中创建主键
    ALTER TABLE Production.TransactionHistoryArchive
       ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);
    
    --在新表中创建主键
    CREATE TABLE Production.TransactionHistoryArchive1
       (
          TransactionID int IDENTITY (1,1) NOT NULL
          , CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
       )
    ;
    
    
    --查看主键  
    SELECT name  
    FROM sys.key_constraints  
    WHERE type = 'PK' AND OBJECT_NAME(parent_object_id) = N'TransactionHistoryArchive';  
    GO  
    
    --删除主键
    ALTER TABLE Production.TransactionHistoryArchive  
    DROP CONSTRAINT PK_TransactionHistoryArchive_TransactionID;   
    GO  

    视图

     1、创建视图

    CREATE VIEW V_EmployeeHireDate  
    AS  
    SELECT p.FirstName, p.LastName, e.HireDate  
    FROM HumanResources.Employee AS e JOIN Person.Person AS  p  
    ON e.BusinessEntityID = p.BusinessEntityID ;   
    GO  

    2、删除视图

    DROP VIEW V_EmployeeHireDate;  

    存储过程

    1、创建存储过程

    CREATE PROCEDURE P_UspGetEmployeesTest   
        @LastName nvarchar(50),   
        @FirstName nvarchar(50)   
    AS   
        SELECT FirstName, LastName, Department  
        FROM HumanResources.vEmployeeDepartmentHistory  
        WHERE FirstName = @FirstName AND LastName = @LastName  
        AND EndDate IS NULL;  
    GO  

    2、删除存储过程

    DROP PROCEDURE P_UspGetEmployeesTest; 

    3、执行存储过程

    EXEC P_UspGetEmployeesTest N'Ackerman', N'Pilar';  
    -- Or  
    EXEC P_UspGetEmployeesTest @LastName = N'Ackerman', @FirstName = N'Pilar';  
    GO  
    -- Or  
    EXECUTE P_UspGetEmployeesTest @FirstName = N'Pilar', @LastName = N'Ackerman';  
    GO  

    4、重命名存储过程

    EXEC sp_rename 'P_UspGetAllEmployeesTest', 'P_UspEveryEmployeeTest2'; 

    5、带有输出参数的存储过程

    CREATE PROCEDURE P_UspGetEmployeeSalesYTD  
    @SalesPerson nvarchar(50),  
    @SalesYTD money OUTPUT  
    AS    
        SELECT @SalesYTD = SalesYTD  
        FROM SalesPerson AS sp  
        JOIN vEmployee AS e ON e.BusinessEntityID = sp.BusinessEntityID  
        WHERE LastName = @SalesPerson;  
    RETURN  
    GO
    
    
    --调用
    DECLARE @SalesYTDBySalesPerson money;  
    EXECUTE P_UspGetEmployeeSalesYTD  
        N'Blythe', 
        @SalesYTD = @SalesYTDBySalesPerson OUTPUT; 
    GO  

    游标

    --定义要使用的变量
    DECLARE @Id uniqueidentifier
    DECLARE @Name nvarchar(50)
    DECLARE @Gender bit
    DECLARE @CreateTime nvarchar(50)
    
    --定义游标
    DECLARE Test_Cursor CURSOR FOR SELECT [Id],[Name],[Gender],[CreateTime] FROM Test
    
    --打开游标
    OPEN Test_Cursor
    
    --返回结果集中的第一行
    FETCH NEXT FROM Test_Cursor INTO @Id,@Name,@Gender,@CreateTime
    WHILE @@FETCH_STATUS = 0
    BEGIN
        
        --更新
        UPDATE Test SET [Name] = [Name] + 'abc' WHERE CURRENT OF Test_Cursor
    
        IF(@Id = '4D2F97EF-8FEB-4183-BFD0-089222000F69')
        BEGIN
            --删除
            DELETE FROM Test WHERE CURRENT OF Test_Cursor
        END
    
        --紧跟当前行返回结果行,并且当前行递增为返回行。
        FETCH NEXT FROM Test_Cursor INTO @Id,@Name,@Gender,@CreateTime
    END;
    --关闭游标
    CLOSE Test_Cursor;
    --删除游标
    DEALLOCATE Test_Cursor;  

    数据类型

  • 相关阅读:
    Google Map API基本概念(转载)很好的例子
    Sql Exception Handling & Throw Exception
    幸福人生讲座(十):五伦中哪一伦最重要?
    Delete Database Log
    杨澜语录
    余世雄 如何提升职场“执行力”
    红楼女梦
    假如我真的看透了
    余世维 有效沟通
    习惯修养
  • 原文地址:https://www.cnblogs.com/oyang168/p/11966274.html
Copyright © 2011-2022 走看看