sql >> Base de Datos >  >> RDS >> Database

Tabla de referencia de SQL:cómo crear y escribir consultas básicas

Este artículo se centrará en escribir consultas SQL en la tabla de referencia de la base de datos con una estructura bastante sencilla de comprender e implementar.

Además, vamos a aclarar los conceptos detrás de la escritura de consultas SQL efectivas junto con algunos consejos para la vida profesional.

Antes de consultar las tablas de la base de datos

Como este artículo trata sobre la consulta de tablas de bases de datos con la ayuda de secuencias de comandos SQL, los lectores deben tener cierta experiencia para comprender completamente los conceptos y ejemplos. Necesitamos tener la impresión de cómo hacer referencia a una tabla. Además, el equipo necesario debe estar presente:

Necesitas:

  1. El conocimiento básico de bases de datos relacionales y SQL.
  2. Un servidor de base de datos SQL instalado de forma local o remota.
  3. Herramientas de administración de bases de datos como SQL Server Management Studio o dbForge Studio para SQL Server.

Debería poder crear una base de datos de muestra (con la ayuda de los scripts proporcionados), conectarse a SQL Server y ejecutar esa base de datos de muestra.

Antes de proceder a ejecutar consultas en una base de datos en blanco, es posible que deba consultar el artículo anterior dedicado al tema para actualizar el conocimiento:

Cómo escribir consultas SQL simples desde una base de datos en blanco

Escribir consultas SQL a partir de tablas de referencia

Necesitamos escribir consultas SQL en una base de datos de muestra que contiene dos tablas. El plan es ver los datos de una de las tablas conocidas como tabla de referencia de SQL. Nota:La tabla de referencia puede ser cualquier tabla que no requiera datos de otra tabla.

Primero, necesitamos comprender la estructura de la base de datos de muestra para consultarla con precisión.

Ejemplo de tabla de referencia de base de datos

Usamos una muestra BookSimple2 base de datos que consta de dos tablas, BookType y Reservar .

El Tipo de libro La tabla contiene los tipos de libros que se asignarán a un libro. El Libro La tabla contiene nombres, tipos y existencias (número de copias disponibles) de libros.

Es fácil adivinar que ambas tablas están vinculadas a través de claves. El tipo de libro almacenado en el Libro la tabla se define originalmente en el BookType mesa. Permite mantener los datos consistentes y confiables.

Por lo tanto, el BookType table es una tabla de referencia:proporciona su referencia (tipo de libro) al Libro principal mesa.

Echa un vistazo a la siguiente ilustración:

Si no vinculamos el Libro tabla con BookType para obtener el tipo del libro, debemos definir el tipo necesario cada vez que se almacena un nuevo libro. Como resultado, pronto ocurrirán errores porque estamos almacenando el mismo tipo una y otra vez. Además, es posible que terminemos creando muchos más tipos debido a errores ortográficos.

Digamos que si ignoramos el uso de tablas de referencia y solo creamos una tabla principal, podemos usar diferentes formas de representar un tipo, como Diseño , Diseño y Diseños . Confunde, especialmente al consultar y comprender los datos.

También puede consultar el artículo anterior para obtener más información sobre cómo las tablas se relacionan entre sí en SQL:

Aprenda a diseñar bases de datos con SQL Server Management Studio (SSMS) - Parte 2

Ahora que ve los antecedentes del uso de las tablas de referencia y las tablas principales, podemos pasar a los ejemplos.

Cómo crear una tabla de referencia en SQL

Abra la herramienta de desarrollo de la base de datos (podría ser SQL Server Management Studio o dbForge Studio para SQL Server) y conéctese a la instancia del servidor SQL instalado.

Escriba el siguiente script en la base de datos maestra para configurar una base de datos de muestra BookSimple2 con dos mesas:

-- Create sample database BookSimple2
USE MASTER
GO

CREATE DATABASE BookSimple2
GO

USE BookSimple2

-- Creating a reference table BookType
CREATE TABLE dbo.BookType
(
	BookTypeId INT IDENTITY(1,1),
	Name VARCHAR(50)NOT NULL,
	Detail VARCHAR(200)NULL 
	CONSTRAINT PK_BookType_BookTypeId PRIMARY KEY (BookTypeId)
)
GO

