Sql básico - compendio

1,192 views
959 views

Published on

Un compendio de sentencias SQL, trata desde las sentencias DDL hasta las DML, INSERT, UPDATE, DELETE, CREATE, ALTER,se presentan mediante ejemplos detallando su estructura. Se incluyen la creación de restricciones,el borrado de las mismas y el manejo de las llaves primarias, foraneas e indices.
Las subconsultas son incluidas, así como el trabajo con WHERE, el GROUP BY y el HAVING, considerando los operadores de grupo AVG y MAX.
Se concibe la presentación como una guía rápida de referencia para SQL.
Se baso en el SQL compatible para ORACLE

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,192
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
54
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Sql básico - compendio

  1. 1. SQL BÁSICO Msc.Ing. JOSE FABIAN DIAZ SILVA @josefabiandiaz
  2. 2. SQL - INTRO  SQL : Structure Query Language  Es un lenguaje muy popular para el trabajo con los motores de bases de datos, alcanzo su punto mas alto con los sistemas de almacenamiento relacionales (basado en relación entre tablas).  Existe un estándar definido para trabajar con SQL pero cada motor de base datos implementa algunas sentencias propietarias pensadas en el aprovechamiento de su sistema.
  3. 3. SENTENCIAS Sentencias Clasificación SELECT Recuperación de datos INSERT UPDATE DELETE MERGE Lenguaje de manipulación de datos (DML) CREATE ALTER DROP RENAME TRUNCATE Lenguaje de definición de datos (DDL) COMMIT ROLLBACK SAVEPOINT Control de transacciones GRANT REVOKE Lenguaje de control de datos (DCL)
  4. 4. RECUPERACIÓN DE DATOS Data Retrieval
  5. 5. SELECT  SELECT *| { [DISTINCT]columna | expresión[alias], … } FROM table;  El “*” se emplea junto a la palabra reservada SELECT para retornar todas las columnas de la tabla, si no es empleado se tiene que referir explícitamente al campo=columna.  DISTINCT es un comando para asegurar que no se repitan los datos retornados.  Se pueden emplear los denominados Alias para referirse a un campo. Todos los campos se separa en el FROM se especifica el nombre de la tabla a consultar. SELECT nombre, apellido FROM persona;
  6. 6. DEFINIENDO “ALIAS”  SELECT apellido “empleado”, salario * 12 “sueldoTotal” FROM empleados;  Los alias ayudan a darle mas sentido a los datos resultantes de una consulta. En el ejemplo presentado se aprecia como una expresión “salario * 12” puede ser empleada como retorno de una consulta SELECT. “Los alias se caracterizan por emplear las comillas dobles en su nombramiento”.
  7. 7. CONCATENACIÓN & DUPLICACIÓN  SELECT nombre || apellido as “nombres” FROM empleados;  Se aprecia que el símbolo “||” se emplea para unir dos campos , así como la palabra “as” se establece para indicar el alias que llevara estos campos unidos. SELECT Distinct departamento FROM empleados; La palabra “distinct” evita la repetición de campos cuando se recuperan los datos de una tabla.
  8. 8. DESCRIBIR ESTRUCTURA  DESCRIBE “NOMBRE TABLA”  Por medio de la palabra reservada DESCRIBE o su versión resumida DESC es posible conocer los campos con su tipo y tamaño que corresponden a un arreglo tipo tabla. Nombre Restricción Tipo Id_empleado NOT NULL NUMBER(5) Nombre NOT NULL VARCHAR2(20) Apellido NOT NULL VARCHAR2(20)
  9. 9. WHERE  SELECT *| { [DISTINCT]columna | expresión[alias], … } FROM table [WHERE condicion)(es)];  La palabra “WHERE” se emplea para restringir las filas que se retornan el empleo de la misma brinda versatilidad al poder incluir diversas condiciones. SELECT nombre, apellido FROM persona WHERE id_empleado=23;
  10. 10. BETWEEN  SELECT apellido, salario  FROM empleados WHERE salario BETWEEN 100 AND 300;  Con la sentencia BETWEEN se restringe un intervalo dentro de los cuales se espera conseguir un resultado. el empleo de la misma brinda versatilidad al poder incluir diversas condiciones de validación.
  11. 11. IN  SELECT apellido, salario  FROM empleados WHERE salario IN (100,200,600);  Con la sentencia IN se restringe los valores retornados únicamente a los que coincidan con los descritos en el conjunto dado por IN. La posibilidad de realizar una consulta al interior de los paréntesis de IN abre nuevas posibilidades..
  12. 12. LIKE  SELECT apellido, salario  FROM empleados WHERE apellido LIKE ‘D%’;  Retorna aquellos empleados cuyo apellido inicie con “D”. Con LIKE se efectúa una consulta en campos de cadenas de caracteres. El símbolo % se emplea como comodín para representar cualquier cantidad de cadena de caracteres en la posición que se localice. Es decir si se emplea “%D%” se retornaría cualquier apellido que contenga la letra D.
  13. 13. ORDER BY  SELECT apellido, salario FROM empleados ORDER BY fecha_contrato asc/desc; La sentencia ORDER BY permite efectuar un ordenamiento de los datos recuperados de la consulta(las columnas), puede ser del tipo ascendente ASC o descendente DESC, lo cual se indica al finalizar la sentencia.
  14. 14. GROUP BY  SELECT id_ jefe,avg(salario) FROM empleados GROUP BY id_jefe;  La sentencia anterior retorna el promedio(avg) del salario de aquellas personas que tienen el mismo jefe. Algunos datos se desean trabajar como si se tratara de un grupo de los mismos. Con la sentencia GROUP BY se agrupan los datos y permite efectuar operaciones sobre ellos.
  15. 15. HAVING  SELECT id_ jefe,max(salario) FROM empleados GROUP BY id_jefe HAVING MAX(salario)>300;  La sentencia HAVING permite efectuar consultas tipo WHERE sobre las agrupaciones de datos. En el ejemplo presentado si agrupo por el jefe, pero solo se presentaran los datos de aquellos grupos que el máximo del salario sea superior a 300.
  16. 16. SUBQUERY  SELECT nombre, apellido FROM empleados WHERE sueldo> (SELECT sueldo FROM empleados WHERE apellido=‘diaz’);  La anterior se denomina “subconsulta” cuando se emplea una consulta SQL como condición a evaluar por una consulta superior. No todas las implementaciones de SQL admiten subconsultas, así como tampoco todos los gestores de bases de datos las compilan.
  17. 17. DML: MANIPULACIÓN DE DATOS DML: Data manipulation laguage
  18. 18. INSERT  INSERT INTO nombre_tabla (campos separados por coma) VALUES (valores para los campos, separado por comas);  La sentencia INSERT se emplea para añadir campos a una tabla. Cuando los campos son no numéricos se debe encerrar dentro de comillas simples es valor escrito para que el compilador de SQL no lo confunda con el valor de una constante. INSERT INTO empleado (nombre, apellido, sueldo) values(‘fabian’,’diaz’,300);
  19. 19. INSERT – VALORES NULOS  INSERT INTO empleado(nombre, apellido) VALUES (‘fabian’,’diaz’);  Se puede insertar valores nulos por el método implícito de no nombrar el campo. INSERT INTO empleado VALUES (‘fabian’,’diaz’,NULL); Pero también se puede referenciar de forma explicita, indicando que el campo esta vacío o nulo.
  20. 20. UPDATE  UPDATE empleado SET salario=100 WHERE apellido=‘diaz’;  Se emplea para modificar el contenido de los campos retornados por una consulta WHERE. Importante: Si la clausula WHERE no se coloca, toda la tabla sufrirá el cambio especificado.
  21. 21. DELETE  DELETE FROM empleado WHERE apellido=‘diaz’;  Se emplea para eliminar los registros filtrados por la consulta WHERE. Importante: Si la clausula WHERE no se coloca, toda la tabla será borrada..
  22. 22. DDL: DEFINICIÓN DE DATOS DDL: Data Definition Language
  23. 23. CREATE  CREATE TABLE nombre_tabla (columna tipo);  Se debe especificar el nombre de la tabla junto con sus campos y el tipo de los mismos. Si es preciso eliminar la tabla solo es necesario escribir: DROP TABLE nombre_tabla CREATE TABLE empleado (id_empleado number(2), nombre varchar2(20), apellido varchar2(20), salario number(5));
  24. 24. ALTER TABLE  Sobre una tabla se pueden realizar 3 tipos de alteraciones,  Adicionar ADD:  ALTER TABLE nombre_tabla ADD (nombre_columna tipo_de_dato); Modificar MODIFY: ALTER TABLE nombre_tabla MODIFY (nombre_columna tipo_de_dato);  Eliminar DROP: ALTER TABLE nombre_tabla DROP (nombre_columna);
  25. 25. RESTRICCIONES : LLAVE PRIMARIA  Las restricciones se emplean para adicionarle a las tablas un control y coherencia.  La llave primaria permite garantizar la identificación única de un registro al interior de la tabla. CREATE TABLE empleado Notese que “id_pk_empleado” es el nombre de la (id_empleado number(2), llave primaria y puede ser reemplazado por nombre varchar2(20), cualquier valor. apellido varchar2(20), salario number(5), CONSTRAINT id_pk_empleado PRIMARY KEY(id_empleado));
  26. 26. RESTRICCIONES : NOT NULL  Algunos campos serán obligatorios y no podrán ser creados vacíos o nulos, para lo cual se deben declarar de la siguiente forma al interior de la tabla. CREATE TABLE empleado (id_empleado number(2), nombre varchar2(20) NOT NULL, apellido varchar2(20), salario number(5)); Mas de un campo puede ser declarado con NOT NULL, incluso todos.
  27. 27. RESTRICCIONES : UNIQUE  La llave primaria permite identificar un campo de manera única al interior de una tabla y se emplea para referenciarlo, pero existen otros campos que se desea no tener duplicados, aunque no se empleen como referencia. Estos campos se crean como únicos. CREATE TABLE empleado (id_empleado number(2), nombre varchar2(20) NOT NULL, apellido varchar2(20), salario number(5), “No se emplean para identificación como la llave primaria.” email varchar2(20),CONSTRAINT emp_email_unico UNIQUE(email));
  28. 28. RESTRICCIONES : LLAVE FORANEA  La llave foránea hace referencia a un campo que coincide con la llave primaria de otra tabla. Se emplea para crear relaciones de dependencia entre tablas. CREATE TABLE empleado (id_empleado number(2), nombre varchar2(20), “El campo id_departamento hace referencia a la apellido varchar2(20), tabla departamento que tiene un campo con el salario number(5), mismo nombre.” id_departamento number(2), email varchar2(20),CONSTRAINT emp_dep_fk (id_departamento) REFERENCES departamento (id_departamento));
  29. 29. RESTRICCIONES : ADICIONAR/ELIMINAR  ALTER TABLE empleado ADD CONSTRAINT emp_direc FOREIGN KEY(jefe_id) REFERENCES empleado (id_empleado) ALTER TABLE empleado DROP CONSTRAINT emp_direc “Todas las restricciones se pueden agregar o eliminar empleando el mismo método”.
  30. 30. ÍNDICES  Los índices se emplean para agilizar las consultas sobre los campos , ahorrando tiempo de procesamiento al gestor de base de datos. CREATE INDEX nombre_índice ON nombre_tabla(nombre_campo); CREATE INDEX nombre_emp ON empleado(nombre); “Se pueden tener tantos índices como campos tenga la tabla, todo depende de las necesidades propias del desarrollador”.
  31. 31. CONSULTAS @josefabiandiaz https://www.youtube.com/user/fabiandiazs josefabiandiazs@Gmail.com

×