Вы находитесь на странице: 1из 150

Tutorial de SQL

SQL es un lenguaje estndar para almacenar, manipular y recuperar datos en bases de datos.

Introduccin al SQL
SQL es un lenguaje estndar 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 estndar ANSI (American National Standards Institute)

Qu puede hacer SQL?


SQL puede ejecutar consultas en una base de datos
SQL puede recuperar datos de una base de datos
SQL puede insertar registros en una base de datos
SQL puede actualizar registros en una base de datos
SQL puede eliminar registros de una base de datos
SQL puede crear nuevas bases de datos
SQL puede crear nuevas tablas en una base de datos
SQL puede crear procedimientos almacenados en una base de datos
SQL puede crear vistas en una base de datos
SQL puede establecer permisos en tablas, procedimientos y vistas

SQL es un estndar - PERO ....


Aunque SQL es un estndar ANSI (American National Standards Institute), existen diferentes versiones del lenguaje
SQL.

Sin embargo, para ser compatible con el estndar ANSI, todos ellos soportan al menos los comandos principales (como
SELECT, UPDATE, DELETE, INSERT, WHERE) de una manera similar.

Nota: La mayora de los programas de base de datos SQL tambin tienen sus propias extensiones propietarias adems
del estndar 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 disear la pgina

RDBMS
RDBMS significa Sistema de Gestin 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 coleccin 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 ms pequeas 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 diseada para mantener informacin especfica acerca de cada registro de la tabla.

Un registro, tambin 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 informacin asociada a un campo especfico de
una tabla.

Sintaxis de SQL
Tablas de base de datos
Una base de datos a menudo contiene una o ms 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico
helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

La tabla anterior contiene cinco registros (uno para cada cliente) y siete columnas (CustomerID, CustomerName,
ContactName, Address, City, PostalCode y Country).
Sentencias SQL
La mayora de las acciones que necesita realizar en una base de datos se realizan con sentencias SQL.

La siguiente instruccin SQL selecciona todos los registros de la tabla "Clientes":

Ejemplo
SELECT * FROM Customers;

Intntalo t mismo "

En este tutorial le ensearemos todo acerca de las diferentes sentencias SQL.

Declaracin SQL SELECT


La instruccin SQL SELECT
La instruccin 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.
3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

Ejemplo de columna SELECT


La siguiente instruccin SQL selecciona las columnas "CustomerName" y "City" de la tabla "Customers":

Ejemplo
SELECT CustomerName, City FROM Customers;

Intntalo t mismo "


SELECT * Ejemplo
La instruccin SQL siguiente selecciona todas las columnas de la tabla "Clientes":

Ejemplo
SELECT * FROM Customers;

Intntalo t mismo "

Sentencia SQL SELECT DISTINCT


La sentencia SQL SELECT DISTINCT
La instruccin SELECT DISTINCT se utiliza para devolver slo valores distintos (diferentes).

Dentro de una tabla, una columna contiene a menudo muchos valores duplicados; ya veces slo desea enumerar los
diferentes valores (distintos).

La instruccin SELECT DISTINCT se utiliza para devolver slo valores distintos (diferentes).
SELECT DISTINCT Sintaxis
SELECT DISTINCT column1, column2, ...
FROM table_name;

Demo Database
A continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.
3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

SELECT Ejemplo
La instruccin SQL siguiente selecciona todos los valores (y duplicados) de la columna "Pas" de la tabla "Clientes":

Ejemplo
SELECT Country FROM Customers;

Intntalo t mismo "


Ahora, utilicemos la palabra clave DISTINCT con la sentencia SELECT anterior y veamos el resultado.

Ejemplos SELECT DISTINCT


La siguiente instruccin SQL selecciona slo los valores DISTINCT de la columna "Pas" de la tabla "Clientes":

Ejemplo
SELECT DISTINCT Country FROM Customers;

Intntalo t mismo "

La siguiente instruccin SQL enumera el nmero de pases de clientes diferentes (distintos):

Ejemplo
SELECT COUNT(DISTINCT Country) FROM Customers;

Intntalo 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 solucin para MS Access:


Ejemplo
SELECT Count(*) AS DistinctCountries
FROM (SELECT DISTINCT Country FROM Customers);

Intntalo t mismo "

Clusula SQL WHERE


Clusula SQL WHERE
La clusula WHERE se utiliza para filtrar registros.

