Microsoft SQL Server
MS SQL Serverの基本的なDDL操作
サーチ…
入門
このセクションでは、データベース、データベース内のテーブル、ビュー、そして最後にストアドプロシージャを作成するための基本的なDDL (= " D ata D defining L anguage")コマンドについて説明します。
データベースの作成
次のSQLコマンドは、 C:\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
という2つのファイルで構成されています。新しいデータベースが作成されるときに両方を指定する必要があります。
テーブルの作成
次のSQLコマンドは、スキーマdbo
(データベースコンテキストをUse <DatabaseName>
をUse <DatabaseName>
切り替えることができます)を使用して、現在のデータベースに新しいテーブルCategories
作成します。
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コマンドは、スキーマdbo
を使用して現在のデータベースに新しいビューSummary_of_Sales_by_Year
作成します( Use <DatabaseName>
を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]
列を表示するためにShippedDate
、 OrderID
及びSubtotal
。テーブル[Order Subtotals]
は、Northwindデータベースの名前に空白が含まれているため、角括弧で囲む必要があります。
プロシージャの作成
次のSQLコマンドは、スキーマdbo
を使用して現在のデータベースに新しいストアドプロシージャCustOrdersDetail
作成します( Use <DatabaseName>
をUse <DatabaseName>
データベースコンテキストを切り替えることができます)。
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(デフォルトでquantity> = 0)ですべての注文詳細が返されます。または、オプションのパラメータを指定することもできます
exec dbo.MyCustOrdersDetail 10248, 10
最小数量10(またはそれ以上)の注文のみが返されます。