Sunteți pe pagina 1din 57

ANTOLOGIA SQL SERVER GUIA

DOCENTE
PROF. RONALD SANCHEZ MORA

17 DE ABRIL DE 2017
RONALD SANCHEZ MORA
SAN JOSE, COSTA RICA
Introduccin a SQL

Una base de datos es una coleccin de datos que se organiza de una manera
que facilita la facilidad de acceso, as como una gestin y actualizacin
eficientes. Una base de datos se compone de tablas que almacenan
informacin relevante. Por ejemplo, usara una base de datos, si crease un
sitio web como YouTube, que contiene mucha informacin como videos, nombres
de usuario, contraseas, comentarios.

SQL, 'Structured Query Language', es un lenguaje de programacin diseado


para administrar datos almacenados en bases de datos relacionales. SQL
opera a travs de declaraciones declarativas simples. Esto mantiene los
datos precisos y seguros, y ayuda a mantener la integridad de las bases de
datos, independientemente del tamao.

El lenguaje SQL es ampliamente utilizado hoy en da a travs de marcos web


y aplicaciones de base de datos. Conocer SQL le ofrece la libertad de
explorar sus datos y el poder de tomar mejores decisiones. Al aprender
SQL, tambin aprender conceptos que se aplican a casi todos los sistemas
de almacenamiento de datos.

Cul de las siguientes no es verdad sobre una base de datos?

Una base de datos se compone de "tablas"


Una base de datos es una coleccin de datos
Una base de datos es un lenguaje de programacin
Tablas de base de datos

Una tabla almacena y muestra datos en un formato estructurado que consta


de columnas y filas que son similares a las que se ven en las hojas de
clculo de Excel.

Las bases de datos a menudo contienen mltiples tablas, cada una diseada
para un propsito especfico. Por ejemplo, imagine crear una tabla de
nombres y nmeros de telfono de la base de datos.

Primero, crearamos columnas con los ttulos FirstName, LastName y


TelephoneNumber. Cada tabla incluye su propio conjunto de campos, basado
en los datos que almacenar.

Las tablas se componen de:


Columnas y filas
Columnas solamente
Filas, pero sin columnas

Claves primarias (Primary Keys)

Una clave primaria es un campo de la tabla que identifica nicamente los


registros de tabla. Las caractersticas principales de la clave primaria
- Debe contener un valor nico para cada fila.
- No puede contener valores NULL.

Por ejemplo, nuestra tabla contiene un registro para cada nombre en una
gua telefnica. El nmero de identificacin nico sera una buena opcin
para una clave primaria en la tabla, ya que siempre existe la posibilidad
de que ms de una persona tenga el mismo nombre.

- Las tablas estn limitadas a una clave primaria cada una.

- El valor de la clave primaria debe ser diferente para cada fila.

Qu es SQL?

Una vez que entienda lo que es una base de datos, entender SQL es fcil. SQL
significa Structured Query Language (Lenguaje de consulta estructurado).

SQL se utiliza para acceder y manipular una base de datos.


MySQL es un programa que entiende SQL.

SQL puede:
- insertar, actualizar o eliminar registros en una base de datos.
- Crear nuevas bases de datos, tabla, procedimientos almacenados, vistas.
- Recuperar datos de una base de datos, etc.

SQL es un estndar ANSI (American National Standards Institute), pero


existen diferentes versiones del lenguaje SQL. La mayora de los programas
de base de datos SQL tienen sus propias extensiones propietarias adems
del estndar SQL, pero todas ellas soportan los comandos principales.

Tipos de Variables

Numricos

int va desde -2 000 000 000 hasta +2000 000 000


smallint -32 000 hasta +32 000
tinyint 0 hasta 255
bit 0 y 1
bitint 10000 000 000 000
BigInt Una columna o variable de tipo bigint puede almacenar
el rango de valores -263 a 263-1.
Decimal(p,s). Una columna de tipo decimal puede almacenar datos
numricos decimales sin redondear. Donde p es la precisin (nmero
total del dgitos) y s la escala (nmero de valores decimales)
Float Una columna de datos float puede almacenar el rango de
valores -1,79x-10308 a 1,79x-10308, -1, si la definimos con el valor
mximo de precisin. La precisin puede variar entre 1 y 53.
Real Sinnimo de float(24). Puede almacenar el rango de
valores -3,4x-1038 a 3,4x-1038, -1
Money Almacena valores numricos monetarios de -263 a 263-1, con
una precisin de hasta diez milsimas de la unidad monetaria.
SmallMoney Almacena valores numricos monetarios de -
214.748,3647 a 214.748,3647, con una precisin de hasta diez
milsimas de la unidad monetaria.

Carcter

Char(n) Almacena n caracteres en formato ASCII, un byte por cada


letra. Cuando almacenamos datos en el tipo char, siempre se
utilizan los n caracteres indicados, incluso si la entrada de datos
es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A',
se almacena 'A ', ocupando los cinco bytes.
Varchar(n) Almacena n caracteres en formato ASCII, un byte por
cada letra. Cuando almacenamos datos en el tipo varchar, unicamente
se utilizan los caracteres necesarios,Por ejemplo, si en un
varchar(255), guardamos el valor 'A', se almacena 'A',
ocupando solo un byte (hasta 4000 caracteres).
Varchar(max) Igual que varchar, pero al declararse como max
puede almacenar 231-1 bytes.
Nchar(n) Almacena n caracteres en formato UNICODE, dos bytes
por cada letra. Es recomendable utilizar este tipo de datos cuando
los valores que vayamos a almacenar puedan pertenecer a diferente
idiomas.
Nvarchar(n) Almacena n caracteres en formato UNICODE, dos bytes
por cada letra. Es recomendable utilizar este tipo de datos cuando
los valores que vayamos a almacenar puedan pertenecer a diferente
idiomas.
Nvarchar(max) Igual que varchar, pero al declararse como max
puede almacenar 231-1 bytes.

Fecha

Datetime Almacena fechas con una precisin de milisegundo. Debe


usarse para fechas muy especificas(guarda la hora).
SmallDatetime Almacena fechas con una precisin de minuto, por
lo que ocupa la mitad de espacio de que el tipo datetime, para
tablas que puedan llegar a tener muchos datos es un factor a tener
muy en cuenta.
TimeStamp Se utiliza para marcar un registro con la fecha de
insercin - actualizacin. El tipo timestamp se actualiza
automticamente cada vez que insertamos o modificamos los datos.

Binarios
Binary Se utiliza para almacenar datos binarios de longitud
fija, con una longitud mxima de 8000 bytes.
Varbinary Se utiliza para almacenar datos binarios de longitud
variable, con una longitud mxima de 8000 bytes..Es muy similar a
binary, salvo que varbinary utiliza menos espacio en disco.
Varbinary(max) Igual que varbinary, pero puede almacenar 231-
1 bytes.
Sentencia CREATE:

Para crear una base de datos usamos la siguiente sintaxis:


Create DATABASE nombre_BD;

Para crear una tabla dentro de una base de datos, primero debemos usar:
USE nombre_BD;

Sentencia DROP: La instruccin DROP DATABASE se utiliza para eliminar


una base de datos SQL existente.

Sintaxis: DROP DATABASE databasename;

La sentencia CREATE TABLE se utiliza para crear una nueva tabla en una
base de datos.

CREATE TABLE table_name (


column1 datatype,
column2 datatype,
column3 datatype,
....
);

Los parmetros de columna especifican los nombres de las columnas de la


tabla. El parmetro de tipo de datos especifica el tipo de datos que
puede contener la columna (por ejemplo, varchar, entero, fecha, etc.).

El siguiente ejemplo crea una tabla denominada "Personas" que contiene


cinco columnas: PersonID, LastName, FirstName, Address y City:

CREATE TABLE Persons (


PersonID INTEGER,
LastName VARCHAR(255),
FirstName VARCHAR(255),
Address VARCHAR(255),
City VARCHAR(255)
);

Sentencia SQL DROP TABLE

La instruccin DROP TABLE se utiliza para eliminar una tabla existente en


una base de datos. Sintaxis DROP TABLE table_name;
Sentencia SQL TRUNCATE TABLE

La instruccin TRUNCATE TABLE se utiliza para eliminar los datos dentro


de una tabla, pero no la tabla en s.

Sintaxis TRUNCATE TABLE table_name;

Sentencia SQL ALTER TABLE

La instruccin ALTER TABLE se utiliza para agregar, eliminar o modificar


columnas de una tabla existente. La instruccin ALTER TABLE tambin se
utiliza para agregar y eliminar varias restricciones en una tabla
existente.

ALTER TABLE - ADD Column

Para agregar una columna en una tabla use la siguiente sintaxis:

ALTER TABLE table_name


ADD column_name datatype;

ALTER TABLE - DROP COLUMN

Para eliminar una columna de una tabla, utilice la siguiente sintaxis


(observe que algunos sistemas de base de datos no permiten eliminar una
columna):

ALTER TABLE table_name


DROP COLUMN column_name;

ALTER TABLE - ALTER/MODIFY COLUMN


Para cambiar el tipo de datos de una columna de una tabla, utilice la
siguiente sintaxis:
ALTER TABLE table_name
ALTER COLUMN column_name datatype;

Ejemplo SQL ALTER TABLE


Observe la tablas personas:
Ahora queremos agregar una columna llamada "DateOfBirth" en la tabla
"Personas". Utilizamos la siguiente instruccin SQL.

ALTER TABLE Persons


ADD DateOfBirth date;

Tenga en cuenta que la nueva columna, "DateOfBirth", es de tipo date y va


a mantener una fecha.

Cambiar el tipo de dato

Ahora queremos cambiar el tipo de datos de la columna denominada


"DateOfBirth" en la tabla "Personas".

Utilizamos la siguiente instruccin SQL:

ALTER TABLE Persons


ALTER COLUMN DateOfBirth year;

Observe que la columna "DateOfBirth" ahora es del tipo year y va a


mantener un ao en un formato de dos o cuatro dgitos

Sentencia DROP COLUMN

A continuacin, queremos eliminar la columna denominada "DateOfBirth" en


la tabla "Personas". Utilizamos la siguiente instruccin SQL:

ALTER TABLE Persons


DROP COLUMN DateOfBirth;

SQL Constraints
Las restricciones de SQL se utilizan para especificar reglas para datos
en una tabla.
SQL Create Constraints (restricciones)

Las restricciones se pueden especificar cuando se crea la tabla con la


instruccin CREATE TABLE o despus de que se crea la tabla con la
sentencia ALTER TABLE.
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);

Las restricciones de SQL se utilizan para especificar reglas para los


datos de una tabla. Las restricciones se utilizan para limitar el tipo de
datos que pueden ingresar a una tabla. Esto asegura la exactitud y
fiabilidad de los datos de la tabla. Si hay alguna infraccin entre la
restriccin y la accin de datos, la accin se anula. Las restricciones
pueden ser de nivel de columna o de tabla. Las restricciones de nivel de
columna se aplican a una columna y las restricciones de nivel de tabla se
aplican a toda la tabla. Las siguientes restricciones se utilizan
comnmente en SQL:

NOT NULL Asegura que una columna no puede tener un valor


NULL UNIQUE Asegura que todos los valores en una columna son
diferentes
PRIMARY KEY Una combinacin de NOT NULL y UNIQUE. Identifica de forma
nica cada fila en una tabla
FOREIGN KEY Identifica de forma nica una fila / registro en otra
tabla
CHECK Asegura que todos los valores de una columna satisfagan una
condicin especfica
DEFAULT Establece un valor predeterminado para una columna cuando no
se especifica ningn valor
INDEX Utilice para crear y recuperar datos de la base de datos muy
rpidamente
SQL NOT NULL Constraint

La restriccin NOT NULL impone un campo para siempre contener un valor.

De forma predeterminada, una columna puede contener valores NULL. La


restriccin NOT NULL impone una columna para NO aceptar valores NULL. La
restriccin NOT NULL impone un campo para siempre contener un valor. Esto
significa que no puede insertar un nuevo registro o actualizar un
registro sin agregar un valor a este campo. El SQL siguiente asegura que
las columnas "ID", "LastName" y "FirstName" NO aceptarn valores NULL.
Ejemplo:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);

Sugerencia: Si la tabla ya se ha creado, puede agregar una restriccin


NOT NULL a una columna con la sentencia ALTER TABLE.

SQL UNIQUE Constraint

La restriccin UNIQUE garantiza que todos los valores de una columna sean
diferentes. Las restricciones UNIQUE y PRIMARY KEY proporcionan una
garanta de singularidad para una columna o conjunto de columnas. Una
restriccin PRIMARY KEY tiene automticamente una restriccin UNIQUE. Sin
embargo, puede tener muchas restricciones UNIQUE por tabla, pero slo una
restriccin PRIMARY KEY por tabla.

SQL UNIQUE Constraint on CREATE TABLE

El siguiente SQL crea una restriccin UNIQUE en la columna "ID" cuando se


crea la tabla "Personas":

CREATE TABLE Persons (


ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Para nombrar una restriccin UNIQUE y definir una restriccin UNIQUE en
varias columnas, utilice la siguiente sintaxis de SQL:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID,LastName)
);

SQL UNIQUE Constraint on ALTER TABLE

Para crear una restriccin UNIQUE en la columna "ID" cuando la tabla ya


est creada, utilice el siguiente SQL:

ALTER TABLE Persons


ADD UNIQUE (ID);

Para nombrar una restriccin UNIQUE y definir una restriccin UNIQUE en


varias columnas, utilice la siguiente sintaxis de SQL:
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);

SQL PRIMARY KEY Constraint


La restriccin PRIMARY KEY identifica de forma nica cada registro en una
tabla de base de datos. Las claves primarias deben contener valores
UNIQUE y no pueden contener valores NULL. Una tabla puede tener slo una
clave primaria, que puede consistir en campos nicos o mltiples.

SQL PRIMARY KEY on CREATE TABLE

El SQL siguiente crea una PRIMARY KEY en la columna "ID" cuando se crea
la tabla "Personas":CREATE TABLE Persons (
ID int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);

SQL PRIMARY KEY on ALTER TABLE: Para crear una restriccin PRIMARY
KEY en la columna "ID" cuando la tabla ya est creada, utilice el
siguiente SQL:
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
DROP a PRIMARY KEY Constraint
Para eliminar una restriccin PRIMARY KEY, utilice el siguiente SQL
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

SQL FOREIGN KEY Constraint

Una FOREIGN KEY es una clave utilizada para vincular dos tablas. Una
FOREIGN KEY en una tabla apunta a una PRIMARY KEY en otra tabla. Vea las
dos tablas siguientes:
Tabla "Persons":

Orders Table:
Observe que la columna "PersonID"
en la tabla "Orders" apunta a la
columna "PersonID" en la tabla
"Persons". La columna "PersonID" en
la tabla "Persons" es PRIMARY KEY
en la tabla "Persons". La columna "PersonID" en la tabla "Orders" es una
KEY FOREIGN en la tabla "Orders". La restriccin FOREIGN KEY se utiliza
para evitar acciones que destruirn vnculos entre tablas. La restriccin
FOREIGN KEY tambin evita que se inserten datos no vlidos en la columna
de la foreign key, ya que tiene que ser uno de los valores contenidos en
la tabla a la que apunta.

SQL FOREIGN KEY on CREATE TABLE


El siguiente SQL crea una FOREIGN KEY en el campo "PersonID" cuando la
tabla "Orders" es creada.

CREATE TABLE Orders (


OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
Para permitir la denominacin de una restriccin FOREIGN KEY y para
definir una restriccin FOREIGN KEY en varias columnas, utilice la
siguiente sintaxis SQL:

CREATE TABLE Orders (


OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
SQL FOREIGN KEY on ALTER TABLE

Para crear una restriccin FOREIGN KEY en la columna "PersonID" cuando la


tabla "Orders" ya est creada, utilice el siguiente SQL:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Para permitir la denominacin de una restriccin FOREIGN KEY y para


definir una restriccin FOREIGN KEY en varias columnas, utilice la
siguiente sintaxis SQL:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

DROP a FOREIGN KEY Constraint


Para eliminar una restriccin FOREIGN KEY, utilice el siguiente SQL:
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

SQL CHECK Constraint


La restriccin CHECK se utiliza para limitar el rango de valores que se
puede colocar en una columna. Si define una restriccin CHECK en una sola
columna, slo permite ciertos valores para esta columna. Si define una
restriccin CHECK en una tabla, puede limitar los valores en ciertas
columnas basndose en valores de otras columnas de la fila.
SQL CHECK on CREATE TABLE

El SQL siguiente crea una restriccin CHECK en la columna "Age" cuando se


crea la tabla "Persons". La restriccin CHECK asegura que no puede tener
ninguna persona menor de 18 aos:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);

Para permitir la denominacin de una restriccin CHECK y para definir una


restriccin CHECK en varias columnas, utilice la siguiente sintaxis SQL:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);

SQL DEFAULT Constraint


La restriccin DEFAULT se utiliza para proporcionar un valor
predeterminado para una columna.

El valor predeterminado se agregar a todos los registros nuevos si no se


especifica ningn otro valor.
SQL DEFAULT on CREATE TABLE

El siguiente SQL establece como DEFAULT un valor para la columna "City"


cuando la tabla "Persons" es creada:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255) DEFAULT 'Sandnes'
);
Campo SQL AUTO INCREMENT

El AUTO INCREMENT permite generar automticamente un nmero nico cuando


se inserta un nuevo registro en una tabla. A menudo, este es el campo de
clave principal que nos gustara que se creara automticamente cada vez
que se inserta un nuevo registro.

Sintaxis para SQL Server: La siguiente instruccin SQL define la columna


"ID" como un campo de clave principal de incremento automtico en la
tabla "Persons":

CREATE TABLE Persons (


ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);

MS SQL Server utiliza la palabra clave IDENTITY para realizar una


caracterstica de incremento automtico. En el ejemplo anterior, el valor
inicial para IDENTITY es 1 y se incrementar en 1 para cada nuevo
registro. Sugerencia: Para especificar que la columna "ID" debe comenzar
en el valor 10 e incrementar en 5, cambie a IDENTITY (10,5).

Para insertar un nuevo registro en la tabla "Personas", NO tendremos que


especificar un valor para la columna "ID" (un valor nico se agregar
automticamente):

INSERT INTO Persons (FirstName,LastName)


VALUES ('Lars','Monsen');

Sentencia SQL CREATE VIEW

En SQL, una vista es una tabla virtual basada en el conjunto de


resultados de una instruccin SQL. Una vista contiene filas y columnas,
al igual que una tabla real. Los campos de una vista son campos de una o
ms tablas reales de la base de datos. Puede agregar funciones SQL,
instrucciones WHERE y JOIN a una vista y presentar los datos como si los
datos provenan de una sola tabla.

CREATE VIEW view_name AS


SELECT column1, column2, ...
FROM table_name
WHERE condition;
Nota: Una vista siempre muestra datos actualizados! El motor de base de
datos recrea los datos, utilizando la sentencia SQL de la vista, cada vez
que un usuario consulta una vista.

Sentencia INSERT INTO

La instruccin INSERT INTO se utiliza para insertar nuevos registros en


una tabla.

Syntanxis INSERT TO:

Es posible escribir la instruccin INSERT INTO de dos maneras. La primera


forma especifica los nombres de las columnas y los valores a insertar:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
Ejemplo Practico Sentencia INSERT INTO:
La siguiente instruccin SQL inserta un nuevo registro en la tabla
Customers":
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode,
Country)
VALUES ('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 en una columna especifica:


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

INSERT INTO Customers (CustomerName, City, Country)


VALUES ('Cardinal', 'Stavanger', 'Norway');

La tabla Customers se ver as:

Practica #1

- Hacer uso de lo comandos vistos hasta ahora (CREATE TABLE, DATABASE,


DROP DATABASE, DROP TABLE, y INSERT INTO)
- Deben establecer la PRIMARY KEY EN CADA TABLA.
- Posteriormente van a insertar 20 registros en cada campo de la tabla.
- A continuacion se muestra la tabla estudiantes con sus respectivos
campos y el tipo de datos de cada campo.
- Establezca el campo idAlumno como PRIMARY KEY
Para trabajar con la sentecia SELECT vamos a trabajar con la base de datos
Northwind que tiene la tabla customers
Sentencia 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.

Sintaxis SELECT

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;

A continuacin se muestra una seleccin de la tabla "Customers" en la base


de datos de ejemplo Northwind:

Hacer un SELECT por columnas especificias:

La siguiente instruccin SQL selecciona las columnas "CustomerName" y


"City" de la tabla "Customers":

SELECT CustomerName, City FROM Customers;


SELECT DISTINCT City FROM customers;

Esto producira el siguiente resultado. Se han eliminado las entradas


duplicadas.

Cree una consulta para obtener resultados


distintos de la tabla Customers

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 WHERE

SELECT column1, column2, ...


FROM table_name
WHERE condition;

Nota: La clusula WHERE no slo se utiliza en la sentencia SELECT,


tambin se utiliza en las sentencias UPDATE, DELETE,etc.
A continuacin se muestra una seleccin de la tabla "Customers" en la
base de datos de Northwind:
Ejemplo Clausula WHERE

La siguiente sentencia SQL selecciona todos los clientes del pas


"Mxico", en la tabla "Customers":
SELECT * FROM Customers
WHERE Country='Mexico';

Operadores en la Clusula WHERE:

Los siguientes operadores se pueden utilizar en la clusula WHERE:

Operadores SQL AND y OR

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.

Sintaxis operador AND

SELECT column1, column2, ...


FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

El operador OR muestra un registro si alguna de las condiciones separadas


por OR es TRUE.
Sintaxis operador OR

SELECT column1, column2, ...


FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
A continuacin se muestra una seleccin de la tabla "Customers" en la
base de datos Northwind.

Ejemplo usando el operador AND

La instruccin SQL siguiente selecciona todos los campos de la tabla


"Customers" donde el pas es "Germany" Y la ciudad es "Berln":
SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';

Ejemplo usando operador OR

La instruccin SQL siguiente selecciona todos los campos de la tabla


"Customers" donde la ciudad es "Berln" O "Mnchen":

SELECT * FROM Customers


WHERE City='Berlin' OR City='Mnchen';

Combinando operador AND y OR

Tambin puede combinar los operadores AND y OR.

La siguiente sentencia SQL selecciona todos los campos de la tabla


"Custormers" donde el pas es "Germany" Y la ciudad debe ser "Berln" O
"Mnchen" (use parntesis para formar expresiones complejas):

SELECT * FROM Customers


WHERE Country='Germany' AND (City='Berlin' OR City='Mnchen');
SQL ORDER BY Palabra clave

La palabra clave ORDER BY se utiliza para ordenar el conjunto de


resultados en orden ascendente o descendente.

La palabra clave ORDER BY ordena los registros en orden ascendente de


forma predeterminada. Para ordenar los registros en orden descendente,
utilice la palabra clave DESC.

Sintaxis ORDER BY

SELECT column1, column2, ...


FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

A continuacin se muestra una seleccin de la tabla "Customers" en la


base de datos de ejemplo Northwind.

Ejemplo ORDER BY

La siguiente sentencia SQL selecciona todos los clientes de la tabla


Customers ordenados por la columna pais.

SELECT * FROM Customers


ORDER BY Country;

Ejemplo ORDER BY DESC


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

SELECT * FROM Customers


ORDER BY Country DESC;
Ejemplo de varias columnas usando ORDER BY
La instruccin SQL siguiente selecciona todos los clientes de la tabla
"Customers", ordenados por la columna "Country" y "CustomerName":

SELECT * FROM Customers


ORDER BY Country, CustomerName;

Sentencia SQL UPDATE

La instruccin UPDATE se utiliza para modificar los registros existentes


en una tabla.

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

A continuacin se muestra una seleccin de la tabla "Customers" en la base


de datos de ejemplo Northwind.
UPTADE Tabla

La siguiente instruccin SQL actualiza el primer cliente (CustomerID = 1)


con una nueva persona de contacto y una ciudad nueva.

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

UPDATE Multiples 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":
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

La seleccin de la tabla "Customers" se ver as:


Advertencia UPDATE:

Tenga cuidado al actualizar los registros. Si omite la clusula WHERE,


TODOS los registros se actualizarn.

Ejemplo

UPDATE Customers
SET ContactName='Juan';

El resultado sera, que actualizara todos los campos ContactName con


Juan

Sentencia SQL DELETE

La instruccion DELETE es usada para borrar un registro existente 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 se deben eliminar. Si omite la clusula WHERE, todos los
registros de la tabla se eliminarn.
Ejemplo Sentencia DELETE
La siguiente instruccin SQL elimina al cliente "Alfreds Futterkiste" de
la tabla "Customers":

A continuacin se muestra una seleccin de la tabla "Customers" en la base


de datos de ejemplo Northwind.

DELETE FROM Customers


WHERE CustomerName='Alfreds Futterkiste';

La tabla "Customers" ahora se ver as:

Delete All Records (Borrar todos los registros)

Es posible eliminar todas las filas de una tabla sin eliminar la tabla.
Esto significa que la estructura de tabla, los atributos y los ndices
estarn intactos
DELETE FROM table_name; o DELETE * FROM table_name;

La Clausula SQL SELECT TOP

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 afectar al
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 SQL
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;

A continuacin se muestra una seleccin de la tabla "Customers" en la base


de datos de ejemplo Northwind.

La instruccin SQL siguiente selecciona los tres primeros registros de la


tabla "Customers":

SELECT TOP 3 * FROM Customers;

La instruccin SQL siguiente muestra el ejemplo equivalente utilizando la


clusula LIMIT:
SELECT * FROM Customers
LIMIT 3;

SQL TOP PERCENT


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

SELECT TOP 50 PERCENT * FROM Customers;

ADD a WHERE CLAUSE

La siguiente instruccin SQL selecciona los tres primeros registros de la


tabla "Customers", donde el pas es "Germany":

SELECT TOP 3 * FROM Customers


WHERE Country='Germany';
La instruccin SQL siguiente muestra el ejemplo equivalente utilizando la
clusula LIMIT:

SELECT * FROM Customers


WHERE Country='Germany'
LIMIT 3;

Funciones SQL MIN() and 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.
Sintaxis MIN()

SELECT MIN(column_name)
FROM table_name
WHERE condition;
Sintaxis MAX()

SELECT MAX(column_name)
FROM table_name
WHERE condition;
Vamos a crear una segunda tabla llamada product, con los campos, tipo
de dato y sus registros.
La instruccin SQL siguiente encuentra el precio del producto ms barato:
Ejemplo MIN()

SELECT MIN(Price) AS SmallestPrice


FROM Products;

La instruccin SQL siguiente encuentra el precio del producto ms caro:


Ejemplo MAX ( )

SELECT MAX(Price) AS LargestPrice


FROM Products;
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() Syntax
SELECT COUNT(column_name)
FROM table_name
WHERE condition;

AVG() Syntax
SELECT AVG(column_name)
FROM table_name
WHERE condition;

SUM() Syntax
SELECT SUM(column_name)
FROM table_name
WHERE condition;

A continuacion vamos a trabajar con la tabla products:


Ejemplo COUNT ()
La instruccin SQL siguiente encuentra el nmero de productos:

SELECT COUNT(ProductID)
FROM Products;

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

SELECT AVG(Price)
FROM Products;
Vamos a trabajar con la tabla orderDetails, que se encuentra dentro de
nuestra base de datos SUPER.
Ejemplo SUM( )

SELECT SUM(Quantity)
FROM OrderDetails;

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.

Sintaxis operador LIKE


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

Tambin puede combinar cualquier nmero de condiciones utilizando


operadores AND u OR.

Estos son algunos ejemplos que muestran diferentes operadores LIKE con
comodines '%' y '_':
Descripcion Operdor LIKE
WHERE CustomerName LIKE 'a%' Encuentra cualquier valor que empiece con
"a"

WHERE CustomerName LIKE '%a' Encuentra cualquier valor que termine con
WHERE CustomerName LIKE '_r%' Encuentra cualquier valor que tenga "r"
en la segunda posicin
WHERE CustomerName LIKE 'a_%_%' Encuentra cualquier valor que empiece
por "a" y tenga al menos 3 caracteres de longitud
WHERE ContactName LIKE 'a%o' Encuentra cualquier valor que comience
con "a" y termine con "o".
Vamos a hacer uso de la tabla customers:

La instruccin SQL siguiente selecciona todos los clientes con un


CustomerName comenzando por "a":

SELECT * FROM Customers


WHERE CustomerName LIKE 'a%';

La instruccin SQL siguiente selecciona todos los clientes con un


CustomerName que termina con "a":
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';

La instruccin SQL siguiente selecciona todos los clientes con un


CustomerName que tiene "o" en cualquier posicin:
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';

La instruccin SQL siguiente selecciona todos los clientes con un


CustomerName que tienen "r" en la segunda posicin:
SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';
La instruccin SQL siguiente selecciona todos los clientes con un nombre
de cliente que comienza con "a" y tienen al menos 3 caracteres de
longitud:

SELECT * FROM Customers


WHERE CustomerName LIKE 'a_%_%';

La instruccin SQL siguiente selecciona todos los clientes con un


CustomerName que comienza con "a" y termina con "o":

SELECT * FROM Customers


WHERE ContactName LIKE 'a%o';

La instruccin SQL siguiente selecciona todos los clientes con un


CustomerName que NO empiece con "a":

SELECT * FROM Customers


WHERE CustomerName NOT LIKE 'a%';

The SQL IN Operator

El operador IN le permite especificar varios valores en una clusula


WHERE. El operador IN es una abreviatura para varias condiciones OR.
Sintaxis Operador IN

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);
Haciendo uso de la tabla customers se va a trabajar con ejemplos usando
el operador IN.

Ejemplo 1:
La instruccin SQL siguiente selecciona todos los clientes que se
encuentran en "Germany", "France" y "UK":
SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

La instruccin SQL siguiente selecciona todos los clientes que son de los
mismos pases que los proveedores:

SELECT * FROM Customers


WHERE Country IN (SELECT Country FROM Suppliers);

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.

BETWEEN Syntax
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
La instruccin SQL siguiente selecciona todos los productos con un precio
ENTRE 10 y 20:

SELECT * FROM Products


WHERE Price NOT BETWEEN 10 AND 20;

Ejemplo NOT BETWEEN


SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;
Ejemplo de BETWEEN con 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:
SELECT * FROM Products
WHERE (Price BETWEEN 10 AND 20)
AND NOT CategoryID IN (1,2,3);

Ejemplo BETWEEN con valores TEXT

La siguiente sentencia SQL selecciona todos los productos con un


ProductName ENTRE ' Chang ' y 'Longlife Tofu'

SELECT * FROM product


WHERE ProductName BETWEEN 'Chang' AND 'Longlife Tofu'
ORDER BY ProductName;

Ejemplo NOT BETWEEN con Valores TEXT

La siguiente sentencia SQL selecciona todos los productos con un


ProductName que no esta entre 'Tofu' AND 'Tunnbrd'

SELECT * FROM Products


WHERE ProductName NOT BETWEEN 'Tofu' AND 'Tunnbrd'
ORDER BY ProductName;

Ejemplo BETWEEN con Fechas


La instruccin SQL siguiente selecciona todos los pedidos con un
OrderDate BETWEEN '04 -July-1996 'y '09 -July-1996':
SELECT * FROM Orders
WHERE OrderDate BETWEEN '19960704' AND '19960709';

SQL Aliases

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 las columnas sean ms legibles. Un alias slo existe para la duracin
de la consulta.

Alias Column Syntax

SELECT column_name AS alias_name


FROM table_name;
Alias Table Syntax

SELECT column_name(s)
FROM table_name AS alias_name;

Ejemplo para Columnas Alias


La siguiente instruccin SQL crea dos alias, uno para la columna
CustomerID y otro para la columna CustomerName:

SELECT CustomerID as ID, CustomerName AS Customer


FROM Customers;
La siguiente instruccin SQL 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:

SELECT CustomerName AS Customer, ContactName AS [Contact Person]


FROM Customers;

La instruccin SQL siguiente crea un alias denominado "Address" que combina


cuatro columnas (Address, PostalCode, City y Country):

SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' +
Country AS Address
FROM Customers;

Ejemplo 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
SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers, Orders
WHERE Customers.CustomerName='Around the Horn' AND
Customers.CustomerID=Orders.CustomerID;

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 Orders
A continuacin, consulte una seleccin de la tabla "Customers":

Observe que la columna "CustomerID" en la tabla "Orders" hace referencia


a la "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:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

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 Keyword (Palabra Clave)

La palabra clave INNER JOIN selecciona registros que tienen valores


coincidentes en ambas tablas.

Sintaxis INNER JOIN

SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

La instruccin SQL siguiente selecciona todos los pedidos con informacin


del cliente:
Ejemplo INNER JOIN

SELECT Orders.OrderID, Customers.CustomerName


FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

Nota: La palabra clave INNER JOIN selecciona todas las filas de ambas
tablas siempre que haya una coincidencia entre las columnas. Si hay
registros en la tabla "Orders" que no tienen coincidencias en "Customers",
estos pedidos no se mostrarn.

JOIN con tres Tablas

La instruccin SQL siguiente selecciona todos los pedidos con informacin


de Customers y Shippers:
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);

SQL LEFT JOIN Keyword (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 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.

Ejemplo SQL LEFT JOIN

La sentencia SQL siguiente seleccionar a


todos los clientes y cualquier pedido que
tenga:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;

Nota: La palabra clave LEFT JOIN devuelve todos los registros de la tabla
izquierda (clientes), incluso si no hay coincidencias en la tabla derecha
(Orders).

SQL RIGHT JOIN Keyword (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 desde el 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.

A continuacin se muestra una seleccin de la tabla "Orders":

Y una seleccin de la tabla "Customers":

Ejemplo SQL RIGHT JOIN


La siguiente sentencia de SQL devolver todos los empleados y cualquier
orden que hayan colocado
SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

SQL FULL OUTER JOIN Keyword (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.

Sintaxis FULL OUTER JOIN


SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

A continuacin se muestra una seleccin de la tabla "Customers":

Y una seleccin de la tabla Orders

Ejemplo SQL FULL OUTER JOIN

La instruccin SQL siguiente selecciona todos los Customers y todos los


Orders:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Nota: La palabra clave FULL OUTER JOIN devuelve todas las filas de la
tabla izquierda (Customers) y todas las filas de la tabla derecha
(Orders). Si hay filas en "Customers" que no tienen coincidencias en
"Orders", o si hay filas en "Orders" que no tienen coincidencias en
"Customers", esas filas tambin aparecern.
SQL Self JOIN
Es una combinacin regular, pero la tabla se une con ella misma.

Sintaxis Self JOIN:


SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;

Ejemplo SQL Self JOIN

La instruccin SQL siguiente coincide con los clientes que son de la


misma ciudad:
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;

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 UNION
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

Sintaxis UNION ALL

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 de la primera sentencia SELECT de
UNION.

Ejemplo SQL UNION

La instruccin SQL siguiente selecciona todas las ciudades diferentes


(slo valores distintos) de "Customers" y "Suppliers":

SELECT City FROM Customers


UNION
SELECT City FROM Suppliers
ORDER BY City;

Nota: Si algunos clientes(customers) o proveedores (suppliers) tienen la


misma ciudad, cada ciudad slo se mostrar una vez, porque UNION selecciona
slo valores distintos. Utilice UNION ALL para seleccionar tambin valores
duplicados!

Ejemplo SQL UNION ALL

La siguiente sentencia SQL selecciona todas las ciudades (valores


duplicados tambin) de "Customers" y "Suppliers":

SELECT City FROM Customers


UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
SQL UNION con WHERE
La instruccin SQL siguiente selecciona todas las ciudades alemanas
diferentes (slo valores distintos) de "Customers" y "Suppliers":

SELECT City, Country FROM Customers


WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;

SQL UNION ALL con WHERE

La instruccin SQL siguiente selecciona todas las ciudades alemanas


(valores duplicados tambin) "Customers" and "Suppliers":

SELECT City, Country FROM Customers


WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;

Otro Ejemplo UNION

La siguiente instruccin SQL enumera a todos los customers and suppliers:


SELECT 'Customer' As Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;

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);
Ejemplo SQL GROUP BY

La siguiente instruccin SQL enumera el nmero de clientes en cada pas:


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

La siguiente instruccin SQL enumera el nmero de clientes en cada pas,


ordenados de alto a bajo:

SELECT COUNT(CustomerID), Country


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

Ejemplo GROUP BY con JOIN

La siguiente instruccin SQL enumera el nmero de orders enviadas por


cada shippers
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM
Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;

Clausula SQL HAVING

La clusula HAVING se agreg a SQL porque la palabra clave WHERE no se


poda utilizar con funciones agregadas.
Sintaxis HAVING
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);

Ejemplo SQL HAVING


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

SELECT COUNT(CustomerID), Country


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

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):
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

Mas Ejemplos HAVING

La instruccin SQL siguiente enumera los empleados que han registrado ms


de 10 rdenes:

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;

La siguiente instruccin SQL indica si los empleados "Davolio" o "Fuller"


han registrado ms de 25 rdenes:

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

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

Ejemplo SQL EXISTS


La instruccin SQL siguiente devuelve TRUE y muestra los
proveedores(Suppliers) con un precio de producto(Products) inferior a 20:

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId =
Suppliers.supplierId AND Price < 20);

La instruccin SQL siguiente devuelve TRUE y lista a los


proveedores(Suppliers) con un precio de producto(Products) igual a 22:

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId =
Suppliers.supplierId AND Price = 22);

EL Operador 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.

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

Ejemplo SQL ANY

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
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

La instruccin SQL siguiente devuelve TRUE y lista los nombres de producto


si encuentra registros ANY en la tabla OrderDetails que cantidad> 99:
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);

Ejemplo SQL ALL

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


la condicin.
La instruccin SQL siguiente devuelve TRUE y lista los nombres de
producto si TODOS(ALL) los registros de la tabla OrderDetails tienen
cantidad = 10:
SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

Sentencia SQL SELECT INTO

La instruccin SELECT INTO copia los datos de una tabla en una nueva
tabla.
Sintaxis SELECT INTO
Copia todas las columnas dentro de 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 anterior. Puede crear nuevos nombres de columna utilizando la
clusula AS.

Ejemplos SQL SELECT INTO

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


SELECT * INTO CustomersBackup2017
FROM Customers;

La siguiente instruccin SQL utiliza la clusula IN para copiar la tabla


en una nueva tabla 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;

Consejo: SELECT INTO tambin se puede utilizar para crear una nueva tabla
vaca usando 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;

La Sentencia 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 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;
Ejemplo INSERT INTO SELECT

La siguiente instruccin SQL copia "Suppliers" en "Customers" (las columnas


que no estn llenas con datos, contendrn NULL)
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
La siguiente sentencia SQL copia Suppliers en Customers (llena todas
las columnas)
INSERT INTO Customers (CustomerName, ContactName, Address, City,
PostalCode, Country)
SELECT SupplierName, ContactName, Address, City,
PostalCode, Country FROM Suppliers;

La siguiente instruccin SQL copia slo a los proveedores alemanes en


"Clientes":

INSERT INTO Customers (CustomerName, City, Country)


SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';

S-ar putea să vă placă și