Comandos sql

995 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
995
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
33
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Comandos sql

  1. 1. COMANDOS SQL
  2. 2. Bases de datos relacionalesServidor de base de datosBase de datos “Demo”Base de datos “Finanzas”Base de datos “Test”
  3. 3. En la figura anterior se observa que eldatabase server con acceso a las tresbases de datos: demo, finanzas y test.Con el comando psql finanzas se puedeconectar a la base de datos finanzasPara ver una lista de las bases de datos,teclear psql -l
  4. 4. Crear una tabla• Vamos a crear una tabla llamada empleado en algunabase de datos, por ejemplo test.test=> CREATE TABLE empleado (test(> nombre VARCHAR(20),test(> apellido VARCHAR(20),test(> sueldo FLOAT,test(> sexo CHAR(1),test(> edad INTEGER,test(> transaccion TIMESTAMP DEFAULTCURRENT_TIMESTAMP,test(> ingreso DATE);
  5. 5. Insertar datostest=> INSERT INTO empleado (nombre,apellido, sueldo, sexo, edad, ingreso)VALUEStest-> (Javier, Ramírez, 34452.89, M, 23, 4-06-08);Observamos que se ponen las columnas en lasque se va a insertar, no se puso la columnatransaccion ya que esta se inserta por defaultcon la hora y la fecha actuales.
  6. 6. SeleccionarObtener toda la tabla empleadotest=> SELECT * FROM empleado;Obtener algunas columnas y todos losrenglones de la tabla empleadotest=> SELECT apellido, sueldo, ingresoFROM empleado;
  7. 7. Seleccionar renglones específicosEn SELECT se usa la cláusula WHERE, donde seespecifican los renglones que se quieren obtener. Porejemplo el nombre y apellido de los empleados cuyaedad sea mayor ó igual a 25 años.test=> SELECT nombre, apellido FROM empleadotest-> WHERE edad >=25;O bien, los que su apellido sea Ramíreztest=> SELECT nombre, apellido FROM empleadotest-> WHERE apellido = Ramírez;Como se trata de columnas tipo caracter, se usanapóstrofes y debe escribirse exactamente como esté enla base de datos.
  8. 8. Removiendo datos con DELETE• Con DELETE podemos mover uno ó bientodos los renglones de una tabla, porejemplo DELETE FROM empleado;eliminaría todos los datos de la tablaempleado. Si utilizamos la cláusulaWHERE se eliminan los renglones quecumplan la condición, por ejemplo:test=> DELETE FROM empleadotest-> WHERE ingreso = 2008-12-24’;
  9. 9. Modificando datos con UPDATEEn una base de datos además de insertar yeliminar datos hay que actualizar. Por ejemplo,la edad del empleado Javier Pérez es de 35años.test=> UPDATE empleado SET edad = 35WHERE apellido = Pérez;La cláusula WHERE controla los renglones en losque se llevará a cabo la modificación. Si no sepone esta cláusula, se cambiarían la edad detodos los empleados a 35.
  10. 10. Ordenando datos con ORDER BYCuando hacemos un SELECT, los renglones sedespliegan con un orden no determinado. Si sequieren obtener los renglones en un ordenespecífico, es necesario aumentar la cláusulaORDER BY al final del SELECT.test=> SELECT * FROM empleado ORDER BY apellido;Para invertir el orden se usa DESCtest=> SELECT * FROM empleado ORDER BY edadDESC;Se puede ordenar por distintas columnas, si en la primerahay dos valores iguales, se usa la siguiente para vercual va primero.
  11. 11. Destruyendo tablas con DROP• Cuando queremos eliminarcompletamente la tabla escribimos:DROP TABLE empleado;• Si queremos eliminar todos los datos deuna tabla pero conservar su estructurautilizamos (no ejecutarla):DELETE FROM empleado;
  12. 12. Caracteres especialesSi el empleado que vamos a insertar tiene unapóstrofe en el nombre, por ejemplo:test=> INSERT INTO empleado (nombre,apellido, sueldo, sexo, edad, ingreso)VALUEStest-> (Jack, ODonnell, 34452.89, M, 23, 4-06-08);Me marca un error: test>Para resolverlo:ODonnell,se ponen dos apóstrofes óODonnell se pone una diagonal invertida
  13. 13. Etiquetado de columnas yComentarios• El nombre que aparece en la salida de un SELECThasta arriba es la etiqueta de la columna quecorresponde al nombre del atributo. Se puede cambiarusando la palabra clave AS, por ejempo:test=> SELECT nombre AS Razón_Social FROM cuenta;test=> SELECT 1 + 3 AS total;• Con dos guiones -- indica que hasta el final del renglónes un comentario• Con /* al principio y con */ al final indica que todo lo queestá contenido es un comentariotest=> /*Esto es un comentariotest*> y no ejecuta nada*/;
  14. 14. Uso de AND/ORAND y OR se usan para conectar condiciones simples.Insertaremos más datos en empleado:test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad,ingreso)VALUES (María, Pérez, 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 (María, Romero, 11317.89, F, 23, 30-08-2004);
  15. 15. AND se usa para combinar las dos comparaciones que conecta,ejemplo:test=> SELECT * FROM empleado WHERE nombre=María ANDapellido=Pérez;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 losANDs y los ORs usando paréntesis. Los ANDs se evalúan primero.Por ejemplo, si se quieren los de apellido Pérez y que seanhombres ó mujeres si no usamos paréntesis el resultado esincorrecto, ya que se evalúa el AND primero:test=> SELECT * FROM empleado WHERE apellido=Pérez ANDsexo=M OR sexo=F; Me da los de apellido Pérez Y son de sexoM pero también todos los de sexo F´, ya que primero se ejecuta elAND y después el OR.Lo correcto es:test=> SELECT * FROM empleado WHERE apellido=Pérez AND(sexo=M OR sexo=F); Este me da los que son de apellido Pérezy que son de sexo M ó F.
  16. 16. Between y LikeSi queremos aquéllos empleados que están entre 24 y 30años de edad:test=> SELECT * FROM empleado WHERE edad >= 24AND edad <= 30;test=> SELECT * FROM empleado WHERE edadBETWEEN 24 AND 30;Para obtener los datos de los empleados cuyo apellidoinicia con la letra R:test=> SELECT * FROM empleado WHERE apellido LIKER%;Obtener los que ingresaron en 2008:test=> SELECT * FROM empleado WHERE ingreso LIKE2008%;
  17. 17. Comparaciones con LIKEEmpieza con una D LIKE ‘D%’Contiene una D LIKE ‘%D%’Tiene D en 2da posición LIKE ‘_D%’Empieza con D y tiene una e LIKE ‘D%e%’No empieza con D NOT LIKE ‘D%’
  18. 18. AgregaciónA veces es necesario resumir ciertainformación. En lugar de ver renglones,solo se necesita saber cuántos son. Paraesto se usan las siguientes palabras clave:COUNT(*) cuenta renglonesSUM(nombre_col) totalMAX(nombre_col) máximoMIN(nombre_col) mínimoAVG(nombre_col) promedio
  19. 19. EjemplosContar número de renglonestest=> SELECT COUNT(*) FROM empleado;Obtener la suma de los sueldostest=> SELECT SUM(sueldo) FROM empleado;Obtener el sueldo máximotest=> SELECT MAX(sueldo) FROM empleado;Obtener la edad mínimatest=> SELECT MIN(edad) FROM empleado;Obtener el sueldo promediotest=> SELECT AVG(sueldo) FROM empleado;
  20. 20. GROUP BYEn los ejemplos anteriores nos regresó un renglón comoresultado y sólo se usó una columna con el agregado.Usando los agregados con GROUP BY se tendrá laaplicación del agregado en una columna, en losrenglones agrupados por otra columna.SELECT COUNT(*) FROM empleado, regresa el númerode renglones en la tabla.Si queremos contar cuántos son sexo M y cuantos F:test=> SELECT sexo, COUNT(*) FROM empleadoGROUP 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;
  21. 21. HAVINGPermite probar condiciones en los valores agregados. Amenudo se usa con GROUP BY. Con HAVING sepueden incluir o excluir grupos basados en el valor deagregación para ese grupo.En el ejemplo de contar los empleados por sexo, podemoslimitar para que despliegue solo aquéllos que sean másde 3, el query que cuenta empleados por sexo es:test=> SELECT sexo, COUNT(*) FROM empleadoGROUP BY sexo;Sólo los que sean más de 3 empleados de ese sexo:test=> SELECT sexo, COUNT(*) FROM empleadoGROUP BY sexo HAVING COUNT(*)>3;

×