Microsoft SQL Server
Operaciones básicas de DDL en MS SQL Server
Buscar..
Empezando
Esta sección describe algunos comandos básicos de DDL (= " D ata D efinition L anguage") para crear una base de datos, una tabla dentro de una base de datos, una vista y finalmente un procedimiento almacenado.
Crear base de datos
El siguiente comando SQL crea una nueva base de datos Northwind
en el servidor actual, utilizando la ruta C:\Program Files\Microsoft SQL Server\MSSQL11.INSTSQL2012\MSSQL\DATA\
:
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
Nota: una base de datos T-SQL consta de dos archivos, el archivo de base de datos *.mdf
y su registro de transacciones *.ldf
. Ambos deben especificarse cuando se crea una nueva base de datos.
Crear mesa
El siguiente comando SQL crea una nueva tabla Categories
en la base de datos actual, usando el esquema dbo
(puede cambiar el contexto de la base de datos con 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
Crear vista
El siguiente comando SQL crea una nueva vista Summary_of_Sales_by_Year
en la base de datos actual, usando el esquema dbo
(puede cambiar el contexto de la base de datos con 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
Esto unirá las tablas Orders
y [Order Subtotals]
para mostrar las columnas ShippedDate
, OrderID
y Subtotal
. Debido a que la tabla [Order Subtotals]
tiene un espacio en blanco en su nombre en la base de datos de Northwind, debe estar entre corchetes.
Crear procedimiento
El siguiente comando SQL crea un nuevo procedimiento almacenado CustOrdersDetail
en la base de datos actual, usando el esquema dbo
(puede cambiar el contexto de la base de datos con 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
Este procedimiento almacenado, una vez creado, se puede invocar de la siguiente manera:
exec dbo.MyCustOrdersDetail 10248
que devolverá todos los detalles del pedido con @ OrderId = 10248 (y la cantidad> = 0 como predeterminado). O puede especificar el parámetro opcional
exec dbo.MyCustOrdersDetail 10248, 10
que devolverá solo pedidos con una cantidad mínima de 10 (o más).