入门
本节描述了一些基本的 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]
以显示列 ShippedDate
,OrderID
和 Subtotal
。因为表 [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(或更多)的订单。