Lección 1: Creación y consulta de objetos de base de datos
Se aplica a: SQL Server Base de datos de Azure SQL Azure SQL Managed Instance Sistema de plataforma de análisis (PDW) Base de datos SQL de Microsoft Fabric
Nota:
La ruta de aprendizaje Introducción a las consultas con Transact-SQL proporciona contenido más detallado, junto con ejemplos prácticos.
En esta lección se muestra cómo crear una base de datos, crear una tabla en la base de datos y, a continuación, tener acceso a los datos de la tabla y cambiarlos. Puesto que esta lección es una introducción al uso de Transact-SQL, no usa ni describe las múltiples opciones disponibles para estas instrucciones.
Transact-SQL se pueden escribir y enviar a Motor de base de datos de las siguientes maneras:
Mediante el uso de SQL Server Management Studio. En este tutorial se supone que se usa Management Studio, pero también puede usarse Management Studio Express, disponible como descarga gratuita en el Centro de descargas de Microsoft.
Mediante el uso de la utilidad sqlcmd.
Mediante la conexión desde una aplicación que cree.
El código se ejecuta en Motor de base de datos de la misma forma y con los mismos permisos, independientemente de cómo envíe las instrucciones de código.
Para ejecutar instrucciones de Transact-SQL en Management Studio, abra Management Studio y conéctese a una instancia de Motor de base de datos de SQL Server.
Requisitos previos
Para llevar a cabo este tutorial necesita tener SQL Server Management Studio, así como acceso a una instancia de SQL Server.
- Instale SQL Server Management Studio.
Si no tiene ninguna instancia de SQL Server, cree una. Para ello, seleccione su plataforma en los vínculos siguientes. Si elige la autenticación de SQL, use sus credenciales de inicio de sesión de SQL Server.
- Windows: Descargar SQL Server 2022 Developer Edition.
- Linux: Descargar SQL Server 2022 en un contenedor.
Crear una base de datos
Como muchas instrucciones Transact-SQL, la instrucción CREATE DATABASE tiene un parámetro obligatorio: el nombre de la base de datos. CREATE DATABASE
también tiene muchos parámetros opcionales, como la ubicación de disco donde se quieren colocar los archivos de la base de datos. Si se ejecuta CREATE DATABASE
sin los parámetros opcionales, SQL Server usa los valores predeterminados para muchos de estos parámetros.
En una ventana del Editor de consultas, escriba el código siguiente, pero no lo ejecute:
CREATE DATABASE TestData GO
Use el puntero para seleccionar las palabras
CREATE DATABASE
y, a continuación, presione F1. Debería abrirse el artículoCREATE DATABASE
. Puede usar esta técnica para buscar la sintaxis completa deCREATE DATABASE
y de otras instrucciones que se usan en este tutorial.En el Editor de consultas, presione F5 para ejecutar la instrucción y crear una base de datos con el nombre
TestData
.
Al crear una base de datos, SQL Server realiza una copia de la base de datos model
y cambia el nombre de la copia por el nombre de la base de datos. Esta operación solo debería tardar algunos segundos, a menos que especifique un tamaño inicial grande de la base de datos como un parámetro opcional.
Nota:
La palabra clave GO separa las instrucciones cuando se envían varias instrucciones en un solo lote. GO es opcional cuando el lote solo contiene una instrucción.
Creación de una tabla
Se aplica a: SQL Server Azure SQL Database Azure Synapse Analytics Analytics Platform System (PDW)
Para crear una tabla, debe proporcionar un nombre para ésta además de los nombres y los tipos de datos de cada columna de la tabla. También es recomendable indicar si se permiten valores NULL en cada columna. Para crear una tabla, debe tener el permiso CREATE TABLE
y el permiso ALTER SCHEMA
en el esquema que contiene la tabla. El rol fijo de base de datos db_ddladmin tiene estos permisos.
La mayoría de las tablas tienen una clave principal, que se compone de una o varias columnas de la tabla. Una clave principal siempre es única. El motor de base de datos aplica la restricción de que ningún valor de clave principal puede repetirse en la tabla.
Para obtener una lista de tipos de datos y vínculos para una descripción de cada uno, consulte Tipos de datos (Transact-SQL).
Nota:
Motor de base de datos se puede instalar para distinguir mayúsculas de minúsculas o no distinguir mayúsculas de minúsculas. Si se instala Motor de base de datos para distinguir mayúsculas de minúsculas, los nombres de objetos siempre deben tener las mismas mayúsculas y minúsculas. Por ejemplo, una tabla denominada OrderData es diferente de la denominada ORDERDATA. Si se instala Motor de base de datos para no distinguir mayúsculas de minúsculas, esos dos nombres de tablas se consideran la misma tabla y ese nombre solo se puede utilizar una vez.
Cambie la conexión del Editor de consultas a la base de datos TestData
En una ventana del Editor de consultas, escriba y ejecute el siguiente código para cambiar la conexión a la base de datos TestData
.
USE TestData
GO
Creación de la tabla
En una ventana del Editor de consultas, escriba y ejecute el código siguiente para crear una tabla denominada Products
. Las columnas de la tabla son ProductID
, ProductName
, Price
y ProductDescription
. La columna ProductID
es la clave principal de la tabla. int
, varchar(25)
, money
y varchar(max)
son todos los tipos de datos. Solo las columnas Price
y ProductionDescription
pueden no tener datos cuando se inserta o cambia una fila. Esta instrucción contiene un elemento opcional (dbo.
) denominado esquema. El esquema es el objeto de base de datos propietario de la tabla. Si es un administrador, dbo
es el esquema predeterminado. dbo
hace referencia al propietario de la base de datos.
CREATE TABLE dbo.Products
(ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription varchar(max) NULL)
GO
Inserción y actualización de datos de una tabla
Ahora que ha creado la tabla Products
, ya está listo para insertar datos en la tabla mediante la instrucción INSERT. Después de insertar los datos, cambiará el contenido de una fila con una instrucción UPDATE. Usa la cláusula WHERE de la instrucción UPDATE para restringir la actualización a una sola fila. Las cuatro instrucciones introducen los datos siguientes.
ProductID | ProductName | Precio | ProductDescription |
---|---|---|---|
1 | Clamp | 12,48 | Workbench clamp |
50 | Screwdriver | 3,17 | Flat head |
75 | Tire Bar | Tool for changing tires. | |
3000 | Corchete de 3 mm | 0,52 |
La sintaxis básica es: INSERT, nombre de tabla, lista de columnas, VALUES y, a continuación, una lista de los valores que se van a insertar. Los dos guiones delante de una línea indican que la línea es un comentario y el compilador ignora el texto. En este caso, el comentario describe una variación permitida de la sintaxis.
Inserción de datos en una tabla
Ejecute la instrucción siguiente para insertar una fila en la tabla
Products
que se ha creado en la tarea anterior.-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GO
Si la inserción se realiza correctamente, continúe con el paso siguiente.
Si se produce un error en la inserción, se puede deber a que la tabla
Product
ya tiene una fila con ese id. del producto. Para continuar, elimine todas las filas de la tabla y repita el paso anterior. TRUNCATE TABLE elimina todas las filas de la tabla.Ejecute el comando siguiente para eliminar todas las filas de la tabla:
TRUNCATE TABLE TestData.dbo.Products; GO
Después de truncar la tabla, repita el comando
INSERT
en este paso.La instrucción siguiente muestra cómo se puede cambiar el orden en que se proporcionan los parámetros modificando la situación de
ProductID
yProductName
en la lista de campos (entre paréntesis) y en la lista de valores.-- Changing the order of the columns INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GO
La instrucción siguiente demuestra que los nombres de las columnas son opcionales, siempre y cuando los valores se enumeren en el orden correcto. Esta sintaxis es habitual, pero no se recomienda porque podría ser difícil para otros comprender su código.
NULL
se especifica para la columnaPrice
porque el precio de este producto no se conoce todavía.-- Skipping the column list, but keeping the values in order INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GO
El nombre de esquema es opcional mientras tenga acceso a una tabla del esquema predeterminado y la modifique. Puesto que la columna
ProductDescription
permite valores NULL y no se ha proporcionado ningún valor, el nombre de columna y el valor deProductDescription
se pueden quitar por completo de la instrucción.-- Dropping the optional dbo and dropping the ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52) GO
Actualización de la tabla de productos
Escriba y ejecute la siguiente instrucción UPDATE
para cambiar el ProductName
del segundo producto de Screwdriver
a Flat Head Screwdriver
.
UPDATE dbo.Products
SET ProductName = 'Flat Head Screwdriver'
WHERE ProductID = 50
GO
Lectura de datos de una tabla
Use la instrucción SELECT para leer los datos de una tabla. La instrucción SELECT es una de las instrucciones de Transact-SQL más importantes y tiene muchas variaciones en la sintaxis. Para este tutorial, trabajará con cinco versiones básicas.
Lectura de datos en una tabla
Escriba y ejecute las siguientes instrucciones para leer los datos de la tabla
Products
.-- The basic syntax for reading data from a single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GO
Puede usar un asterisco (
*
) para seleccionar todas las columnas de la tabla. El asterisco es para las consultas ad hoc. En el código permanente, proporcione la lista de columnas de modo que la instrucción devuelva las columnas previstas, incluso si más tarde se agrega una columna nueva a la tabla.-- Returns all columns in the table -- Does not use the optional schema, dbo SELECT * FROM Products GO
Puede omitir columnas que ya no desea que se devuelvan. Las columnas se devuelven en el orden en que aparecen.
-- Returns only two of the columns from the table SELECT ProductName, Price FROM dbo.Products GO
Use una cláusula
WHERE
para limitar las filas que se devuelven al usuario.-- Returns only two of the records in the table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID < 60 GO
Puede trabajar con los valores de las columnas según se devuelven. En el siguiente ejemplo se realiza una operación matemática en la columna
Price
. Las columnas que se han cambiado de esta manera no tienen un nombre, a menos que proporcione uno mediante la palabra claveAS
.-- Returns ProductName and the Price including a 7% tax -- Provides the name CustomerPays for the calculated column SELECT ProductName, Price * 1.07 AS CustomerPays FROM dbo.Products GO
Funciones útiles en una instrucción SELECT
Para obtener información sobre algunas de las funciones que puede usar para trabajar con datos en instrucciones SELECT, vea los siguientes artículos:
String Functions (Transact-SQL) [Funciones de cadena (Transact-SQL)]
Creación de vistas y procedimientos almacenados
Una vista es una instrucción SELECT almacenada y un procedimiento almacenado es una o varias instrucciones Transact-SQL que se ejecutan como un lote.
Las vistas se consultan como las tablas y no aceptan parámetros. Los procedimientos almacenados son más complejos que las vistas. Los procedimientos almacenados pueden tener parámetros de entrada y salida y pueden contener instrucciones para controlar el flujo del código, como instrucciones IF y WHILE. Una práctica recomendable de programación es usar procedimientos almacenados para realizar todas las tareas repetitivas en la base de datos.
En este ejemplo, usa CREATE VIEW para crear una vista que seleccione solo dos de las columnas de la tabla Products
. A continuación, se usa CREATE PROCEDURE para crear un procedimiento almacenado que acepta un parámetro de precio y devuelve solo los productos cuyo costo es menor que el valor del parámetro especificado.
Creación de una vista
Ejecute la instrucción siguiente para crear una vista que ejecuta una instrucción SELECT y devuelve los nombres y los precios de los productos al usuario.
CREATE VIEW vw_Names
AS
SELECT ProductName, Price FROM Products;
GO
Pruebe la vista
Las vistas se tratan como tablas. Use una instrucción SELECT
para tener acceso a la vista.
SELECT * FROM vw_Names;
GO
Creación de un procedimiento almacenado
La siguiente instrucción crea un procedimiento almacenado denominado pr_Names
, acepta un parámetro de entrada denominado @VarPrice
del tipo de datos money
. El procedimiento almacenado imprime la instrucción Products less than
concatenada con el parámetro de entrada que cambia del tipo de datos money
a un tipo de datos de carácter varchar(10)
. A continuación, el procedimiento ejecuta una instrucción SELECT
en la vista y le pasa el parámetro de entrada como parte de la cláusula WHERE
. Esto devuelve todos los productos cuyo costo es menor que el valor del parámetro de entrada.
CREATE PROCEDURE pr_Names @VarPrice money
AS
BEGIN
-- The print statement returns text to the user
PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
-- A second statement starts here
SELECT ProductName, Price FROM vw_Names
WHERE Price < @VarPrice;
END
GO
Probar el procedimiento almacenado
Para probar el procedimiento almacenado, escriba y ejecute la instrucción siguiente. El procedimiento debe devolver los nombres de dos productos introducidos en la tabla Products
en la lección 1 con un precio menor que 10.00
.
EXECUTE pr_Names 10.00;
GO
Pasos siguientes
En el siguiente artículo se muestra cómo configurar permisos en objetos de base de datos. Los objetos creados en la primera lección también se usarán en la segunda.
Vaya al siguiente artículo para más información: