Tutorial de SQL SQL es un lenguaje estándar para almacenar, manipular y recuperar datos en bases de datos.
Introducción al SQL SQL es un lenguaje estándar para acceder y manipular bases de datos.
¿Qué es SQL?
SQL significa Structured Query Language SQL le permite acceder y manipular bases de datos SQL es un estándar ANSI (American National Standards Institute)
¿Qué puede hacer SQL?
SQL SQL SQL SQL SQL SQL
puede puede puede puede puede puede
ejecutar consultas en una base de datos recuperar datos de una base de datos insertar registros en una base de datos actualizar registros en una base de datos eliminar registros de una base de datos crear nuevas bases de datos
SQL SQL SQL SQL
puede puede puede puede
crear nuevas tablas en una base de datos crear procedimientos almacenados en una base de datos crear vistas en una base de datos establecer permisos en tablas, procedimientos y vistas
SQL es un estándar - PERO .... Aunque SQL es un estándar ANSI (American National Standards Institute), existen diferentes versiones del lenguaje SQL. Sin embargo, para ser compatible con el estándar ANSI, todos ellos soportan al menos los comandos principales (como SELECT, UPDATE, DELETE, INSERT, WHERE) de una manera similar. Nota: La mayoría de los programas de base de datos SQL también tienen sus propias extensiones propietarias además del estándar SQL.
Uso de SQL en su sitio web Para crear un sitio web que muestre datos de una base de datos, necesitará:
Un programa de base de datos RDBMS (es decir, MS Access, SQL Server, MySQL) Para utilizar un lenguaje de scripting del lado del servidor, como PHP o ASP Para usar SQL para obtener los datos que desea
Para usar HTML / CSS para diseñar la página
RDBMS RDBMS significa Sistema de Gestión de Bases de Datos Relacionales. RDBMS es la base para SQL y para todos los sistemas de bases de datos modernos como MS SQL Server, IBM DB2, Oracle, MySQL y Microsoft Access. Los datos en RDBMS se almacenan en objetos de base de datos denominados tablas. Una tabla es una colección de entradas de datos relacionadas y consiste en columnas y filas. Mira la tabla "Clientes":
Ejemplo SELECT * FROM Customers;
Cada tabla se divide en entidades más pequeñas llamadas campos. Los campos de la tabla Customers constan de CustomerID, CustomerName, ContactName, Address, City, PostalCode y Country. Un campo es una columna de una tabla que está diseñada para mantener información específica acerca de cada registro de la tabla. Un registro, también llamado una fila, es cada entrada individual que existe en una tabla. Por ejemplo, hay 91 registros en la tabla Customers anterior. Un registro es una entidad horizontal en una tabla.
Una columna es una entidad vertical en una tabla que contiene toda la información asociada a un campo específico de una tabla.
Sintaxis de SQL Tablas de base de datos Una base de datos a menudo contiene una o más tablas. Cada tabla se identifica con un nombre (por ejemplo, "Clientes" u "Pedidos"). Las tablas contienen registros (filas) con datos. En este tutorial usaremos la conocida base de datos de ejemplo de Northwind (incluida en MS Access y MS SQL Server). A continuación se muestra una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
La tabla anterior contiene cinco registros (uno para cada cliente) y siete columnas (CustomerID, CustomerName, ContactName, Address, City, PostalCode y Country).
Sentencias SQL La mayoría de las acciones que necesita realizar en una base de datos se realizan con sentencias SQL. La siguiente instrucción SQL selecciona todos los registros de la tabla "Clientes":
Ejemplo SELECT * FROM Customers;
Inténtalo tú mismo " En este tutorial le enseñaremos todo acerca de las diferentes sentencias SQL.
Declaración SQL SELECT La instrucción SQL SELECT La instrucción SELECT se utiliza para seleccionar datos de una base de datos. Los datos devueltos se almacenan en una tabla de resultados, denominada conjunto de resultados.
SELECT Sintaxis SELECT column1, column2, ... FROM table_name;
Aquí, column1, column2, ... son los nombres de campo de la tabla de la que desea seleccionar los datos. Si desea seleccionar todos los campos disponibles en la tabla, utilice la siguiente sintaxis: SELECT * FROM table_name;
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Ejemplo de columna SELECT La siguiente instrucción SQL selecciona las columnas "CustomerName" y "City" de la tabla "Customers":
Ejemplo SELECT CustomerName, City FROM Customers;
Inténtalo tú mismo "
SELECT * Ejemplo La instrucción SQL siguiente selecciona todas las columnas de la tabla "Clientes":
Ejemplo SELECT * FROM Customers;
Inténtalo tú mismo "
Sentencia SQL SELECT DISTINCT La sentencia SQL SELECT DISTINCT La instrucción SELECT DISTINCT se utiliza para devolver sólo valores distintos (diferentes). Dentro de una tabla, una columna contiene a menudo muchos valores duplicados; ya veces sólo desea enumerar los diferentes valores (distintos). La instrucción SELECT DISTINCT se utiliza para devolver sólo valores distintos (diferentes).
SELECT DISTINCT Sintaxis SELECT DISTINCT column1, column2, ... FROM table_name;
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
SELECT Ejemplo La instrucción SQL siguiente selecciona todos los valores (y duplicados) de la columna "País" de la tabla "Clientes":
Ejemplo SELECT Country FROM Customers;
Inténtalo tú mismo "
Ahora, utilicemos la palabra clave DISTINCT con la sentencia SELECT anterior y veamos el resultado.
Ejemplos SELECT DISTINCT La siguiente instrucción SQL selecciona sólo los valores DISTINCT de la columna "País" de la tabla "Clientes":
Ejemplo SELECT DISTINCT Country FROM Customers;
Inténtalo tú mismo " La siguiente instrucción SQL enumera el número de países de clientes diferentes (distintos):
Ejemplo SELECT COUNT(DISTINCT Country) FROM Customers;
Inténtalo tú mismo " Nota: El ejemplo anterior no funcionará en Firefox y Microsoft Edge. Porque COUNT (DISTINCT nombre_columna ) no es compatible con bases de datos de Microsoft Access. Firefox y Microsoft Edge utilizan Microsoft Access en nuestros ejemplos. Aquí está la solución para MS Access:
Ejemplo SELECT Count(*) AS DistinctCountries FROM (SELECT DISTINCT Country FROM Customers);
Inténtalo tú mismo "
Cláusula SQL WHERE Cláusula SQL WHERE La cláusula WHERE se utiliza para filtrar registros. La cláusula WHERE se utiliza para extraer sólo los registros que cumplen una condición especificada.
Sintaxis de WHERE SELECT column1, column2, ... FROM table_name WHERE condition;
Nota: La cláusula WHERE no sólo se utiliza en la instrucción SELECT, también se utiliza en UPDATE, DELETE declaración, etc!
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Ejemplo de cláusula WHERE La siguiente sentencia SQL selecciona todos los clientes del país "México", en la tabla "Clientes":
Ejemplo SELECT * FROM Customers WHERE Country='Mexico';
Inténtalo tú mismo "
Campos de texto vs campos numéricos SQL requiere comillas simples alrededor de valores de texto (la mayoría de los sistemas de base de datos también permitirán comillas dobles). Sin embargo, los campos numéricos no deben estar entre comillas:
Ejemplo SELECT * FROM Customers WHERE CustomerID=1;
Inténtalo tú mismo "
Operadores en la cláusula WHERE Los siguientes operadores se pueden utilizar en la cláusula WHERE:
Operator
Description
=
Equal
<>
Not equal. Note: In some versions of SQL this operator may be written as !=
>
Greater than
<
Less than
>=
Greater than or equal
<=
Less than or equal
BETWEEN
Between an inclusive range
LIKE
Search for a pattern
IN
To specify multiple possible values for a column
Operadores SQL AND, OR y NOT Los operadores SQL AND, OR y NOT La cláusula WHERE se puede combinar con los operadores AND, OR y NOT. Los operadores AND y OR se utilizan para filtrar registros basados en más de una condición:
El operador AND muestra un registro si todas las condiciones separadas por AND son TRUE. El operador OR muestra un registro si alguna de las condiciones separadas por OR es TRUE.
El operador NOT muestra un registro si la condición (s) no es VERDADERO.
Sintaxis AND SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;
OR Sintaxis SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 ...;
Sin sintaxis SELECT column1, column2, ... FROM table_name WHERE NOT condition;
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Y Ejemplo La instrucción SQL siguiente selecciona todos los campos de "Clientes" donde el país es "Alemania" Y la ciudad es "Berlín":
Ejemplo SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin';
Inténtalo tú mismo "
O Ejemplo La instrucción SQL siguiente selecciona todos los campos de "Clientes" donde la ciudad es "Berlín" O "München":
Ejemplo SELECT * FROM Customers WHERE City='Berlin' OR City='München';
Inténtalo tú mismo "
No ejemplo La instrucción SQL siguiente selecciona todos los campos de "Clientes" donde el país NO es "Alemania":
Ejemplo SELECT * FROM Customers WHERE NOT Country='Germany';
Inténtalo tú mismo "
Combinación de AND, OR y NOT También puede combinar los operadores AND, OR y NOT. La siguiente sentencia SQL selecciona todos los campos de "Clientes" donde el país es "Alemania" Y la ciudad debe ser "Berlín" O "München" (use paréntesis para formar expresiones complejas):
Ejemplo SELECT * FROM Customers WHERE Country='Germany' AND (City='Berlin' OR City='München');
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los campos de "Clientes" donde el país NO es "Alemania" y NO "EE. UU.":
Ejemplo SELECT * FROM Customers WHERE NOT Country='Germany' AND NOT Country='USA';
Inténtalo tú mismo "
SQL ORDER BY Palabra clave
El SQL ORDER BY Keyword La palabra ORDER BY se utiliza para ordenar el conjunto de resultados en orden ascendente o descendente. La palabra ORDER BY ordena los registros en orden ascendente por defecto. Para ordenar los registros en orden descendente, utilice la palabra clave DESC.
Sintaxis de ORDER BY SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Ejemplo de ORDER BY La instrucción SQL siguiente selecciona todos los clientes de la tabla "Clientes", ordenados por la columna "País":
Ejemplo SELECT * FROM Customers ORDER BY Country;
Inténtalo tú mismo "
ORDER BY DESC Ejemplo La instrucción SQL siguiente selecciona todos los clientes de la tabla "Customers", ordenados DESCENDING por la columna "Country":
Ejemplo SELECT * FROM Customers ORDER BY Country DESC;
Inténtalo tú mismo "
ORDER BY Ejemplo de varias columnas La siguiente sentencia SQL selecciona todos los clientes de la tabla "Clientes", ordenados por la columna "País" y "NombreDeCliente":
Ejemplo SELECT * FROM Customers ORDER BY Country, CustomerName;
Inténtalo tú mismo "
ORDER BY Varias columnas Ejemplo 2 La instrucción SQL siguiente selecciona todos los clientes de la tabla "Clientes", ordenados ascendiendo por el "País" y descendiendo por la columna "CustomerName":
Ejemplo SELECT * FROM Customers ORDER BY Country ASC, CustomerName DESC;
Inténtalo tú mismo "
Sentencia SQL INSERT INTO La instrucción SQL INSERT INTO La instrucción INSERT INTO se utiliza para insertar nuevos registros en una tabla.
Sintaxis INSERT INTO Es posible escribir la instrucción INSERT INTO de dos maneras. La primera forma especifica los nombres de columna y los valores a insertar: INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
Si está agregando valores para todas las columnas de la tabla, no es necesario especificar los nombres de columna en la consulta SQL. Sin embargo, asegúrese de que el orden de los valores esté en el mismo orden que las columnas de la tabla. La sintaxis INSERT INTO sería la siguiente: INSERT INTO table_name VALUES (value1, value2, value3, ...);
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
89
White Clover Markets
Karl Jablonski
305 - 14th Ave. S. Suite 3B
Seattle
98128
USA
90
Wilman Kala
Matti Karttunen
Keskuskatu 45
Helsinki
21240
Finland
91
Wolski
Zbyszek
ul. Filtrowa 68
Walla
01-012
Poland
INSERT INTO Ejemplo La siguiente instrucción SQL inserta un nuevo registro en la tabla "Clientes":
Ejemplo INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
Inténtalo tú mismo " La selección de la tabla "Clientes" se verá así:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
89
White Clover Markets
Karl Jablonski
305 - 14th Ave. S. Suite 3B
Seattle
98128
USA
90
Wilman Kala
Matti Karttunen
Keskuskatu 45
Helsinki
21240
Finland
91
Wolski
Zbyszek
ul. Filtrowa 68
Walla
01-012
Poland
92
Cardinal
Tom B. Erichsen
Skagen 21
Stavanger
4006
Norway
¿Notó que no insertamos ningún número en el campo CustomerID? La columna CustomerID es un campo de incremento automático y se generará automáticamente cuando se inserte un nuevo registro en la tabla.
Insertar datos sólo en columnas especificadas También es posible insertar datos en columnas específicas. La siguiente instrucción SQL insertará un nuevo registro, pero sólo insertará datos en las columnas "CustomerName", "City" y "Country" (CustomerID se actualizará automáticamente):
Ejemplo INSERT INTO Customers (CustomerName, City, Country) VALUES ('Cardinal', 'Stavanger', 'Norway');
Inténtalo tú mismo " La selección de la tabla "Clientes" se verá así:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
89
White Clover Markets
Karl Jablonski
305 - 14th Ave. S. Suite 3B
Seattle
98128
USA
90
Wilman Kala
Matti Karttunen
Keskuskatu 45
Helsinki
21240
Finland
91
Wolski
Zbyszek
ul. Filtrowa 68
Walla
01-012
Poland
92
Cardinal
null
null
Stavanger
null
Norway
SQL NULL Valores ¿Qué es un valor NULL? Un campo con un valor NULL es un campo sin valor.
Si un campo en una tabla es opcional, es posible insertar un nuevo registro o actualizar un registro sin agregar un valor a este campo. A continuación, el campo se guardará con un valor NULL. Nota: Es muy importante entender que un valor NULL es diferente de un valor cero o un campo que contiene espacios. ¡Un campo con un valor NULL es uno que se ha dejado en blanco durante la creación del registro!
Cómo probar valores NULL? No es posible probar valores NULL con operadores de comparación, como =, . En su lugar, tendremos que utilizar los operadores IS NULL y IS NOT NULL.
Sintaxis de IS NULL SELECT column_names FROM table_name WHERE column_name IS NULL;
Sintaxis de IS NOT NULL SELECT column_names FROM table_name WHERE column_name IS NOT NULL;
Demo Database Supongamos que tenemos la siguiente tabla de "Personas":
ID
LastName
FirstName
Address
City
1
Doe
John
542 W. 27th Street
New York
2
Bloggs
Joe
London
3
Roe
Jane
New York
4
Smith
John
110 Bishopsgate
London
Suponga que la columna "Dirección" de la tabla "Personas" es opcional. Si se inserta un registro sin valor para "Dirección", la columna "Dirección" se guardará con un valor NULL.
El operador IS NULL La instrucción SQL siguiente utiliza el operador IS NULL para enumerar todas las personas que no tienen dirección: SELECT LastName, FirstName, Address FROM Persons WHERE Address IS NULL;
El conjunto de resultados se verá así:
LastName
FirstName
Bloggs
Joe
Roe
Jane
Consejo: Siempre use IS NULL para buscar valores NULL.
Address
El operador IS NOT NULL La instrucción SQL siguiente utiliza el operador IS NOT NULL para enumerar todas las personas que tienen una dirección: SELECT LastName, FirstName, Address FROM Persons WHERE Address IS NOT NULL;
El conjunto de resultados se verá así:
LastName
FirstName
Address
Doe
John
542 W. 27th Street
Smith
John
110 Bishopsgate
Sentencia SQL UPDATE
La sentencia SQL UPDATE La instrucción UPDATE se utiliza para modificar los registros existentes en una tabla.
Sintaxis de UPDATE UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
Nota: ¡ Tenga cuidado al actualizar registros en una tabla! Observe la cláusula WHERE en la instrucción UPDATE. La cláusula WHERE especifica qué registro (s) que se debe actualizar. Si omite la cláusula WHERE, todos los registros de la tabla se actualizarán.
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Tabla de ACTUALIZACIÓN La siguiente instrucción SQL actualiza el primer cliente (CustomerID = 1) con una nueva persona de contacto y una nueva ciudad.
Ejemplo UPDATE Customers SET ContactName = 'Alfred Schmidt', City= 'Frankfurt' WHERE CustomerID = 1;
Inténtalo tú mismo " La selección de la tabla "Clientes" se verá así:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Alfred Schmidt
Obere Str. 57
Frankfurt
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
ACTUALIZAR varios registros Es la cláusula WHERE que determina cuántos registros se actualizarán. La instrucción SQL siguiente actualizará el nombre de contacto a "Juan" para todos los registros donde el país es "México":
Ejemplo UPDATE Customers SET ContactName='Juan' WHERE Country='Mexico';
Inténtalo tú mismo " La selección de la tabla "Clientes" se verá así:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Alfred Schmidt
Obere Str. 57
Frankfurt
12209
Germany
2
Ana Trujillo Emparedados y helados
Juan
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Juan
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Actualizar Aviso! Tenga cuidado al actualizar los registros. Si omite la cláusula WHERE, TODOS los registros se actualizarán!
Ejemplo UPDATE Customers SET ContactName='Juan';
Inténtalo tú mismo " La selección de la tabla "Clientes" se verá así:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Juan
Obere Str. 57
Frankfurt
12209
Germany
2
Ana Trujillo Emparedados y helados
Juan
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Juan
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Juan
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Juan
Berguvsvägen 8
Luleå
S-958 22
Sweden
Sentencia SQL DELETE La instrucción SQL DELETE La instrucción DELETE se utiliza para eliminar registros existentes en una tabla.
Sintaxis DELETE DELETE FROM table_name WHERE condition;
Nota: ¡ Tenga cuidado al eliminar registros en una tabla! Observe la cláusula WHERE en la instrucción DELETE. La cláusula WHERE especifica qué registros deben eliminarse. Si omite la cláusula WHERE, todos los registros de la tabla se eliminarán.
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Ejemplo SQL DELETE La siguiente instrucción SQL elimina al cliente "Alfreds Futterkiste" de la tabla "Clientes":
Ejemplo DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';
Inténtalo tú mismo " La tabla "Clientes" se verá así:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Eliminar todos los registros Es posible eliminar todas las filas de una tabla sin eliminar la tabla. Esto significa que la estructura de la tabla, los atributos y los índices estarán intactos: DELETE FROM table_name;
o: DELETE * FROM table_name;
Cláusula SQL TOP, LIMIT o ROWNUM
La cláusula SELECT TOP de SQL La cláusula SELECT TOP se utiliza para especificar el número de registros a devolver. La cláusula SELECT TOP es útil en tablas grandes con miles de registros. Devolver un gran número de registros puede tener un impacto en el rendimiento. Nota: No todos los sistemas de bases de datos admiten la cláusula SELECT TOP. MySQL admite la cláusula LIMIT para seleccionar un número limitado de registros, mientras que Oracle utiliza ROWNUM. Sintaxis de SQL Server / MS Access: SELECT TOP number|percent column_name(s) FROM table_name WHERE condition;
Sintaxis de MySQL: SELECT column_name(s) FROM table_name WHERE condition LIMIT number;
Sintaxis de Oracle: SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
SQL TOP, LIMIT y ROWNUM Ejemplos La siguiente instrucción SQL selecciona los tres primeros registros de la tabla "Clientes":
Ejemplo SELECT TOP 3 * FROM Customers;
Inténtalo tú mismo " La instrucción SQL siguiente muestra el ejemplo equivalente utilizando la cláusula LIMIT:
Ejemplo SELECT * FROM Customers LIMIT 3;
Inténtalo tú mismo " La instrucción SQL siguiente muestra el ejemplo equivalente utilizando ROWNUM:
Ejemplo SELECT * FROM Customers WHERE ROWNUM <= 3;
SQL TOP PERCENT Ejemplo La siguiente instrucción SQL selecciona el primer 50% de los registros de la tabla "Clientes":
Ejemplo SELECT TOP 50 PERCENT * FROM Customers;
Inténtalo tú mismo "
AÑADIR CLÁUSULA DE DÓNDE La instrucción SQL siguiente selecciona los tres primeros registros de la tabla "Clientes", donde el país es "Alemania":
Ejemplo SELECT TOP 3 * FROM Customers WHERE Country='Germany';
Inténtalo tú mismo " La instrucción SQL siguiente muestra el ejemplo equivalente utilizando la cláusula LIMIT:
Ejemplo SELECT * FROM Customers WHERE Country='Germany' LIMIT 3;
Inténtalo tú mismo " La instrucción SQL siguiente muestra el ejemplo equivalente utilizando ROWNUM:
Ejemplo SELECT * FROM Customers WHERE Country='Germany' AND ROWNUM <= 3;
Funciones SQL MIN () y MAX () Las funciones SQL MIN () y MAX () La función MIN () devuelve el valor más pequeño de la columna seleccionada. La función MAX () devuelve el valor más grande de la columna seleccionada.
MIN () Sintaxis SELECT MIN(column_name) FROM table_name WHERE condition;
Sintaxis MAX () SELECT MAX(column_name) FROM table_name WHERE condition;
Demo Database A continuación se muestra una selección de la tabla "Productos" de la base de datos de ejemplo Northwind:
ProductID
ProductName
SupplierID
CategoryID
Unit
Price
1
Chais
1
1
10 boxes x 20 bags
18
2
Chang
1
1
24 - 12 oz bottles
19
3
Aniseed Syrup
1
2
12 - 550 ml bottles
10
4
Chef Anton's Cajun Seasoning
2
2
48 - 6 oz jars
22
5
Chef Anton's Gumbo Mix
2
2
36 boxes
21.35
MIN () Ejemplo La instrucción SQL siguiente encuentra el precio del producto más barato:
Ejemplo SELECT MIN(Price) AS SmallestPrice FROM Products;
Inténtalo tú mismo "
MAX () Ejemplo La instrucción SQL siguiente encuentra el precio del producto más caro:
Ejemplo SELECT MAX(Price) AS LargestPrice FROM Products;
Inténtalo tú mismo "
SQL COUNT (), AVG () y SUM () Funciones Las funciones SQL COUNT (), AVG () y SUM () La función COUNT () devuelve el número de filas que coincide con un criterio especificado. La función AVG () devuelve el valor promedio de una columna numérica. La función SUM () devuelve la suma total de una columna numérica.
COUNT () Sintaxis SELECT COUNT(column_name) FROM table_name WHERE condition;
Sintaxis de AVG () SELECT AVG(column_name) FROM table_name WHERE condition;
Sintaxis SUM () SELECT SUM(column_name) FROM table_name WHERE condition;
Demo Database A continuación se muestra una selección de la tabla "Productos" de la base de datos de ejemplo Northwind:
ProductID
ProductName
SupplierID
CategoryID
Unit
Price
1
Chais
1
1
10 boxes x 20 bags
18
2
Chang
1
1
24 - 12 oz bottles
19
3
Aniseed Syrup
1
2
12 - 550 ml bottles
10
4
Chef Anton's Cajun Seasoning
2
2
48 - 6 oz jars
22
5
Chef Anton's Gumbo Mix
2
2
36 boxes
21.35
Ejemplo COUNT () La instrucción SQL siguiente encuentra el número de productos:
Ejemplo SELECT COUNT(ProductID) FROM Products;
Inténtalo tú mismo "
Ejemplo de AVG () La instrucción SQL siguiente encuentra el precio medio de todos los productos:
Ejemplo SELECT AVG(Price) FROM Products;
Inténtalo tú mismo "
Demo Database A continuación se muestra una selección de la tabla "OrderDetails" en la base de datos de ejemplo Northwind:
OrderDetailID
OrderID
ProductID
Quantity
1
10248
11
12
2
10248
42
10
3
10248
72
5
4
10249
14
9
5
10249
51
40
SUM () Ejemplo La siguiente instrucción SQL encuentra la suma de los campos "Cantidad" en la tabla "OrderDetails":
Ejemplo SELECT SUM(Quantity) FROM OrderDetails;
Inténtalo tú mismo "
Operador SQL LIKE El operador SQL LIKE El operador LIKE se utiliza en una cláusula WHERE para buscar un patrón especificado en una columna. Hay dos comodines utilizados junto con el operador LIKE:
% - El signo de porcentaje representa cero, uno o varios caracteres _ - El subrayado representa un solo carácter
Nota: MS Access utiliza un signo de interrogación (?) En lugar del subrayado (_). El signo de porcentaje y el subrayado también se pueden utilizar en combinaciones!
Sintaxis de LIKE SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern;
Sugerencia: También puede combinar cualquier número de condiciones con los operadores AND u OR. Estos son algunos ejemplos que muestran diferentes operadores LIKE con comodines '%' y '_':
LIKE Operator
Description
WHERE CustomerName LIKE 'a%'
Finds any values that starts with "a"
WHERE CustomerName LIKE '%a'
Finds any values that ends with "a"
WHERE CustomerName LIKE '%or%'
Finds any values that have "or" in any position
WHERE CustomerName LIKE '_r%'
Finds any values that have "r" in the second position
WHERE CustomerName LIKE 'a_%_%'
Finds any values that starts with "a" and are at least 3 characters in length
WHERE ContactName LIKE 'a%o'
Finds any values that starts with "a" and ends with "o"
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Ejemplos de SQL LIKE La instrucción SQL siguiente selecciona todos los clientes con un CustomerName que comienza con "a":
Ejemplo SELECT * FROM Customers WHERE CustomerName LIKE 'a%';
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes con un CustomerName que termina con "a":
Ejemplo SELECT * FROM Customers WHERE CustomerName LIKE '%a';
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes con un CustomerName que tiene "o" en cualquier posición:
Ejemplo SELECT * FROM Customers WHERE CustomerName LIKE '%or%';
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes con un CustomerName que tienen "r" en la segunda posición:
Ejemplo SELECT * FROM Customers WHERE CustomerName LIKE '_r%';
Inténtalo tú mismo "
La instrucción SQL siguiente selecciona todos los clientes con un CustomerName que comienza con "a" y tiene por lo menos 3 caracteres de longitud:
Ejemplo SELECT * FROM Customers WHERE CustomerName LIKE 'a_%_%';
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes con un ContactName que comienza con "a" y termina con "o":
Ejemplo SELECT * FROM Customers WHERE ContactName LIKE 'a%o';
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes con un CustomerName que NO empiece con "a":
Ejemplo SELECT * FROM Customers WHERE CustomerName NOT LIKE 'a%';
Inténtalo tú mismo "
Caracteres comodín de SQL
Caracteres comodín de SQL Un carácter comodín se utiliza para sustituir cualquier otro carácter (s) en una cadena. Los caracteres comodín se utilizan con el operador SQL LIKE . El operador LIKE se utiliza en una cláusula WHERE para buscar un patrón especificado en una columna. Hay dos comodines utilizados junto con el operador LIKE:
% - El signo de porcentaje representa cero, uno o varios caracteres _ - El subrayado representa un solo carácter
Nota: MS Access utiliza un signo de interrogación (?) En lugar del subrayado (_). En MS Access y SQL Server también puede utilizar:
[ charlist ] - Define conjuntos y rangos de caracteres para coincidir [^ charlist ] o [! charlist ] - Define conjuntos y rangos de caracteres NO coincidentes
Los comodines también se pueden utilizar en combinaciones! Estos son algunos ejemplos que muestran diferentes operadores LIKE con comodines '%' y '_':
LIKE Operator
Description
WHERE CustomerName LIKE 'a%'
Finds any values that starts with "a"
WHERE CustomerName LIKE '%a'
Finds any values that ends with "a"
WHERE CustomerName LIKE '%or%'
Finds any values that have "or" in any position
WHERE CustomerName LIKE '_r%'
Finds any values that have "r" in the second position
WHERE CustomerName LIKE 'a_%_%'
Finds any values that starts with "a" and are at least 3 characters in length
WHERE ContactName LIKE 'a%o'
Finds any values that starts with "a" and ends with "o"
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Uso del comodín% La instrucción SQL siguiente selecciona todos los clientes con una ciudad que comienza con "ber":
Ejemplo SELECT * FROM Customers WHERE City LIKE 'ber%';
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes con una ciudad que contiene el patrón "es":
Ejemplo SELECT * FROM Customers WHERE City LIKE '%es%';
Inténtalo tú mismo "
Uso del comodín La instrucción SQL siguiente selecciona todos los clientes con una ciudad que comienza con cualquier carácter, seguido de "erlin":
Ejemplo SELECT * FROM Customers WHERE City LIKE '_erlin';
Inténtalo tú mismo " La instrucción SQL siguiente selecciona a todos los clientes con una Ciudad que comienza con "L", seguido de cualquier carácter seguido de "n", seguido de cualquier carácter, seguido de "on":
Ejemplo SELECT * FROM Customers WHERE City LIKE 'L_n_on';
Inténtalo tú mismo "
Uso del comodín [charlist] La instrucción SQL siguiente selecciona todos los clientes con una ciudad que comienza con "b", "s" o "p":
Ejemplo SELECT * FROM Customers WHERE City LIKE '[bsp]%';
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes con una ciudad que comienza con "a", "b" o "c":
Ejemplo SELECT * FROM Customers WHERE City LIKE '[a-c]%';
Inténtalo tú mismo "
Uso del comodín [! Charlist] Las dos sentencias SQL siguientes seleccionan a todos los clientes con una Ciudad que NO empieza con "b", "s" o "p":
Ejemplo SELECT * FROM Customers WHERE City LIKE '[!bsp]%';
Inténtalo tú mismo " O:
Ejemplo SELECT * FROM Customers WHERE City NOT LIKE '[bsp]%';
Inténtalo tú mismo "
SQL IN Operador
El operador SQL IN El operador IN le permite especificar varios valores en una cláusula WHERE. El operador IN es una abreviatura para varias condiciones OR.
Sintaxis de IN SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...);
o: SELECT column_name(s) FROM table_name WHERE column_name IN (SELECT STATEMENT);
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Ejemplos de operadores La instrucción SQL siguiente selecciona todos los clientes que se encuentran en "Alemania", "Francia" y "Reino Unido":
Ejemplo SELECT * FROM Customers WHERE Country IN ('Germany', 'France', 'UK');
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes que NO se encuentran en "Alemania", "Francia" o "Reino Unido":
Ejemplo SELECT * FROM Customers WHERE Country NOT IN ('Germany', 'France', 'UK');
Inténtalo tú mismo " La instrucción SQL siguiente selecciona todos los clientes que son de los mismos países que los proveedores:
Ejemplo SELECT * FROM Customers WHERE Country IN (SELECT Country FROM Suppliers);
Inténtalo tú mismo "
SQL ENTRE Operador El operador SQL BETWEEN El operador BETWEEN selecciona valores dentro de un rango determinado. Los valores pueden ser números, texto o fechas. El operador BETWEEN es inclusivo: los valores de inicio y final están incluidos.
ENTRE Sintaxis SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
Demo Database A continuación se muestra una selección de la tabla "Productos" de la base de datos de ejemplo Northwind:
ProductID
ProductName
SupplierID
CategoryID
Unit
Price
1
Chais
1
1
10 boxes x 20 bags
18
2
Chang
1
1
24 - 12 oz bottles
19
3
Aniseed Syrup
1
2
12 - 550 ml bottles
10
4
Chef Anton's Cajun Seasoning
1
2
48 - 6 oz jars
22
5
Chef Anton's Gumbo Mix
1
2
36 boxes
21.35
ENTRE Ejemplo La instrucción SQL siguiente selecciona todos los productos con un precio ENTRE 10 y 20:
Ejemplo SELECT * FROM Products WHERE Price BETWEEN 10 AND 20;
Inténtalo tú mismo "
NO ENTRE Ejemplo Para mostrar los productos fuera del rango del ejemplo anterior, utilice NOT BETWEEN:
Ejemplo SELECT * FROM Products WHERE Price NOT BETWEEN 10 AND 20;
Inténtalo tú mismo "
ENTRE con el Ejemplo IN La instrucción SQL siguiente selecciona todos los productos con un precio ENTRE 10 y 20. Además, no muestran productos con un ID de categoría de 1,2 o 3:
Ejemplo SELECT * FROM Products WHERE (Price BETWEEN 10 AND 20) AND NOT CategoryID IN (1,2,3);
Inténtalo tú mismo "
Ejemplo entre valores de texto La siguiente sentencia SQL selecciona todos los productos con un ProductName ENTRE 'Carnarvon Tigers' y 'Mozzarella di Giovanni':
Ejemplo SELECT * FROM Products WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni' ORDER BY ProductName;
Inténtalo tú mismo "
NO ENTRE Valores de texto Ejemplo La siguiente sentencia SQL selecciona todos los productos con un ProductName NO ENTRE 'Carnarvon Tigers' y 'Mozzarella di Giovanni':
Ejemplo SELECT * FROM Products WHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni' ORDER BY ProductName;
Inténtalo tú mismo "
Tabla de muestras A continuación se muestra una selección de la tabla "Pedidos" en la base de datos de ejemplo Northwind:
OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10248
90
5
7/4/1996
3
10249
81
6
7/5/1996
1
10250
34
4
7/8/1996
2
10251
84
3
7/9/1996
1
10252
76
4
7/10/1996
2
ENTRE Ejemplo de fechas La siguiente instrucción SQL selecciona todos los pedidos con un OrderDate BETWEEN '04 -July-1996 'y '09 -July-1996':
Ejemplo SELECT * FROM Orders WHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996#;
Inténtalo tú mismo "
Alias de SQL Alias de SQL Los alias SQL se usan para dar una tabla, o una columna en una tabla, un nombre temporal. Los alias se utilizan a menudo para hacer que los nombres de columnas sean más legibles. Un alias sólo existe para la duración de la consulta.
Sintaxis de la columna Alias SELECT column_name AS alias_name FROM table_name;
Sintaxis de tabla de alias SELECT column_name(s) FROM table_name AS alias_name;
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida. A continuación se muestra una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
Y una selección de la mesa "Pedidos":
OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10354
58
8
1996-11-14
3
10355
4
6
1996-11-15
1
10356
86
6
1996-11-18
2
Alias para ejemplos de columnas La siguiente instrucción SQL crea dos alias, uno para la columna CustomerID y otro para la columna CustomerName:
Ejemplo SELECT CustomerID as ID, CustomerName AS Customer FROM Customers;
Inténtalo tú mismo " La instrucción SQL siguiente crea dos alias, uno para la columna CustomerName y otro para la columna ContactName. Nota: Requiere comillas dobles o corchetes si el nombre de alias contiene espacios:
Ejemplo SELECT CustomerName AS Customer, ContactName AS [Contact Person] FROM Customers;
Inténtalo tú mismo " La instrucción SQL siguiente crea un alias denominado "Address" que combina cuatro columnas (Address, PostalCode, City y Country):
Ejemplo SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address FROM Customers;
Inténtalo tú mismo " Nota: Para obtener la sentencia SQL anterior para trabajar en MySQL, utilice lo siguiente:
SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS Address FROM Customers;
Ejemplo de alias para tablas La instrucción SQL siguiente selecciona todos los pedidos del cliente con CustomerID = 4 (Around the Horn). Utilizamos las tablas "Clientes" y "Órdenes", y les damos los alias de tabla de "c" y "o" respectivamente (Aquí usamos alias para hacer que el SQL sea más corto):
Ejemplo SELECT o.OrderID, o.OrderDate, c.CustomerName FROM Customers AS c, Orders AS o WHERE c.CustomerName="Around the Horn" AND c.CustomerID=o.CustomerID;
Inténtalo tú mismo " La siguiente instrucción SQL es la misma que la anterior, pero sin alias:
Ejemplo SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName FROM Customers, Orders WHERE Customers.CustomerName="Around the Horn" ANDCustomers.CustomerID=Orders.CustomerID;
Inténtalo tú mismo "
Los alias pueden ser útiles cuando:
Hay más de una tabla implicada en una consulta Las funciones se utilizan en la consulta Los nombres de las columnas son grandes o no son muy legibles Se combinan dos o más columnas
SQL se une SQL JOIN Una cláusula JOIN se utiliza para combinar filas de dos o más tablas, en función de una columna relacionada entre ellas. Veamos una selección de la tabla "Pedidos":
OrderID
CustomerID
OrderDate
10308
2
1996-09-18
10309
37
1996-09-19
10310
77
1996-09-20
A continuación, consulte una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Country
1
Alfreds Futterkiste
Maria Anders
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mexico
Observe que la columna "CustomerID" en la tabla "Orders" se refiere al "CustomerID" en la tabla "Customers". La relación entre las dos tablas anteriores es la columna "CustomerID". A continuación, podemos crear la siguiente sentencia SQL (que contiene una INNER JOIN), que selecciona registros que tienen valores coincidentes en ambas tablas:
Ejemplo SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
Inténtalo tú mismo " y producirá algo como esto:
OrderID
CustomerName
OrderDate
10308
Ana Trujillo Emparedados y helados
9/18/1996
10365
Antonio Moreno Taquería
11/27/1996
10383
Around the Horn
12/16/1996
10355
Around the Horn
11/15/1996
10278
Berglunds snabbköp
8/12/1996
Diferentes tipos de SQL JOIN Estos son los diferentes tipos de JOIN en SQL:
(INNER) JOIN : Devuelve registros que tienen valores coincidentes en ambas tablas LEFT (OUTER) JOIN : Devuelve todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha RIGHT (OUTER) JOIN : Devuelve todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda FULL (OUTER) JOIN : Devuelve todos los registros cuando hay una coincidencia en la tabla izquierda o derecha
SQL INNER JOIN Palabra clave ❮ Anterior
Siguiente ❯
SQL INNER JOIN Palabra clave La palabra clave INNER JOIN selecciona registros que tienen valores coincidentes en ambas tablas.
Sintaxis de INNER JOIN SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida. A continuación se muestra una selección de la tabla "Pedidos":
OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10308
2
7
1996-09-18
3
10309
37
3
1996-09-19
1
10310
77
8
1996-09-20
2
Y una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
Ejemplo SQL INNER JOIN La instrucción SQL siguiente selecciona todos los pedidos con información del cliente:
Ejemplo SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Inténtalo tú mismo " Nota: La palabra clave INNER JOIN selecciona todas las filas de ambas tablas siempre y cuando haya una coincidencia entre las columnas. Si hay registros en la tabla "Pedidos" que no tienen coincidencias en "Clientes", ¡estos pedidos no se mostrarán!
JOIN Tres tablas La siguiente sentencia de SQL selecciona todos los pedidos con información del cliente y del remitente:
Ejemplo SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName FROM ((Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID) INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);
Inténtalo tú mismo "
SQL LEFT JOIN Palabra clave ❮ Anterior
Siguiente ❯
SQL LEFT JOIN Palabra clave La palabra clave LEFT JOIN devuelve todos los registros de la tabla izquierda (tabla1) y los registros coincidentes de la tabla derecha (tabla2). El resultado es NULL desde el lado derecho, si no hay coincidencia.
Sintaxis de LEFT JOIN SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
Nota: En algunas bases de datos LEFT JOIN se denomina LEFT OUTER JOIN.
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida. A continuación se muestra una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
Y una selección de la mesa "Pedidos":
OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10308
2
7
1996-09-18
3
10309
37
3
1996-09-19
1
10310
77
8
1996-09-20
2
SQL LEFT JOIN Ejemplo La siguiente sentencia de SQL seleccionará a todos los clientes y cualquier pedido que tenga:
Ejemplo SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY Customers.CustomerName;
Inténtalo tú mismo " Nota: La palabra clave LEFT JOIN devuelve todos los registros de la tabla izquierda (clientes), incluso si no hay coincidencias en la tabla derecha (órdenes).
SQL RIGHT JOIN Palabra clave ❮ Anterior
Siguiente ❯
SQL RIGHT JOIN Palabra clave La palabra clave RIGHT JOIN devuelve todos los registros de la tabla derecha (tabla2) y los registros coincidentes de la tabla izquierda (tabla1). El resultado es NULL del lado izquierdo, cuando no hay coincidencia.
Sintaxis RIGHT JOIN SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
Nota: En algunas bases de datos RIGHT JOIN se llama RIGHT OUTER JOIN.
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida.
A continuación se muestra una selección de la tabla "Pedidos":
OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10308
2
7
1996-09-18
3
10309
37
3
1996-09-19
1
10310
77
8
1996-09-20
2
Y una selección de la tabla "Empleados":
EmployeeID
LastName
FirstName
BirthDate
Photo
1
Davolio
Nancy
12/8/1968
EmpID1.pic
2
Fuller
Andrew
2/19/1952
EmpID2.pic
3
Leverling
Janet
8/30/1963
EmpID3.pic
Ejemplo SQL RIGHT JOIN La sentencia SQL siguiente devolverá todos los empleados y los pedidos que hayan realizado:
Ejemplo SELECT Orders.OrderID, Employees.LastName, Employees.FirstName FROM Orders RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID ORDER BY Orders.OrderID;
Inténtalo tú mismo " Nota: La palabra clave RIGHT JOIN devuelve todos los registros de la tabla derecha (Empleados), incluso si no hay coincidencias en la tabla izquierda (Órdenes).
SQL FULL OUTER JOIN Palabra clave ❮ Anterior
Siguiente ❯
SQL FULL OUTER JOIN Palabra clave La palabra clave FULL OUTER JOIN devuelve todos los registros cuando hay una coincidencia en registros de tabla izquierda (tabla1) o derecha (tabla2). Nota: FULL OUTER JOIN puede potencialmente devolver conjuntos de resultados muy grandes.
FULL OUTER JOIN Sintaxis SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida. A continuación se muestra una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
Y una selección de la mesa "Pedidos":
OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10308
2
7
1996-09-18
3
10309
37
3
1996-09-19
1
10310
77
8
1996-09-20
2
SQL FULL OUTER JOIN Ejemplo La instrucción SQL siguiente selecciona todos los clientes y todos los pedidos: SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName;
Una selección del conjunto de resultados puede tener este aspecto:
CustomerName
OrderID
Alfreds Futterkiste
Ana Trujillo Emparedados y helados
10308
Antonio Moreno Taquería
10365
10382
10351
Nota: La palabra clave FULL OUTER JOIN devuelve todas las filas de la tabla izquierda (clientes) y todas las filas de la tabla derecha (órdenes). Si hay filas en "Clientes" que no tienen coincidencias en "Pedidos", o si hay filas en "Pedidos" que no tienen coincidencias en "Clientes", esas filas también aparecerán.
SQL Self JOIN ❮ Anterior
Siguiente ❯
SQL Self JOIN Una JOIN autónoma es una combinación regular, pero la tabla se une con ella misma.
Sintaxis de JOIN autónomo SELECT column_name(s) FROM table1 T1, table1 T2 WHERE condition;
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida. A continuación se muestra una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Ejemplo SQL Self JOIN La instrucción SQL siguiente coincide con los clientes que son de la misma ciudad:
Ejemplo SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2,A.City FROM Customers A, Customers B WHERE A.CustomerID <> B.CustomerID AND A.City = B.City ORDER BY A.City;
Inténtalo tú mismo "
Operador SQL UNION ❮ Anterior
Siguiente ❯
Mexico
El operador SQL UNION El operador UNION se utiliza para combinar el conjunto de resultados de dos o más instrucciones SELECT.
Cada sentencia SELECT dentro de UNION debe tener el mismo número de columnas Las columnas también deben tener tipos de datos similares Las columnas de cada instrucción SELECT también deben estar en el mismo orden
Sintaxis de UNION SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
UNION ALL Sintaxis El operador UNION selecciona únicamente valores distintos de forma predeterminada. Para permitir valores duplicados, utilice UNION ALL: SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
Nota: Los nombres de columnas en el conjunto de resultados suelen ser iguales a los nombres de columnas en la primera sentencia SELECT de UNION.
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida. A continuación se muestra una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
Y una selección de la tabla "Proveedores":
SupplierID
SupplierName
ContactName
Address
City
PostalCode
Country
1
Exotic Liquid
Charlotte Cooper
49 Gilbert St.
London
EC1 4SD
UK
2
New Orleans Cajun Delights
Shelley Burke
P.O. Box 78934
New Orleans
70117
USA
3
Grandma Kelly's Homestead
Regina Murphy
707 Oxford Rd.
Ann Arbor
48104
USA
Ejemplo de SQL UNION La siguiente sentencia SQL selecciona todas las ciudades diferentes (sólo valores distintos) de "Clientes" y "Proveedores":
Ejemplo SELECT City FROM Customers UNION SELECT City FROM Suppliers ORDER BY City;
Inténtalo tú mismo " Nota: Si algunos clientes o proveedores tienen la misma ciudad, cada ciudad sólo se enumerará una vez, porque UNION selecciona sólo valores distintos. ¡Utilice UNION ALL para seleccionar también valores duplicados!
SQL UNION ALL Ejemplo La instrucción SQL siguiente selecciona todas las ciudades (valores duplicados también) de "Clientes" y "Proveedores":
Ejemplo SELECT City FROM Customers UNION ALL
SELECT City FROM Suppliers ORDER BY City;
Inténtalo tú mismo "
SQL UNION Con DONDE La siguiente sentencia SQL selecciona todas las ciudades alemanas diferentes (sólo valores distintos) de "Clientes" y "Proveedores":
Ejemplo SELECT City, Country FROM Customers WHERE Country='Germany' UNION SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City;
Inténtalo tú mismo "
SQL UNION TODOS Con DONDE La siguiente sentencia SQL selecciona todas las ciudades alemanas (valores duplicados también) de "Clientes" y "Proveedores":
Ejemplo SELECT City, Country FROM Customers WHERE Country='Germany' UNION ALL SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City;
Inténtalo tú mismo "
Otro ejemplo de UNIÓN La siguiente instrucción SQL enumera a todos los clientes y proveedores:
Ejemplo SELECT 'Customer' As Type, ContactName, City, Country FROM Customers UNION
SELECT 'Supplier', ContactName, City, Country FROM Suppliers;
Inténtalo tú mismo "
SQL Self JOIN ❮ Anterior
Siguiente ❯
SQL Self JOIN Una JOIN autónoma es una combinación regular, pero la tabla se une con ella misma.
Sintaxis de JOIN autónomo SELECT column_name(s) FROM table1 T1, table1 T2 WHERE condition;
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida. A continuación se muestra una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
Ejemplo SQL Self JOIN La instrucción SQL siguiente coincide con los clientes que son de la misma ciudad:
Ejemplo SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2,A.City FROM Customers A, Customers B WHERE A.CustomerID <> B.CustomerID AND A.City = B.City ORDER BY A.City;
Inténtalo tú mismo "
Sentencia SQL GROUP BY ❮ Anterior
Siguiente ❯
La sentencia SQL GROUP BY La sentencia GROUP BY se utiliza a menudo con funciones agregadas (COUNT, MAX, MIN, SUM, AVG) para agrupar el conjunto de resultados por una o más columnas.
Sintaxis GROUP BY SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
Ejemplos de SQL GROUP BY La siguiente instrucción SQL enumera el número de clientes en cada país:
Ejemplo SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country;
Inténtalo tú mismo " La siguiente instrucción SQL enumera el número de clientes en cada país, ordenados de alto a bajo:
Ejemplo SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country ORDER BY COUNT(CustomerID) DESC;
Inténtalo tú mismo "
Demo Database A continuación se muestra una selección de la tabla "Pedidos" en la base de datos de ejemplo Northwind:
OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10248
90
5
1996-07-04
3
10249
81
6
1996-07-05
1
10250
34
4
1996-07-08
2
Y una selección de la tabla "Shippers":
ShipperID
ShipperName
1
Speedy Express
2
United Package
3
Federal Shipping
GROUP BY con JOIN Ejemplo La siguiente instrucción SQL enumera el número de órdenes enviadas por cada remitente:
Ejemplo SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROMOrders LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID GROUP BY ShipperName;
Inténtalo tú mismo "
SQL HAVING Cláusula ❮ Anterior
Siguiente ❯
La cláusula SQL HAVING La cláusula HAVING se agregó a SQL porque la palabra clave WHERE no se podía utilizar con funciones agregadas.
Teniendo sintaxis SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s);
Demo Database A continuación se muestra una selección de la tabla "Customers" en la base de datos de ejemplo Northwind:
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
4
Around the Horn
Thomas Hardy
120 Hanover Sq.
London
WA1 1DP
UK
5
Berglunds snabbköp
Christina Berglund
Berguvsvägen 8
Luleå
S-958 22
Sweden
SQL HAVING Ejemplos La instrucción SQL siguiente enumera el número de clientes en cada país. Sólo se incluyen países con más de 5 clientes:
Ejemplo SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 5;
Inténtalo tú mismo " La siguiente instrucción SQL enumera el número de clientes en cada país, ordenados de alto a bajo (sólo incluyen países con más de 5 clientes):
Ejemplo SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 5 ORDER BY COUNT(CustomerID) DESC;
Inténtalo tú mismo "
Demo Database A continuación se muestra una selección de la tabla "Pedidos" en la base de datos de ejemplo Northwind:
OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10248
90
5
1996-07-04
3
10249
81
6
1996-07-05
1
10250
34
4
1996-07-08
2
Y una selección de la tabla "Empleados":
EmployeeID
LastName
FirstName
BirthDate
Photo
Notes
1
Davolio
Nancy
1968-12-08
EmpID1.pic
Education includes a BA....
2
Fuller
Andrew
1952-02-19
EmpID2.pic
Andrew received his BTS....
3
Leverling
Janet
1963-08-30
EmpID3.pic
Janet has a BS degree....
Más HAVING Ejemplos La instrucción SQL siguiente enumera los empleados que han registrado más de 10 órdenes:
Ejemplo SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
GROUP BY LastName HAVING COUNT(Orders.OrderID) > 10;
Inténtalo tú mismo " La siguiente instrucción SQL indica si los empleados "Davolio" o "Fuller" han registrado más de 25 pedidos:
Ejemplo SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID WHERE LastName = 'Davolio' OR LastName = 'Fuller' GROUP BY LastName HAVING COUNT(Orders.OrderID) > 25;
Inténtalo tú mismo "
El operador SQL EXISTS ❮ Anterior
Siguiente ❯
El operador SQL EXISTS El operador EXISTS se utiliza para probar la existencia de cualquier registro en una subconsulta.
El operador EXISTS devuelve true si la subconsulta devuelve uno o más registros.
EXISTS Sintaxis SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);
Demo Database A continuación se muestra una selección de la tabla "Productos" de la base de datos de ejemplo Northwind:
ProductID
ProductName
SupplierID
CategoryID
Unit
Price
1
Chais
1
1
10 boxes x 20 bags
18
2
Chang
1
1
24 - 12 oz bottles
19
3
Aniseed Syrup
1
2
12 - 550 ml bottles
10
4
Chef Anton's Cajun Seasoning
2
2
48 - 6 oz jars
22
5
Chef Anton's Gumbo Mix
2
2
36 boxes
21.35
Y una selección de la tabla "Proveedores":
SupplierID
SupplierName
ContactName
Address
City
PostalCode
Country
1
Exotic Liquid
Charlotte Cooper
49 Gilbert St.
London
EC1 4SD
UK
2
New Orleans Cajun Delights
Shelley Burke
P.O. Box 78934
New Orleans
70117
USA
3
Grandma Kelly's Homestead
Regina Murphy
707 Oxford Rd.
Ann Arbor
48104
USA
4
Tokyo Traders
Yoshi Nagase
9-8 Sekimai Musashino-shi
Tokyo
100
Japan
Ejemplos de SQL EXISTS La instrucción SQL siguiente devuelve TRUE y muestra los proveedores con un precio de producto inferior a 20:
Ejemplo SELECT SupplierName FROM Suppliers WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId = Suppliers.supplierId AND Price < 20);
Inténtalo tú mismo " La sentencia SQL siguiente devuelve TRUE y lista a los proveedores con un precio del producto igual a 22:
Ejemplo SELECT SupplierName FROM Suppliers WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId = Suppliers.supplierId AND Price = 22);
Inténtalo tú mismo "
SQL ANY y TODOS los operadores ❮ Anterior
Siguiente ❯
Los operadores SQL ANY y ALL Los operadores ANY y ALL se utilizan con una cláusula WHERE o HAVING. El operador ANY devuelve true si cualquiera de los valores de subconsulta cumple con la condición. El operador ALL devuelve true si todos los valores de subconsulta cumplen la condición.
CUALQUIER Sintaxis SELECT column_name(s) FROM table_name
WHERE column_name operator ANY (SELECT column_name FROM table_name WHERE condition);
Sintaxis ALL SELECT column_name(s) FROM table_name WHERE column_name operator ALL (SELECT column_name FROM table_name WHERE condition);
Nota: El operador debe ser un operador de comparación estándar (=, <>,! =,>,> =, <, O <=).
Demo Database A continuación se muestra una selección de la tabla "Productos" de la base de datos de ejemplo Northwind:
ProductID
ProductName
SupplierID
CategoryID
Unit
Price
1
Chais
1
1
10 boxes x 20 bags
18
2
Chang
1
1
24 - 12 oz bottles
19
3
Aniseed Syrup
1
2
12 - 550 ml bottles
10
4
Chef Anton's Cajun Seasoning
2
2
48 - 6 oz jars
22
5
Chef Anton's Gumbo Mix
2
2
36 boxes
21.35
Y una selección de la tabla "OrderDetails":
OrderDetailID
OrderID
ProductID
Quantity
1
10248
11
12
2
10248
42
10
3
10248
72
5
4
10249
14
9
5
10249
51
40
SQL ANY Ejemplos El operador ANY devuelve TRUE si alguno de los valores de subconsulta cumple con la condición. La instrucción SQL siguiente devuelve TRUE y lista los nombres de producto si encuentra registros ANY en la tabla OrderDetails que cantidad = 10:
Ejemplo SELECT ProductName FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
Inténtalo tú mismo " La instrucción SQL siguiente devuelve TRUE y lista los nombres de producto si encuentra registros ANY en la tabla OrderDetails que cantidad> 99:
Ejemplo SELECT ProductName FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);
Inténtalo tú mismo "
Ejemplo de SQL ALL El operador ALL devuelve TRUE si todos los valores de subconsulta cumplen la condición. La sentencia SQL siguiente devuelve TRUE y lista los nombres de producto si TODOS los registros de la tabla OrderDetails tienen quantity = 10:
Ejemplo SELECT ProductName FROM Products WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
Inténtalo tú mismo "
Sentencia SQL SELECT INTO ❮ Anterior
Siguiente ❯
La sentencia SQL SELECT INTO La sentencia SELECT INTO copia los datos de una tabla en una nueva tabla.
SELECT INTO Sintaxis Copiar todas las columnas en una nueva tabla: SELECT * INTO newtable [IN externaldb] FROM oldtable WHERE condition;
Copie sólo algunas columnas en una nueva tabla: SELECT column1, column2, column3, ... INTO newtable [IN externaldb] FROM oldtable WHERE condition;
La nueva tabla se creará con los nombres de columna y los tipos definidos en la tabla antigua. Puede crear nuevos nombres de columna utilizando la cláusula AS.
Ejemplos de SQL SELECT INTO La instrucción SQL siguiente crea una copia de seguridad de clientes: SELECT * INTO CustomersBackup2017 FROM Customers;
La instrucción SQL siguiente utiliza la cláusula IN para copiar la tabla en una tabla nueva en otra base de datos: SELECT * INTO CustomersBackup2017 IN 'Backup.mdb' FROM Customers;
La siguiente instrucción SQL copia sólo unas pocas columnas en una nueva tabla: SELECT CustomerName, ContactName INTO CustomersBackup2017 FROM Customers;
La instrucción SQL siguiente copia sólo los clientes alemanes en una nueva tabla: SELECT * INTO CustomersGermany FROM Customers WHERE Country = 'Germany';
La instrucción SQL siguiente copia datos de más de una tabla en una nueva tabla: SELECT Customers.CustomerName, Orders.OrderID INTO CustomersOrderBackup2017 FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
Sugerencia: SELECT INTO también se puede usar para crear una nueva tabla vacía utilizando el esquema de otro. Simplemente agregue una cláusula WHERE que hace que la consulta no devuelva datos: SELECT * INTO newtable FROM oldtable WHERE 1 = 0;
Sentencia SQL INSERT INTO SELECT ❮ Anterior
Siguiente ❯
La instrucción SQL INSERT INTO SELECT La sentencia INSERT INTO SELECT copia los datos de una tabla y los inserta en otra tabla.
INSERT INTO SELECT requiere que los tipos de datos en las tablas de origen y destino coincidan Los registros existentes en la tabla de destino no se ven afectados
Sintaxis de INSERT INTO SELECT Copiar todas las columnas de una tabla a otra tabla: INSERT INTO table2 SELECT * FROM table1 WHERE condition;
Copie sólo algunas columnas de una tabla en otra tabla: INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition;
Demo Database En este tutorial usaremos la base de datos de ejemplo Northwind bien conocida. A continuación se muestra una selección de la tabla "Clientes":
CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico
Y una selección de la tabla "Proveedores":
SupplierID
SupplierName
ContactName
Address
City
Postal Code
Country
1
Exotic Liquid
Charlotte Cooper
49 Gilbert St.
Londona
EC1 4SD
UK
2
New Orleans Cajun Delights
Shelley Burke
P.O. Box 78934
New Orleans
70117
USA
3
Grandma Kelly's Homestead
Regina Murphy
707 Oxford Rd.
Ann Arbor
48104
USA
Ejemplos de SQL INSERT INTO SELECT La siguiente instrucción SQL copia "Proveedores" en "Clientes" (las columnas que no se rellenan con datos, contendrán NULL):
Ejemplo INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers;
Inténtalo tú mismo " La siguiente instrucción SQL copia "Proveedores" en "Clientes" (rellenar todas las columnas):
Ejemplo INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
Inténtalo tú mismo " La instrucción SQL siguiente copia sólo a los proveedores alemanes en "Clientes":
Ejemplo INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers WHERE Country='Germany';
Inténtalo tú mismo "
SQL NULL Funciones
❮ Anterior
Siguiente ❯
SQL IFNULL (), ISNULL (), COALESCE () y NVL () Funciones Vea la siguiente tabla "Productos":
P_Id
ProductName
UnitPrice
UnitsInStock
UnitsOnOrder
1
Jarlsberg
10.45
16
15
2
Mascarpone
32.56
23
3
Gorgonzola
15.67
9
Suponga que la columna "UnitsOnOrder" es opcional y puede contener valores NULL.
20
Observe la siguiente sentencia SELECT: SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder) FROM Products;
En el ejemplo anterior, si alguno de los valores "UnitsOnOrder" es NULL, el resultado será NULL.
Soluciones MySQL La función MySQL IFNULL () le permite devolver un valor alternativo si una expresión es NULL: SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0)) FROM Products
o podemos utilizar la función COALESCE () , como esto: SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0)) FROM Products
servidor SQL La función ISNULL () de SQL Server le permite devolver un valor alternativo cuando una expresión es NULL: SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0)) FROM Products
MS Access La función MS Access IsNull () devuelve TRUE (-1) si la expresión es un valor nulo, de lo contrario FALSE (0): SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder)) FROM Products
Oráculo La función de Oracle NVL () logra el mismo resultado: SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0)) FROM Products
Comentarios de SQL ❮ Anterior
Siguiente ❯
Comentarios de SQL Los comentarios se utilizan para explicar secciones de instrucciones SQL o para evitar la ejecución de sentencias SQL. Nota: Los ejemplos de este capítulo no funcionarán en Firefox y Microsoft Edge.
Los comentarios no se admiten en las bases de datos de Microsoft Access. Firefox y Microsoft Edge utilizan la base de datos de Microsoft Access en nuestros ejemplos.
Comentarios de línea única Los comentarios de una sola línea comienzan con -. Cualquier texto entre - y el final de la línea será ignorado (no se ejecutará). El ejemplo siguiente utiliza un comentario de una sola línea como explicación:
Ejemplo --Select all: SELECT * FROM Customers;
Inténtalo tú mismo " El ejemplo siguiente utiliza un comentario de una sola línea para ignorar el final de una línea:
Ejemplo SELECT * FROM Customers -- WHERE City='Berlin';
Inténtalo tú mismo "
El ejemplo siguiente utiliza un comentario de línea única para ignorar una instrucción:
Ejemplo --SELECT * FROM Customers; SELECT * FROM Products;
Inténtalo tú mismo "
Comentarios de varias líneas Los comentarios de varias líneas comienzan con / * y terminan con * /. Cualquier texto entre / * y * / será ignorado. El ejemplo siguiente utiliza un comentario de varias líneas como explicación:
Ejemplo /*Select all the columns of all the records in the Customers table:*/ SELECT * FROM Customers;
Inténtalo tú mismo " El ejemplo siguiente utiliza un comentario de varias líneas para ignorar muchas instrucciones:
Ejemplo /*SELECT SELECT * SELECT * SELECT * SELECT *
* FROM Customers; FROM Products; FROM Orders; FROM Categories;*/ FROM Suppliers;
Inténtalo tú mismo " Para ignorar sólo una parte de una declaración, también utilice el / * * / comentario. El siguiente ejemplo utiliza un comentario para ignorar parte de una línea:
Ejemplo SELECT CustomerName, /*City,*/ Country FROM Customers;
Inténtalo tú mismo " El ejemplo siguiente utiliza un comentario para ignorar parte de una instrucción:
Ejemplo SELECT * FROM Customers WHERE (CustomerName LIKE 'L%' OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%' OR CustomerName LIKE 'T%'*/ OR CustomerName LIKE 'W%') AND Country='USA' ORDER BY CustomerName;
Inténtalo tú mismo "