La clusula WHERE se utiliza para extraer slo los registros que cumplen una condicin especificada.

Sintaxis de WHERE
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Nota: La clusula WHERE no slo se utiliza en la instruccin SELECT, tambin se utiliza en UPDATE, DELETE
declaracin, etc!
Demo Database
A continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden
Berglund

Ejemplo de clusula WHERE


La siguiente sentencia SQL selecciona todos los clientes del pas "Mxico", en la tabla "Clientes":

Ejemplo
SELECT * FROM Customers
WHERE Country='Mexico';

Intntalo t mismo "

Campos de texto vs campos numricos


SQL requiere comillas simples alrededor de valores de texto (la mayora de los sistemas de base de datos tambin
permitirn comillas dobles).

Sin embargo, los campos numricos no deben estar entre comillas:


Ejemplo
SELECT * FROM Customers
WHERE CustomerID=1;

Intntalo t mismo "

Operadores en la clusula WHERE


Los siguientes operadores se pueden utilizar en la clusula 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 clusula WHERE se puede combinar con los operadores AND, OR y NOT.

Los operadores AND y OR se utilizan para filtrar registros basados en ms de una condicin:

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 condicin (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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.
3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

Y Ejemplo
La instruccin SQL siguiente selecciona todos los campos de "Clientes" donde el pas es "Alemania" Y la ciudad es
"Berln":

Ejemplo
SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';

Intntalo t mismo "


O Ejemplo
La instruccin SQL siguiente selecciona todos los campos de "Clientes" donde la ciudad es "Berln" O "Mnchen":

Ejemplo
SELECT * FROM Customers
WHERE City='Berlin' OR City='Mnchen';

Intntalo t mismo "

No ejemplo
La instruccin SQL siguiente selecciona todos los campos de "Clientes" donde el pas NO es "Alemania":

Ejemplo
SELECT * FROM Customers
WHERE NOT Country='Germany';

Intntalo t mismo "


Combinacin de AND, OR y NOT
Tambin puede combinar los operadores AND, OR y NOT.

La siguiente sentencia SQL selecciona todos los campos de "Clientes" donde el pas es "Alemania" Y la ciudad debe ser
"Berln" O "Mnchen" (use parntesis para formar expresiones complejas):

Ejemplo
SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='Mnchen');

Intntalo t mismo "

La instruccin SQL siguiente selecciona todos los campos de "Clientes" donde el pas NO es "Alemania" y NO "EE. UU.":

Ejemplo
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

Intntalo 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund
Ejemplo de ORDER BY
La instruccin SQL siguiente selecciona todos los clientes de la tabla "Clientes", ordenados por la columna "Pas":

Ejemplo
SELECT * FROM Customers
ORDER BY Country;

Intntalo t mismo "

ORDER BY DESC Ejemplo


La instruccin SQL siguiente selecciona todos los clientes de la tabla "Customers", ordenados DESCENDING por la
columna "Country":

Ejemplo
SELECT * FROM Customers
ORDER BY Country DESC;

Intntalo t mismo "


ORDER BY Ejemplo de varias columnas
La siguiente sentencia SQL selecciona todos los clientes de la tabla "Clientes", ordenados por la columna "Pas" y
"NombreDeCliente":

Ejemplo
SELECT * FROM Customers
ORDER BY Country, CustomerName;

Intntalo t mismo "

ORDER BY Varias columnas Ejemplo 2


La instruccin SQL siguiente selecciona todos los clientes de la tabla "Clientes", ordenados ascendiendo por el "Pas" y
descendiendo por la columna "CustomerName":

Ejemplo
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

Intntalo t mismo "


Sentencia SQL INSERT INTO
La instruccin SQL INSERT INTO
La instruccin INSERT INTO se utiliza para insertar nuevos registros en una tabla.

Sintaxis INSERT INTO


Es posible escribir la instruccin 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, asegrese de que el orden de los valores est en el mismo orden que las columnas de la
tabla. La sintaxis INSERT INTO sera la siguiente:

INSERT INTO table_name


VALUES (value1, value2, value3, ...);
Demo Database
A continuacin se muestra una seleccin 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 instruccin 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');

Intntalo t mismo "

La seleccin 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 ningn nmero en el campo CustomerID?


La columna CustomerID es un campo de incremento automtico y se generar automticamente cuando se inserte un
nuevo registro en la tabla.

Insertar datos slo en columnas especificadas


Tambin es posible insertar datos en columnas especficas.

