Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Insertar datos
test=> INSERT INTO empleado (nombre,
apellido, sueldo, sexo, edad, ingreso)
VALUES
test-> ('Javier', 'Ramrez', 34452.89, 'M', 23, '406-08');
Observamos que se ponen las columnas en las
que se va a insertar, no se puso la columna
transaccion ya que esta se inserta por default
con la hora y la fecha actuales.
Seleccionar
Obtener toda la tabla empleado
test=> SELECT * FROM empleado;
Caracteres especiales
Si el empleado que vamos a insertar tiene un
apstrofe en el nombre, por ejemplo:
test=> INSERT INTO empleado (nombre,
apellido, sueldo, sexo, edad, ingreso)
VALUES
test-> ('Jack', 'O'Donnell', 34452.89, 'M', 23, '406-08');
Me marca un error: test'>
Para resolverlo:
'O''Donnell',se ponen dos apstrofes
'O\'Donnell' se pone una diagonal invertida
Etiquetado de columnas y
Comentarios
El nombre que aparece en la salida de un SELECT
hasta arriba es la etiqueta de la columna que
corresponde al nombre del atributo. Se puede cambiar
usando la palabra clave AS, por ejempo:
test=> SELECT nombre AS Razn_Social FROM cuenta;
test=> SELECT 1 + 3 AS total;
Con dos guiones -- indica que hasta el final del rengln
es un comentario
Con /* al principio y con */ al final indica que todo lo que
est contenido es un comentario
test=> /*Esto es un comentario
test*> y no ejecuta nada*/;
Uso de AND/OR
AND y OR se usan para conectar condiciones simples.
Insertaremos ms datos en empleado:
test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad,
ingreso)
VALUES ('Mara', 'Prez', 2317.89, 'F', 23, '30-07-2005');
test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad,
ingreso)
VALUES ('Alejandro', 'Padilla', 4317.86, 'M', 24, '12-08-2006');
test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad,
ingreso)
VALUES ('Raquel', 'Carmona', 5817.86, 'F', 24, '15-02-2006');
test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad,
ingreso)
VALUES ('Armando', 'Pinillos', 7317.86, 'M', 24, '13-08-2005');
test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad,
ingreso)
test-> VALUES ('Mara', 'Romero', 11317.89, 'F', 23, '30-08-2004');
Between y Like
Si queremos aqullos empleados que estn entre 24 y 30
aos de edad:
test=> SELECT * FROM empleado WHERE edad >= 24
AND edad <= 30;
test=> SELECT * FROM empleado WHERE edad
BETWEEN 24 AND 30;
Para obtener los datos de los empleados cuyo apellido
inicia con la letra R:
test=> SELECT * FROM empleado WHERE apellido LIKE
'R%';
Obtener los que ingresaron en 2008:
test=> SELECT * FROM empleado WHERE ingreso LIKE
'2008%';
Agregacin
A veces es necesario resumir cierta
informacin. En lugar de ver renglones,
solo se necesita saber cuntos son. Para
esto se usan las siguientes palabras clave:
COUNT(*)
cuenta renglones
SUM(nombre_col) total
MAX(nombre_col) mximo
MIN(nombre_col) mnimo
AVG(nombre_col) promedio
Ejemplos
Contar nmero de renglones
test=> SELECT COUNT(*) FROM empleado;
Obtener la suma de los sueldos
test=> SELECT SUM(sueldo) FROM empleado;
Obtener el sueldo mximo
test=> SELECT MAX(sueldo) FROM empleado;
Obtener la edad mnima
test=> SELECT MIN(edad) FROM empleado;
Obtener el sueldo promedio
test=> SELECT AVG(sueldo) FROM empleado;
GROUP BY
En los ejemplos anteriores nos regres un rengln como
resultado y slo se us una columna con el agregado.
Usando los agregados con GROUP BY se tendr la
aplicacin del agregado en una columna, en los
renglones agrupados por otra columna.
SELECT COUNT(*) FROM empleado, regresa el nmero
de renglones en la tabla.
Si queremos contar cuntos son sexo M y cuantos F:
test=> SELECT sexo, COUNT(*) FROM empleado
GROUP BY sexo;
Si por sexo se quiere saber datos del salario y de la edad:
test=> SELECT sexo,MIN(edad),MAX(edad),AVG(sueldo)
FROM empleado GROUP BY sexo ORDER BY 4 DESC;
HAVING
Permite probar condiciones en los valores agregados. A
menudo se usa con GROUP BY. Con HAVING se
pueden incluir o excluir grupos basados en el valor de
agregacin para ese grupo.
En el ejemplo de contar los empleados por sexo, podemos
limitar para que despliegue solo aqullos que sean ms
de 3, el query que cuenta empleados por sexo es:
test=> SELECT sexo, COUNT(*) FROM empleado
GROUP BY sexo;
Slo los que sean ms de 3 empleados de ese sexo:
test=> SELECT sexo, COUNT(*) FROM empleado
GROUP BY sexo HAVING COUNT(*)>3;