Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comandos SQL
Comandos SQL
En la figura anterior se observa que el database server con acceso a las tres bases de datos: demo, finanzas y test. Con el comando psql finanzas se puede conectar a la base de datos finanzas Para ver una lista de las bases de datos, teclear psql -l
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;
Obtener algunas columnas y todos los renglones de la tabla empleado test=> SELECT apellido, sueldo, ingreso 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
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');
AND se usa para combinar las dos comparaciones que conecta, ejemplo: test=> SELECT * FROM empleado WHERE nombre='Mara' AND apellido='Prez'; OR verifica que se cumpla una de las dos comparaciones al menos, ejemplo: test=> SELECT * FROM empleado WHERE sexo = 'F' OR edad = 24; Si se combinan ANDs y ORs en un mismo query es mejor agrupar los ANDs y los ORs usando parntesis. Los ANDs se evalan primero. Por ejemplo, si se quieren los de apellido Prez y que sean hombres mujeres si no usamos parntesis el resultado es incorrecto, ya que se evala el AND primero: test=> SELECT * FROM empleado WHERE apellido='Prez' AND sexo='M' OR sexo='F'; Me da los de apellido Prez Y son de sexo M pero tambin todos los de sexo F, ya que primero se ejecuta el AND y despus el OR. Lo correcto es: test=> SELECT * FROM empleado WHERE apellido='Prez' AND (sexo='M' OR sexo='F'); Este me da los que son de apellido Prez y que son de sexo M F.
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;