La siguiente instruccin SQL insertar un nuevo registro, pero slo insertar datos en las columnas "CustomerName",
"City" y "Country" (CustomerID se actualizar automticamente):

Ejemplo
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

Intntalo t mismo "

La seleccin 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 continuacin, 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 creacin del registro!

Cmo probar valores NULL?


No es posible probar valores NULL con operadores de comparacin, como =, <o <>.

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 "Direccin" de la tabla "Personas" es opcional. Si se inserta un registro sin valor para
"Direccin", la columna "Direccin" se guardar con un valor NULL.
El operador IS NULL
La instruccin SQL siguiente utiliza el operador IS NULL para enumerar todas las personas que no tienen direccin:

SELECT LastName, FirstName, Address FROM Persons


WHERE Address IS NULL;

El conjunto de resultados se ver as:

LastName FirstName Address

Bloggs Joe

Roe Jane

Consejo: Siempre use IS NULL para buscar valores NULL.


El operador IS NOT NULL
La instruccin SQL siguiente utiliza el operador IS NOT NULL para enumerar todas las personas que tienen una
direccin:

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 instruccin 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 clusula WHERE en la instruccin
UPDATE. La clusula WHERE especifica qu registro (s) que se debe actualizar. Si omite la clusula WHERE,
todos los registros de la tabla se actualizarn.

Demo Database
A continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund
Tabla de ACTUALIZACIN
La siguiente instruccin 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;

Intntalo t mismo "

La seleccin 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 Ana Trujillo Avda. de la Constitucin Mxico 05021 Mexico
helados 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

ACTUALIZAR varios registros


Es la clusula WHERE que determina cuntos registros se actualizarn.

La instruccin SQL siguiente actualizar el nombre de contacto a "Juan" para todos los registros donde el pas es
"Mxico":
Ejemplo
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

Intntalo t mismo "

La seleccin 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 Juan Avda. de la Constitucin Mxico 05021 Mexico


helados 2222 D.F.

3 Antonio Moreno Taquera Juan Mataderos 2312 Mxico 05023 Mexico


D.F.
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

Actualizar Aviso!
Tenga cuidado al actualizar los registros. Si omite la clusula WHERE, TODOS los registros se actualizarn!

Ejemplo
UPDATE Customers
SET ContactName='Juan';

Intntalo t mismo "

La seleccin 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 Juan Avda. de la Constitucin Mxico 05021 Mexico


helados 2222 D.F.

3 Antonio Moreno Taquera Juan Mataderos 2312 Mxico 05023 Mexico


D.F.

4 Around the Horn Juan 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Juan Berguvsvgen 8 Lule S-958 22 Sweden


Sentencia SQL DELETE
La instruccin SQL DELETE
La instruccin 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 clusula WHERE en la instruccin DELETE. La
clusula WHERE especifica qu registros deben eliminarse. Si omite la clusula WHERE, todos los registros
de la tabla se eliminarn.

Demo Database
A continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund
Ejemplo SQL DELETE
La siguiente instruccin SQL elimina al cliente "Alfreds Futterkiste" de la tabla "Clientes":

Ejemplo
DELETE FROM Customers
WHERE CustomerName='Alfreds Futterkiste';

Intntalo t mismo "

La tabla "Clientes" se ver as:

CustomerID CustomerName ContactName Address City PostalCode Country

2 Ana Trujillo Emparedados y Ana Trujillo Avda. de la Constitucin Mxico 05021 Mexico
helados 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

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

DELETE FROM table_name;

o:

DELETE * FROM table_name;

Clusula SQL TOP, LIMIT o ROWNUM


La clusula SELECT TOP de SQL
La clusula SELECT TOP se utiliza para especificar el nmero de registros a devolver.

La clusula SELECT TOP es til en tablas grandes con miles de registros. Devolver un gran nmero de registros puede
tener un impacto en el rendimiento.

Nota: No todos los sistemas de bases de datos admiten la clusula SELECT TOP. MySQL admite la clusula LIMIT
para seleccionar un nmero 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

SQL TOP, LIMIT y ROWNUM Ejemplos


La siguiente instruccin SQL selecciona los tres primeros registros de la tabla "Clientes":

Ejemplo
SELECT TOP 3 * FROM Customers;

Intntalo t mismo "

La instruccin SQL siguiente muestra el ejemplo equivalente utilizando la clusula LIMIT:


Ejemplo
SELECT * FROM Customers
LIMIT 3;

Intntalo t mismo "

La instruccin SQL siguiente muestra el ejemplo equivalente utilizando ROWNUM:

Ejemplo
SELECT * FROM Customers
WHERE ROWNUM <= 3;

SQL TOP PERCENT Ejemplo


La siguiente instruccin SQL selecciona el primer 50% de los registros de la tabla "Clientes":

Ejemplo
SELECT TOP 50 PERCENT * FROM Customers;

Intntalo t mismo "


AADIR CLUSULA DE DNDE
La instruccin SQL siguiente selecciona los tres primeros registros de la tabla "Clientes", donde el pas es "Alemania":

Ejemplo
SELECT TOP 3 * FROM Customers
WHERE Country='Germany';

Intntalo t mismo "

La instruccin SQL siguiente muestra el ejemplo equivalente utilizando la clusula LIMIT:

Ejemplo
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;

Intntalo t mismo "

La instruccin 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 funcin MIN () devuelve el valor ms pequeo de la columna seleccionada.

La funcin MAX () devuelve el valor ms 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 continuacin se muestra una seleccin 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 instruccin SQL siguiente encuentra el precio del producto ms barato:

Ejemplo
SELECT MIN(Price) AS SmallestPrice
FROM Products;

Intntalo t mismo "

MAX () Ejemplo
La instruccin SQL siguiente encuentra el precio del producto ms caro:

Ejemplo
SELECT MAX(Price) AS LargestPrice
FROM Products;

Intntalo t mismo "


SQL COUNT (), AVG () y SUM () Funciones

Las funciones SQL COUNT (), AVG () y SUM ()


La funcin COUNT () devuelve el nmero de filas que coincide con un criterio especificado.

La funcin AVG () devuelve el valor promedio de una columna numrica.

La funcin SUM () devuelve la suma total de una columna numrica.

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 continuacin se muestra una seleccin 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 instruccin SQL siguiente encuentra el nmero de productos:

Ejemplo
SELECT COUNT(ProductID)
FROM Products;

Intntalo t mismo "


Ejemplo de AVG ()
La instruccin SQL siguiente encuentra el precio medio de todos los productos:

Ejemplo
SELECT AVG(Price)
FROM Products;

Intntalo t mismo "

Demo Database
A continuacin se muestra una seleccin 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 instruccin SQL encuentra la suma de los campos "Cantidad" en la tabla "OrderDetails":

Ejemplo
SELECT SUM(Quantity)
FROM OrderDetails;
Intntalo t mismo "

Operador SQL LIKE


El operador SQL LIKE
El operador LIKE se utiliza en una clusula WHERE para buscar un patrn 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 carcter

Nota: MS Access utiliza un signo de interrogacin (?) En lugar del subrayado (_).

El signo de porcentaje y el subrayado tambin se pueden utilizar en combinaciones!

Sintaxis de LIKE
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

Sugerencia: Tambin puede combinar cualquier nmero 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 Finds any values that starts with "a"
'a%'

WHERE CustomerName LIKE Finds any values that ends with "a"
'%a'

WHERE CustomerName LIKE Finds any values that have "or" in any position
'%or%'

WHERE CustomerName LIKE Finds any values that have "r" in the second position
'_r%'

WHERE CustomerName LIKE Finds any values that starts with "a" and are at least 3
'a_%_%' characters in length
WHERE ContactName LIKE Finds any values that starts with "a" and ends with "o"
'a%o'

Demo Database
A continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.
3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

Ejemplos de SQL LIKE


La instruccin SQL siguiente selecciona todos los clientes con un CustomerName que comienza con "a":

Ejemplo
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';
Intntalo t mismo "

La instruccin SQL siguiente selecciona todos los clientes con un CustomerName que termina con "a":

Ejemplo
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';

Intntalo t mismo "

La instruccin SQL siguiente selecciona todos los clientes con un CustomerName que tiene "o" en cualquier posicin:

Ejemplo
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';

Intntalo t mismo "

La instruccin SQL siguiente selecciona todos los clientes con un CustomerName que tienen "r" en la segunda posicin:

Ejemplo
SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';

Intntalo t mismo "


La instruccin 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_%_%';

Intntalo t mismo "

La instruccin 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';

Intntalo t mismo "

La instruccin SQL siguiente selecciona todos los clientes con un CustomerName que NO empiece con "a":

Ejemplo
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';

Intntalo t mismo "

Caracteres comodn de SQL


Caracteres comodn de SQL
Un carcter comodn se utiliza para sustituir cualquier otro carcter (s) en una cadena.

Los caracteres comodn se utilizan con el operador SQL LIKE . El operador LIKE se utiliza en una clusula WHERE para
buscar un patrn 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 carcter

Nota: MS Access utiliza un signo de interrogacin (?) En lugar del subrayado (_).

En MS Access y SQL Server tambin puede utilizar:

[ charlist ] - Define conjuntos y rangos de caracteres para coincidir


[^ charlist ] o [! charlist ] - Define conjuntos y rangos de caracteres NO coincidentes

Los comodines tambin se pueden utilizar en combinaciones!

Estos son algunos ejemplos que muestran diferentes operadores LIKE con comodines '%' y '_':

LIKE Operator Description


WHERE CustomerName LIKE Finds any values that starts with "a"
'a%'

WHERE CustomerName LIKE Finds any values that ends with "a"
'%a'

WHERE CustomerName LIKE Finds any values that have "or" in any position
'%or%'

WHERE CustomerName LIKE Finds any values that have "r" in the second position
'_r%'

WHERE CustomerName LIKE Finds any values that starts with "a" and are at least 3
'a_%_%' characters in length
WHERE ContactName LIKE Finds any values that starts with "a" and ends with "o"
'a%o'

Demo Database
A continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.
3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

Uso del comodn%


La instruccin SQL siguiente selecciona todos los clientes con una ciudad que comienza con "ber":

Ejemplo
SELECT * FROM Customers
WHERE City LIKE 'ber%';
Intntalo t mismo "

La instruccin SQL siguiente selecciona todos los clientes con una ciudad que contiene el patrn "es":

Ejemplo
SELECT * FROM Customers
WHERE City LIKE '%es%';

Intntalo t mismo "

Uso del comodn


La instruccin SQL siguiente selecciona todos los clientes con una ciudad que comienza con cualquier carcter, seguido
de "erlin":

Ejemplo
SELECT * FROM Customers
WHERE City LIKE '_erlin';

Intntalo t mismo "

La instruccin SQL siguiente selecciona a todos los clientes con una Ciudad que comienza con "L", seguido de cualquier
carcter seguido de "n", seguido de cualquier carcter, seguido de "on":
Ejemplo
SELECT * FROM Customers
WHERE City LIKE 'L_n_on';

Intntalo t mismo "

Uso del comodn [charlist]


La instruccin SQL siguiente selecciona todos los clientes con una ciudad que comienza con "b", "s" o "p":

Ejemplo
SELECT * FROM Customers
WHERE City LIKE '[bsp]%';

Intntalo t mismo "

La instruccin 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]%';

Intntalo t mismo "


Uso del comodn [! 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]%';

Intntalo t mismo "

O:

Ejemplo
SELECT * FROM Customers
WHERE City NOT LIKE '[bsp]%';

Intntalo t mismo "

SQL IN Operador
El operador SQL IN
El operador IN le permite especificar varios valores en una clusula 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund
Ejemplos de operadores
La instruccin 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');

Intntalo t mismo "

La instruccin 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');

Intntalo t mismo "

La instruccin SQL siguiente selecciona todos los clientes que son de los mismos pases que los proveedores:
Ejemplo
SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

Intntalo t mismo "

SQL ENTRE Operador


El operador SQL BETWEEN
El operador BETWEEN selecciona valores dentro de un rango determinado. Los valores pueden ser nmeros, texto o
fechas.

El operador BETWEEN es inclusivo: los valores de inicio y final estn incluidos.

ENTRE Sintaxis
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
Demo Database
A continuacin se muestra una seleccin 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 instruccin SQL siguiente selecciona todos los productos con un precio ENTRE 10 y 20:

Ejemplo
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

Intntalo 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;

Intntalo t mismo "


ENTRE con el Ejemplo IN
La instruccin SQL siguiente selecciona todos los productos con un precio ENTRE 10 y 20. Adems, no muestran
productos con un ID de categora de 1,2 o 3:

Ejemplo
SELECT * FROM Products
WHERE (Price BETWEEN 10 AND 20)
AND NOT CategoryID IN (1,2,3);

Intntalo 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;
Intntalo 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;

Intntalo t mismo "

Tabla de muestras
A continuacin se muestra una seleccin 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 instruccin 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#;

Intntalo 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 ms legibles.