-- Populating (adding rows to the) table BookType
SET IDENTITY_INSERT dbo.BookType ON
GO
INSERT INTO dbo.BookType
(
  BookTypeId
 ,Name
 ,Detail
)
VALUES
(
  1  -- ID - INT Primary Key
 ,'Designing' -- Name - varchar(50) NOT NULL
 ,'This is Designing' -- Detail - varchar(200)
),
(
  2  -- ID - INT Primary Key
 ,'Testing' -- Name - varchar(50) NOT NULL
 ,'This is Testing' -- Detail - varchar(200)
),
(
  3  -- ID - INT Primary Key
 ,'Coding' -- Name - varchar(50) NOT NULL
 ,'This is Coding' -- Detail - varchar(200)
);
GO
SET IDENTITY_INSERT dbo.BookType OFF
GO

-- Creating a table Book
CREATE TABLE dbo.Book
(
	BookId INT IDENTITY(1,1),
	Name VARCHAR(50),
	BookTypeId INT,
	Stock INT,
	CONSTRAINT PK_Book_BookId PRIMARY KEY (BookId)
)
GO

Después de ejecutar el script, puede ver la base de datos recién creada en el Explorador de objetos de SSMS o en la sección Explorador de bases de datos de dbForge Studio para SQL Server:

Cómo hacer referencia a dos tablas con clave externa SQL

He excluido deliberadamente la parte del script que crea la relación entre la tabla de referencia (BookType ) y la mesa principal (Libro ) en forma de claves.

Ejecute el siguiente script en la base de datos de muestra para vincular la tabla de referencia con la tabla principal:

-- Creating foreign key constraint on Book table to get BookTypeId values from BookType table
ALTER TABLE dbo.Book
    ADD CONSTRAINT [FK_Book_BookType_BookTypeId] 
FOREIGN KEY ([BookTypeId]) REFERENCES dbo.[BookType] ([BookTypeId]);

Expanda BookSimple2 base de datos> Libro tabla> Teclas carpeta:

Podemos ver que las dos tablas están vinculadas con éxito.

Lo anterior es la captura de pantalla de SQL Server Management Studio. Sin embargo, la vista es exactamente la misma si ve la base de datos en el Explorador de bases de datos de dbForge Studio para SQL Server.

Un consejo importante sobre la selección de la base de datos deseada: Debe asegurarse de ejecutar consultas en la base de datos correcta:la base de datos de ejemplo. Por lo tanto, selecciónelo de la lista de bases de datos disponibles o ejecute el siguiente script:

-- Select the sample SQL database to query it
USE BookSimple2

¡Importante! El uso de un script para seleccionar la base de datos no es aplicable si trabaja con una versión en la nube de la base de datos SQL conocida como Azure SQL Database.

Escribiendo Primera Consulta

Para consultar las tablas de la base de datos, solo tenemos que tener en cuenta la sentencia SELECT de la siguiente forma:

SELECT * FROM <TableName>

Reemplace con el nombre de una tabla existente y el script le devolverá todos los registros (filas) de esa tabla.

La declaración SELECT es mucho más flexible, pero por ahora, solo nos enfocaremos en ver todos los registros (filas) de una tabla.

Un consejo importante sobre SQL :Recuerde que SQL (particularmente en referencia a T-SQL) no distingue entre mayúsculas y minúsculas . Se relaciona tanto con la palabra reservada de SQL (SELECT es lo mismo que Seleccionar ) o nombres definidos por el usuario (BookType es lo mismo que booktype ) .

Ver todas las filas de la tabla de referencia BookType

Escriba el siguiente script en la base de datos de ejemplo:

-- View all data from the BookType table
SELECT * FROM dbo.BookType

La salida es:

Podemos ver todas las columnas y filas de la tabla. Es, con diferencia, el método más rápido para obtener todos los datos de una tabla.

Consejo importante sobre SELECT *: Debe usar SELECT * para obtener todas las filas y columnas de una tabla solo cuando verifica una tabla pequeña (como una tabla de referencia). De lo contrario, puede consumir mucho tiempo, mientras que es posible que necesitemos los datos en algunas columnas y filas de una tabla más grande.

Buscar todas las filas de la tabla BookType usando el nombre de la tabla

Hay una mejor manera de consultar la tabla. Nombramos una tabla y la vinculamos con todas las columnas como se muestra a continuación:

-- View all data from the BookType table using bt alias
SELECT bt.* FROM dbo.BookType bt

Ver columnas seleccionadas de la tabla de referencia

El uso de nombres de tablas trae más beneficios. Primero, podemos seleccionar rápidamente la columna deseada de la tabla. Luego, hace más claro el uso de tablas y columnas limitadas porque en la mayoría de los casos solo requerimos algunas columnas.

Este es un ejemplo de obtener ID y nombres solo del BookType tabla:

-- View book type id and name columns from the reference table
SELECT bt.BookTypeId,bt.Name FROM dbo.BookType bt

El resultado es:

Mejorando la sintaxis SELECT

Por lo tanto, según la información mencionada anteriormente, podemos mejorar la sintaxis SELECT de la siguiente manera:

SELECT t.<column1>,t.<column2> FROM <TableName> t

Ordenar datos por columna de nombre usando la cláusula Ordenar por

Puede ordenar el conjunto de resultados según una columna específica o un conjunto de columnas. Ordenar los datos da un punto de vista diferente.

El uso de Ordenar por cláusula en este caso es:

SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1>

Por ejemplo, queremos ver los tipos de libros ordenados por el nombre del tipo (orden alfabético). En este caso, usamos la cláusula Ordenar por en el script de sentencia SELECT de la siguiente manera:

-- View book types (name) sorted by type name 
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name

La salida es:

Ordenar datos por columna de nombre en orden descendente

También podemos ordenar los datos en orden descendente según el requisito. Por ejemplo, queremos ver la lista de todos los tipos de libros según la columna Nombre en orden descendente (Z a A). La sintaxis será:

SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1> desc

El script T-SQL es el siguiente:

-- View book types (name) sorted by a type name in descending order (from Z to A)
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name desc

El conjunto de resultados está a continuación:

Ver registros TOP N de una tabla

Finalmente, podemos seleccionar el número deseado de filas que se extraerán de una base de datos utilizando la cláusula TOP. Después de esa cláusula, debemos proporcionar el número requerido:

SELECT Top N t.<column1>,t.<column2> FROM <TableName> t 

Sin embargo, la cláusula TOP sin ningún orden no es la mejor opción. Debemos especificar el orden de las columnas a tener en cuenta al seleccionar las primeras n filas.

Aquí, podemos mejorar la sintaxis anterior de la siguiente manera:

SELECT Top N t.<column1>,t.<column2> FROM <TableName> t order by <column> Desc/Asc

Recuerda que debemos mencionar el orden descendente usando DESC al final. Sin embargo, no es obligatorio mencionar el orden ascendente:es la opción predeterminada.

Veamos los 2 tipos principales de libros ordenados por nombre en orden descendente:

--View Top 2 types of the books ordered by name in descending order (from Z to A)
SELECT TOP 2 bt.Name FROM dbo.BookType bt 
ORDER BY bt.Name DESC

La salida es:

Consejo importante sobre TOP N: use la cláusula TOP N (con un orden por) para ver una tabla en lugar de ver todas las filas de la tabla si desea verificar los datos conocidos como adelantos rápidamente.

En escenarios de la vida profesional, la cláusula Top N sirve para actualizar grandes cantidades de datos de una tabla grande en pasos.

Ahora, hemos consultado con éxito la tabla de una base de datos SQL. Además, nos familiarizamos con algunos consejos para ejecutar consultas como un profesional y aprendimos algunas de las mejores prácticas para escribir consultas SQL.

Práctica de tabla de referencia de base de datos

Ahora puede escribir, ejecutar y aumentar la efectividad de las consultas SQL en cualquier tabla. Prueba los siguientes ejercicios para mejorar las nuevas habilidades:

  1. Intente escribir una secuencia de comandos para ver la identificación del tipo de libro (BookTypeId ) con los detalles (Detalle ) solo columnas.
  2. Intente ordenar la referencia BookType tabla por ID (BookTypeId ) en orden descendente (del 3 al 1).
  3. Intente obtener las 2 filas superiores del BookType tabla que incluye solo id (BookTypeId ) y detalles (Detalle ) del tipo de libro ordenado por el Detalle columna.