入門

本節描述了一些基本的 DDL (=“ D ata D 定義 L 語言”)命令,用於建立資料庫,資料庫中的表,檢視以及最後的儲存過程。

建立資料庫

以下 SQL 命令使用 pathC:\Program Files\Microsoft SQL Server\MSSQL11.INSTSQL2012\MSSQL\DATA\在當前伺服器上建立新資料庫 Northwind

USE [master]
GO

CREATE DATABASE [Northwind]
 CONTAINMENT = NONE
 ON  PRIMARY 
 ( 
  NAME = N'Northwind', 
  FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.INSTSQL2012\MSSQL\DATA\Northwind.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB 
 )
 LOG ON 
 ( 
  NAME = N'Northwind_log', 
  FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.INSTSQL2012\MSSQL\DATA\Northwind_log.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%
 )
GO

ALTER DATABASE [Northwind] SET COMPATIBILITY_LEVEL = 110
GO

注意: T-SQL 資料庫由兩個檔案組成,即資料庫檔案*.mdf 及其事務日誌*.ldf。建立新資料庫時需要指定兩者。

建立表

以下 SQL 命令使用 schema dbo 在當前資料庫中建立新表 Categories(你可以使用 Use <DatabaseName> 切換資料庫上下文):

CREATE TABLE dbo.Categories(
    CategoryID int IDENTITY NOT NULL,
    CategoryName nvarchar(15) NOT NULL,
    Description ntext NULL,
    Picture image NULL,
      CONSTRAINT PK_Categories PRIMARY KEY CLUSTERED 
      (
         CategoryID ASC
      )
      WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
            ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY
) ON PRIMARY TEXTIMAGE_ON PRIMARY

建立檢視

以下 SQL 命令使用 schema dbo 在當前資料庫中建立新檢視 Summary_of_Sales_by_Year(你可以使用 Use <DatabaseName> 切換資料庫上下文):

CREATE VIEW dbo.Summary_of_Sales_by_Year AS
  SELECT ord.ShippedDate, ord.OrderID, ordSub.Subtotal
  FROM Orders ord
  INNER JOIN [Order Subtotals] ordSub ON ord.OrderID = ordSub.OrderID

這將連線表 Orders[Order Subtotals] 以顯示列 ShippedDateOrderIDSubtotal。因為表 [Order Subtotals] 在 Northwind 資料庫中的名稱中有空白,所以需要將其括在方括號中。

建立程式

以下 SQL 命令使用 schema dbo(你可以使用 Use <DatabaseName> 切換資料庫上下文)在當前資料庫中建立新的儲存過程 CustOrdersDetail

CREATE PROCEDURE dbo.MyCustOrdersDetail @OrderID int, @MinQuantity int=0
AS BEGIN
  SELECT ProductName,
    UnitPrice=ROUND(Od.UnitPrice, 2),
    Quantity,
    Discount=CONVERT(int, Discount * 100), 
    ExtendedPrice=ROUND(CONVERT(money, Quantity * (1 - Discount) * Od.UnitPrice), 2)
  FROM Products P, [Order Details] Od
  WHERE Od.ProductID = P.ProductID and Od.OrderID = @OrderID 
  and Od.Quantity>=@MinQuantity
END

建立此儲存過程後,可以按如下方式呼叫該儲存過程:

exec dbo.MyCustOrdersDetail 10248

這將返回 @ OrderId = 10248 的所有訂單詳細資訊(預設情況下數量> = 0)。或者你可以指定可選引數

exec dbo.MyCustOrdersDetail 10248, 10

只返回最小數量為 10(或更多)的訂單。