Un alias slo existe para la duracin 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 continuacin se muestra una seleccin de la tabla "Clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

2 Ana Trujillo Emparedados y Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Mataderos 2312 Mxico 05023 Mexico


Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

Y una seleccin 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 instruccin 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;

Intntalo t mismo "

La instruccin 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;

Intntalo t mismo "

La instruccin 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;

Intntalo 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 instruccin 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 ms 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;

Intntalo t mismo "

La siguiente instruccin 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;

Intntalo t mismo "


Los alias pueden ser tiles cuando:

Hay ms 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 ms columnas

SQL se une
SQL JOIN
Una clusula JOIN se utiliza para combinar filas de dos o ms tablas, en funcin de una columna relacionada entre ellas.

Veamos una seleccin de la tabla "Pedidos":

OrderID CustomerID OrderDate

10308 2 1996-09-18

10309 37 1996-09-19
10310 77 1996-09-20

A continuacin, consulte una seleccin 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 Taquera Antonio Moreno Mexico

Observe que la columna "CustomerID" en la tabla "Orders" se refiere al "CustomerID" en la tabla "Customers". La
relacin entre las dos tablas anteriores es la columna "CustomerID".

A continuacin, 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;

Intntalo t mismo "

y producir algo como esto:

OrderID CustomerName OrderDate

10308 Ana Trujillo Emparedados y helados 9/18/1996

10365 Antonio Moreno Taquera 11/27/1996

10383 Around the Horn 12/16/1996

10355 Around the Horn 11/15/1996


10278 Berglunds snabbkp 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 continuacin se muestra una seleccin 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 seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


y helados Constitucin 2222 D.F.

3 Antonio Moreno Antonio Mataderos 2312 Mxico 05023 Mexico


Taquera Moreno D.F.

Ejemplo SQL INNER JOIN


La instruccin SQL siguiente selecciona todos los pedidos con informacin del cliente:
Ejemplo
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

Intntalo 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 mostrarn!

JOIN Tres tablas


La siguiente sentencia de SQL selecciona todos los pedidos con informacin 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);

Intntalo 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico
y helados Constitucin 2222 D.F.

3 Antonio Moreno Antonio Mataderos 2312 Mxico 05023 Mexico


Taquera Moreno D.F.

Y una seleccin 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;

Intntalo 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 continuacin se muestra una seleccin 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 seleccin 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;

Intntalo 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico
y helados Constitucin 2222 D.F.

3 Antonio Moreno Antonio Mataderos 2312 Mxico 05023 Mexico


Taquera Moreno D.F.

Y una seleccin 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 instruccin 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 seleccin del conjunto de resultados puede tener este aspecto:

CustomerName OrderID

Alfreds Futterkiste

Ana Trujillo Emparedados y helados 10308


Antonio Moreno Taquera 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 tambin aparecern.

SQL Self JOIN


Anterior Siguiente

SQL Self JOIN


Una JOIN autnoma es una combinacin regular, pero la tabla se une con ella misma.
Sintaxis de JOIN autnomo
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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


y helados Constitucin 2222 D.F.
3 Antonio Moreno Antonio Mataderos 2312 Mxico 05023 Mexico
Taquera Moreno D.F.

Ejemplo SQL Self JOIN


La instruccin 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;

Intntalo t mismo "

Operador SQL UNION


Anterior Siguiente
El operador SQL UNION
El operador UNION se utiliza para combinar el conjunto de resultados de dos o ms instrucciones SELECT.

Cada sentencia SELECT dentro de UNION debe tener el mismo nmero de columnas
Las columnas tambin deben tener tipos de datos similares
Las columnas de cada instruccin SELECT tambin 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


y helados Constitucin 2222 D.F.

3 Antonio Moreno Antonio Mataderos 2312 Mxico 05023 Mexico


Taquera Moreno D.F.
Y una seleccin de la tabla "Proveedores":

SupplierID SupplierName ContactName Address City PostalCode Country

1 Exotic Liquid Charlotte 49 Gilbert St. London EC1 4SD UK


Cooper

2 New Orleans Cajun Shelley Burke P.O. Box New 70117 USA
Delights 78934 Orleans

3 Grandma Kelly's Regina Murphy 707 Oxford Ann Arbor 48104 USA
Homestead Rd.
Ejemplo de SQL UNION
La siguiente sentencia SQL selecciona todas las ciudades diferentes (slo valores distintos) de "Clientes" y
"Proveedores":

Ejemplo
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;

Intntalo t mismo "

Nota: Si algunos clientes o proveedores tienen la misma ciudad, cada ciudad slo se enumerar una vez, porque
UNION selecciona slo valores distintos. Utilice UNION ALL para seleccionar tambin valores duplicados!

SQL UNION ALL Ejemplo


La instruccin SQL siguiente selecciona todas las ciudades (valores duplicados tambin) de "Clientes" y "Proveedores":

Ejemplo
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;

Intntalo t mismo "

SQL UNION Con DONDE


La siguiente sentencia SQL selecciona todas las ciudades alemanas diferentes (slo 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;

Intntalo t mismo "


SQL UNION TODOS Con DONDE
La siguiente sentencia SQL selecciona todas las ciudades alemanas (valores duplicados tambin) 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;

Intntalo t mismo "

Otro ejemplo de UNIN


La siguiente instruccin 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;

Intntalo t mismo "

SQL Self JOIN


Anterior Siguiente

SQL Self JOIN


Una JOIN autnoma es una combinacin regular, pero la tabla se une con ella misma.

Sintaxis de JOIN autnomo


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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


y helados Constitucin 2222 D.F.

3 Antonio Moreno Antonio Mataderos 2312 Mxico 05023 Mexico


Taquera Moreno D.F.
Ejemplo SQL Self JOIN
La instruccin 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;

Intntalo 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 ms 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.
3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund

Ejemplos de SQL GROUP BY


La siguiente instruccin SQL enumera el nmero de clientes en cada pas:
Ejemplo
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

Intntalo t mismo "

La siguiente instruccin SQL enumera el nmero de clientes en cada pas, ordenados de alto a bajo:

Ejemplo
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

Intntalo t mismo "

Demo Database
A continuacin se muestra una seleccin 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 seleccin de la tabla "Shippers":

ShipperID ShipperName

1 Speedy Express
2 United Package

3 Federal Shipping

GROUP BY con JOIN Ejemplo


La siguiente instruccin SQL enumera el nmero 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;

Intntalo t mismo "

SQL HAVING Clusula


Anterior Siguiente
La clusula SQL HAVING
La clusula HAVING se agreg a SQL porque la palabra clave WHERE no se poda 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Mxico 05021 Mexico


helados Constitucin 2222 D.F.

3 Antonio Moreno Taquera Antonio Moreno Mataderos 2312 Mxico 05023 Mexico
D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbkp Christina Berguvsvgen 8 Lule S-958 22 Sweden


Berglund
SQL HAVING Ejemplos
La instruccin SQL siguiente enumera el nmero de clientes en cada pas. Slo se incluyen pases con ms de 5
clientes:

Ejemplo
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

Intntalo t mismo "

La siguiente instruccin SQL enumera el nmero de clientes en cada pas, ordenados de alto a bajo (slo incluyen
pases con ms de 5 clientes):

Ejemplo
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

Intntalo t mismo "


Demo Database
A continuacin se muestra una seleccin 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 seleccin 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....

Ms HAVING Ejemplos
La instruccin SQL siguiente enumera los empleados que han registrado ms 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;

Intntalo t mismo "

La siguiente instruccin SQL indica si los empleados "Davolio" o "Fuller" han registrado ms 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;

Intntalo 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 ms registros.

EXISTS Sintaxis
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

Demo Database
A continuacin se muestra una seleccin 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 seleccin de la tabla "Proveedores":

SupplierID SupplierName ContactName Address City PostalCode Country

1 Exotic Liquid Charlotte 49 Gilbert St. London EC1 4SD UK


Cooper

2 New Orleans Cajun Shelley Burke P.O. Box 78934 New 70117 USA
Delights Orleans
3 Grandma Kelly's Regina Murphy 707 Oxford Rd. Ann Arbor 48104 USA
Homestead

4 Tokyo Traders Yoshi Nagase 9-8 Sekimai Tokyo 100 Japan


Musashino-shi

Ejemplos de SQL EXISTS


La instruccin 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);

Intntalo 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);

Intntalo 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 clusula WHERE o HAVING.

El operador ANY devuelve true si cualquiera de los valores de subconsulta cumple con la condicin.

El operador ALL devuelve true si todos los valores de subconsulta cumplen la condicin.

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 comparacin estndar (=, <>,! =,>,> =, <, O <=).

