Lección 1: Creación y consulta de objetos de base de datos

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)

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.

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.

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.

  1. En una ventana del Editor de consultas, escriba el código siguiente, pero no lo ejecute:

    CREATE DATABASE TestData
    GO
    
  2. Use el puntero para seleccionar las palabras CREATE DATABASEy, a continuación, presione F1. Debería abrirse el artículo CREATE DATABASE. Puede usar esta técnica para buscar la sintaxis completa de CREATE DATABASE y de otras instrucciones que se usan en este tutorial.

  3. 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 ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics 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, Pricey ProductDescription. La columna ProductID es la clave principal de la tabla. int, varchar(25), moneyy 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

  1. 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.

  2. 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 y ProductName 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
    
  3. 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 columna Price 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
    
  4. 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 de ProductDescription 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 Screwdrivera 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

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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 clave AS.

    -- 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: