Está en la página 1de 55

Agregar una fila e insertar slo algunas de sus

columnas (tener cuidado con las que no aceptan


NULL).
Sintaxis
INSERT INTO NombreTabla (Col1, Col2, Col3...)
VALUES (ValorCol1, ValorCol2, ValorCol3...);
Ejemplo
INSERT INTO Categories (CategoryID,
CategoryName)
VALUES (9, 'Dulcera');
Agregar varias filas en la misma sentencia
INSERT.
Ejemplo
INSERT INTO Categories (CategoryID,
CategoryName)
VALUES (10, 'Juguetera'), (11, 'Panadera');
Puede omitirse el nombre de las columnas de la
tabla si se ingresar valores para todas sus
columnas.
Sintaxis
INSERT INTO NombreTabla
VALUES (ValorCol1, ValorCol2, ValorCol3...);
Ejemplo
INSERT INTO Shippers
VALUES (20 Estafeta', 4457891236');
Pueden ingresarse valores en una tabla a partir de la informacin que
se devuelva de una consulta.
Sintaxis
INSERT INTO NombreTabla (Col1, Col2, Col3)
SELECT Campo1, Campo2, Campo3
FROM NombreTablaFuente;
Ejemplo
INSERT INTO customers (customerid, companyname, contactname,
contacttitle, address, city, region, postalcode, country, phone, fax)
SELECT 'PAVLO', companyname, contactname, contacttitle, address,
city, region, postalcode, country, phone, fax
FROM suppliers WHERE SupplierID=7;
Actualizacin en una tabla a partir de la informacin y
columnas de la misma tabla.
Sintaxis
UPDATE NombreTablaAActualizar
SET Col1=Valor1, Col2=Valor2...
WHERE CondicinDeActualizacin;
Ejemplo
UPDATE Products
SET unitprice=20
WHERE ProductID=1;
PREREQUISITOS PARA EL SIGUIENTE EJEMPLO:
Insertar 3 productos pertenecientes en la
categora Dulcera.
INSERT INTO products(productname, supplierid, categoryid,
quantityperunit, unitprice, unitsinstock, unitsonorder, reorderlevel,
discontinued)
VALUES ('Kisses', 17, 10, '48 pieces', 50, 20, 0, 20, 0),
('Kinder', 17, 10, '1 pkg', 7, 100, 0, 50, 0),
('Sneakers', 17, 10, '1 pkg', 8, 120, 0, 600, 0);
Actualizacin en una tabla a partir de la informacin y columnas
de otra tabla.
Sintaxis
UPDATE NombreTablaAActualizar, TablaAdicional1,
TablaAdicional2
SET Col1=Valor1, Col2=Valor2...
WHERE CondicionDeUninTabla1 AND
CondicionDeUninTabla2 AND CondicinDeActualizacin;
Ejemplo
UPDATE Products p, Categories c
SET p.supplierID=22
WHERE p.categoryid=c.categoryid AND CategoryName =
'dulcera';
Eliminacin en una tabla a partir de la informacin
y columnas de la misma tabla.
Sintaxis
DELETE FROM NombreTablaABorrar
WHERE CondicinDeBorrado;
Ejemplo
DELETE FROM Products
WHERE ProductID=80;
Eliminacin en una tabla a partir de la informacin y
columnas de otra tabla.
Sintaxis
DELETE NombreTablaABorrar FROM
NombreTablaABorrar, NombreTablaAdicional
WHERE CondicinDeUnion AND CondicinDeBorrado;
Ejemplo
DELETE p FROM Products p, Categories c
WHERE c.CategoryID=p.CategoryID AND
c.CategoryName = 'dulcera';
SELECT
Especifica las columnas a mostrar en el resultado
FROM
Especifica la(s) tabla(s) a utilizar.
WHERE
Filtra renglones de acuerdo a la condicin especificada.
ORDER BY
Especifica como ordenar el resultado.
LIMIT
Especifica la cantidad de filas que se desean regresar.
Obtener slo algunos atributos y todos los
registros de una tabla, si se requieren todos los
atributos se puede colocar un *
SELECT
A
1
, A
2
, , A
n
FROM r
1
Solicitud: Mostrar
en qu ciudades hay
clientes.
Se repiten las
ciudades
Al usar DISTINCT
No se repiten
Obtener nombre de compaa y del contacto de
los clientes que viven en London
Solicitud: Obtener nombre de compaa y del contacto de los clientes
cuya ciudad comienza con B
Patrones con operador LIKE
%
Ignora los valores de
cero o ms caracteres
Obtener nombre de compaa y del contacto de los clientes cuya
ciudad tenga como penultima letra una e
%ignora ero o ms
caracteres
_ Ignora el valor de un
carcter (sin importar que
Tipo de carcter sea).
(Obtener los alumnos de
la generacin 2007 2008 sin
Importar de que carrera son)
NoControl LIKE _07% OR NoControl LIKE _08%
Solicitud: Obtener los clientes cuya clave cumpla con lo siguiente: los dos
primeros caracteres son letras, el tercero es un 1 o un 4 y los dos ltimos
caracteres son nmeros.
[ ] Permiten indicar rangos o valores vlidos. Por ejemplo del 0 al 9 o los
valores 1 y 4, de la a a la z.
^ Permite indicar que inicia con.
$ Permite indicar que termina con.
{} Permite indicar cuantas coincidencias del patrn estn permitidas.
. Representa un carcter cualquiera (tal como el _ en el LIKE).
SELECT * FROM Customers WHERE customerid REGEXP ^[a-
z]{2}[14]{1}[0-9]{2}$
Si no colocamos los smbolos ^ y $, va a buscar coincidencias dentro de la
cadena, es decir no coincide exactamente con la cadena.
Alumnos cuyo nm. de control inicia con un identificador de carrera
vlido:
SELECT * FROM Alumnos WHERE NoControl REGEXP ^[sidega]
Alumnos de la generacin 2007 2008 sin importar la carrera:
SELECT * FROM Alumnos WHERE NoControl REGEXP ^.0[78]
Obtener todos los alumnos que tienen un nmero de control vlido:
SELECT * FROM Alumnos WHERE NoControl REGEXP
'^[sidega]{1}[0-9]{2}12[0-9]{4}$'
Solicitud: Obtener nombre de compaa y del contacto de los clientes
cuya ciudad sea London o Buenos Aires
Solicitud: Obtener nombre de compaa y del contacto de los clientes
cuya ciudad sea London y que la persona contacto sea un Agente de
ventas (Sales Agent)
Solicitud: Obtener nombre de compaa, nombre y titulo del contacto
de los clientes cuya persona contacto sea un agente de ventas (Sales
Agent) o un representante de ventas (Sales Representative) o un
asociado de ventas (Sales Associate)
Solicitud: Obtener nombre de compaa, nombre y titulo del contacto
de los clientes cuya persona contacto NO sea un agente de ventas
(Sales Agent) o un representante de ventas (Sales Representative) o
un asociado de ventas (Sales Associate)
Solicitud: Obtener Id del cliente, nombre de la compaa y
la Region para aquellos clientes cuya Region sea NULL
Null
Indica que al atributo no
se le asign un valor
o se le asign NULL
Solicitud: Obtener Id del cliente, nombre de la compaa y
la Region para aquellos clientes cuya Region tenga un
valor asignado
Solicitud: Obtener el nombre
del producto y su precio
unitario ordenando del
producto ms barato al ms
caro.
El default es ordenar de
menor a mayor, aunque
puede colocarse la clusula
ASC.
Obtener el nombre del producto y su precio
unitario ordenando del producto ms caro al ms
barato.
Usar la clusula DESC
Obtener el primer empleado que aparezca en la
lista ordenado alfabticamente.
El tener un nmero de categora no indica nada, es mejor poner el
nombre de la categora como en el resultado siguiente:
Pero, como se escribe el query? Con un JOIN o INNER JOIN entre
la llave fornea FK CategoryID y la llave Primaria CategoryID de la
tabla Categories.
NoControl Nombre ApePaterno ApeMaterno Alumnos.
IdCarrera
Carreras.
IdCarrera
Carrera
I08120105 JESUS AVILA REYNOSO 1 1 Lic. En Informtica
I07120110 RAFAEL BAEZA ESPINOZA 1 1 Lic. En Informtica
D06120032 SAHRA CHAVEZ LOPEZ 3 3 Ing. Industrial
S03120010 MARIA VIEYRA BAEZA 2 2 Ing. En Sistemas
D06120018 GLORIA DAVALOS MARTINEZ 3 3 Ing. Industrial

NoControl Nombre ApePaterno ApeMaterno IdCarrera
I08120105 JESUS AVILA REYNOSO 1
I07120110 RAFAEL BAEZA ESPINOZA 1
D06120032 SAHRA CHAVEZ LOPEZ 3
S03120010 MARIA VIEYRA BAEZA 2
D06120018 GLORIA DAVALOS MARTINEZ 3

IdCarrera Carrera
1 Lic. En Informtica
2 Ing. En Sistemas
3 Ing. Industrial

Combinar o juntar las
tablas para poder
acceder al nombre de la
carrera
Se estn uniendo las
tablas a travs de la
coincidencia de las
llaves primaria y fornea
respectivamente.
NoControl Nombre ApePaterno ApeMaterno IdCarrera
I08120105 JESUS AVILA REYNOSO 1
I07120110 RAFAEL BAEZA ESPINOZA 1
D06120032 SAHRA CHAVEZ LOPEZ 3
S03120010 MARIA VIEYRA BAEZA 2
D06120018 GLORIA DAVALOS MARTINEZ 3

IdCarrera Carrera
1 Lic. En Informtica
2 Ing. En Sistemas
3 Ing. Industrial

Combinar o juntar las
tablas para poder
acceder al nombre de la
carrera
No se estn uniendo las tablas a
travs de la coincidencia de las
llaves primaria y fornea
respectivamente, por lo que nos
resulta informacin no veraz. Un
alumno slo debe estar en una
carrera.
NoControl Nombre ApePaterno ApeMaterno Alumnos.
IdCarrera
Carreras.
IdCarrera
Carrera
I08120105 JESUS AVILA REYNOSO 1 1 Lic. En Informtica
I08120105 JESUS AVILA REYNOSO 1 2 Ing. En Sistemas
I08120105 JESUS AVILA REYNOSO 1 3 Ing. Industrial
I07120110 RAFAEL BAEZA ESPINOZA 1 1 Lic. En Informtica
I07120110 RAFAEL BAEZA ESPINOZA 1 2 Ing. En Sistemas
I07120110 RAFAEL BAEZA ESPINOZA 1 3 Ing. Industrial
D06120032 SAHRA CHAVEZ LOPEZ 3 1 Lic. En Informtica
D06120032 SAHRA CHAVEZ LOPEZ 3 2 Ing. En Sistemas
D06120032 SAHRA CHAVEZ LOPEZ 3 3 Ing. Industrial
S03120010 MARIA VIEYRA BAEZA 2 1 Lic. En Informtica
S03120010 MARIA VIEYRA BAEZA 2 2 Ing. En Sistemas
S03120010 MARIA VIEYRA BAEZA 2 3 Ing. Industrial
D06120018 GLORIA DAVALOS MARTINEZ 3 1 Lic. En Informtica
D06120018 GLORIA DAVALOS MARTINEZ 3 2 Ing. En Sistemas
D06120018 GLORIA DAVALOS MARTINEZ 3 3 Ing. Industrial
Solamente las filas marcadas son correctas
El nombre de la categora est en la
tabla Categories y nuestra consulta
utiliza la tabla de Products
Poner en el query las 2 tablas y
especificar una condicin donde
la FK=PK
SELECT Campo1, Campo2, Campo3, Campo 4
FROM Tabla1, Tabla2, Tabla2
WHERE CondicinDeUnin1 AND CondicinDeUnin2
La desventaja de esta opcin es que en la clusula WHERE se
comienzan a mezclar condiciones de unin con condiciones de filtrado
de filas
Nombre del producto, Id de categora y Nombre de la categora
FK
PK
SELECT Campo1, Campo2, Campo3, Campo4
FROM Tabla1
JOIN Tabla2 ON CondicinDeUninConLaTablaAnterior
JOIN Tabla3 ON CondicinDeUninConAlgunaTablaAnterior
En esta opcin la consulta est mejor estructurada, ya que en el
WHERE solo se colocaran condiciones de filtrado de filas como por
ejemplo mostrar solo los productos de las categoras Beverages y
Seafood.
Nombre del producto, Id de categora y Nombre de la categora
FK
PK
Obtener todos los pases donde hay un cliente o
un proveedor
NOTAS:
Ambas consultas deben tener el mismo nmero
de columnas (con el mismo tipo de datos).
La operacin unin elimina duplicados.
SELECT
Especifica las columnas a mostrar en el resultado
FROM
Especifica la(s) tabla(s) a utilizar.
WHERE
Filtra renglones de acuerdo a la condicin especificada.
GROUP BY
Forma grupos de renglones con el mismo valor en la columna o
columnas especificadas aqu.
HAVING
Filtra grupos de acuerdo a la condicin especificada (como el
WHERE pero para los grupos).
ORDER BY
Especifica como ordenar el resultado.
LIMIT
Especifica la cantidad de filas que se desean regresar.
Las siguientes funciones aplican a valores numricos y no numricos:
COUNT (columna)
Regresa cuantos valores (diferentes de NULL) existen en la
columna especificada.
COUNT(*)
Regresa el nmero de registros en la tabla especificada
MIN (columna)
Regresa el mnimo de los contenidos de la columna
especificada. Primero elimina NULLs
MAX (columna)
Regresa el mximo de los contenidos de la columna
especificada. Primero elimina NULLs
Las siguientes funciones aplican SOLO a valores
numricos :
SUM (columna)
Regresa la suma de los contenidos de la columna
especificada. Primero elimina NULLs
AVG (columna)
Regresa el promedio de los contenidos de la
columna especificada. Primero elimina NULLs
NOTA: En algunos DBMSs, si existe un NULL puede
marcar un error de ejecucin
La tabla de Clientes tiene 91 registros, de los cuales 60 de ellos en su
columna Region deberan tener NULL en lugar de una cadena
vaca(), por lo que antes de colocar el ejemplo debemos reemplazar
la cadena vaca por el valor NULL. Ejecutando la siguiente instruccin:
UPDATE customers
SET region = NULL
WHERE region ='';
La tabla de Clientes tiene 91 registros
Los primeros 2 ejemplos cuentan el nmero de registros que tienen un
valor diferente de NULL en el atributo region.
El Ejemplo 3, cuenta los registros que tienen valores NULL en region
count(atributo) elimina atributos NULL, count(*) no elimina region con
NULL
Usar DISTINCT para eliminar regiones que se
repiten. Comparar los resultados obtenidos con
cada query
Obtener el costo del producto mas barato
Obtener el costo del producto ms caro
Obtener el precio promedio de todos los productos
Obtener el nmero total de unidades en inventario de todos los
productos
Varias funciones en el estatuto Select
IMPORTANTE
Las funciones COUNT, MIN, MAX, SUM, AVG
slo
pueden usarse en
SELECT
HAVING (La cual es como un WHERE para las
funciones de agregado)
En el resultado puede verse que
tengo varios productos de la misma
categora.
Si quisiera saber cuantos productos
tengo de cada categora como
podra hacerle?
Podra agrupar y contar todos los
registros que tienen el mismo valor
en CategoryID
Por ejemplo, tengo 12 productos de
categora 1
GROUP BY CategoryID
Agrupa todos los registros
que tienen el mismo valor en
el atributo especificado
(CategoryID)
Se utiliza con otra funcin,
por ejemplo COUNT para
saber cuantos registros
fueron agrupados
SELECT CategoryID,
count(CategoryID)
FROM Products
GROUP BY CategoryID
ID 1
12 prod.
IMPORTANTE
La clusula GROUP BY debe incluir todas aquellas
columnas que se hayan indicado en el SELECT,
para las cuales no se haya aplicado una de las
funciones COUNT, MIN, MAX, SUM o AVG .
Ejemplo: Obtener todas las rdenes realizadas en enero de
1998 con el Id
de la orden,
Fecha, Monto
de la Orden y
Num de
productos
incluidos.
Se obtiene el nmero de productos que existen de cada
categora
Nmero de productos existentes de cada
categora
nmero de productos existentes de cada categora para
los que el nmero de productos sea menor a 10
Se utilizan alias para las tablas