Demo Database
A continuacin se muestra una seleccin 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 seleccin 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 condicin.

La instruccin 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);

Intntalo t mismo "

La instruccin 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);

Intntalo t mismo "

Ejemplo de SQL ALL


El operador ALL devuelve TRUE si todos los valores de subconsulta cumplen la condicin.

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);

Intntalo 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 slo 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 clusula AS.

Ejemplos de SQL SELECT INTO


La instruccin SQL siguiente crea una copia de seguridad de clientes:

SELECT * INTO CustomersBackup2017


FROM Customers;

La instruccin SQL siguiente utiliza la clusula IN para copiar la tabla en una tabla nueva en otra base de datos:

SELECT * INTO CustomersBackup2017 IN 'Backup.mdb'


FROM Customers;

La siguiente instruccin SQL copia slo unas pocas columnas en una nueva tabla:

SELECT CustomerName, ContactName INTO CustomersBackup2017


FROM Customers;
La instruccin SQL siguiente copia slo los clientes alemanes en una nueva tabla:

SELECT * INTO CustomersGermany


FROM Customers
WHERE Country = 'Germany';

La instruccin SQL siguiente copia datos de ms 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 tambin se puede usar para crear una nueva tabla vaca utilizando el esquema de
otro. Simplemente agregue una clusula 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 instruccin 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 slo 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 continuacin se muestra una seleccin 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 Ana Trujillo Avda. de la Constitucin Mxico 05021 Mexico
helados 2222 D.F.

3 Antonio Moreno Taquera Antonio Mataderos 2312 Mxico 05023 Mexico


Moreno D.F.

Y una seleccin 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 instruccin SQL copia "Proveedores" en "Clientes" (las columnas que no se rellenan con datos, contendrn
NULL):
Ejemplo
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;

Intntalo t mismo "

La siguiente instruccin 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;

Intntalo t mismo "

La instruccin SQL siguiente copia slo a los proveedores alemanes en "Clientes":

Ejemplo
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';

Intntalo 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 20

Suponga que la columna "UnitsOnOrder" es opcional y puede contener valores NULL.


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 funcin MySQL IFNULL () le permite devolver un valor alternativo si una expresin es NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))


FROM Products

o podemos utilizar la funcin COALESCE () , como esto:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))


FROM Products

servidor SQL

La funcin ISNULL () de SQL Server le permite devolver un valor alternativo cuando una expresin es NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))


FROM Products
MS Access

La funcin MS Access IsNull () devuelve TRUE (-1) si la expresin es un valor nulo, de lo contrario FALSE (0):

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))


FROM Products

Orculo

La funcin 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 ejecucin de sentencias
SQL.

Nota: Los ejemplos de este captulo no funcionarn 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 lnea nica


Los comentarios de una sola lnea comienzan con -.

Cualquier texto entre - y el final de la lnea ser ignorado (no se ejecutar).

El ejemplo siguiente utiliza un comentario de una sola lnea como explicacin:

Ejemplo
--Select all:
SELECT * FROM Customers;

Intntalo t mismo "

El ejemplo siguiente utiliza un comentario de una sola lnea para ignorar el final de una lnea:

Ejemplo
SELECT * FROM Customers -- WHERE City='Berlin';

Intntalo t mismo "


El ejemplo siguiente utiliza un comentario de lnea nica para ignorar una instruccin:

Ejemplo
--SELECT * FROM Customers;
SELECT * FROM Products;

Intntalo t mismo "

Comentarios de varias lneas


Los comentarios de varias lneas comienzan con / * y terminan con * /.

Cualquier texto entre / * y * / ser ignorado.

El ejemplo siguiente utiliza un comentario de varias lneas como explicacin:

Ejemplo
/*Select all the columns
of all the records
in the Customers table:*/
SELECT * FROM Customers;
Intntalo t mismo "

El ejemplo siguiente utiliza un comentario de varias lneas para ignorar muchas instrucciones:

Ejemplo
/*SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories;*/
SELECT * FROM Suppliers;

Intntalo t mismo "

Para ignorar slo una parte de una declaracin, tambin utilice el / * * / comentario.

El siguiente ejemplo utiliza un comentario para ignorar parte de una lnea:

Ejemplo
SELECT CustomerName, /*City,*/ Country FROM Customers;

Intntalo t mismo "

El ejemplo siguiente utiliza un comentario para ignorar parte de una instruccin:


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;

Intntalo t mismo "

Вам также может понравиться