Your SlideShare is downloading. ×
  • Like
02   sql reference
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

02 sql reference

  • 199 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
199
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Solución inteligente para Empresas deTelecomunicaciones y Servicios Públicos
  • 2. INTRODUCCION A BASE DEDATOS(Sept/2011)
  • 3. Agenda1.Introducción2.Basic Elements of Oracle SQL3.SQL Queries and Subqueries4.Operators5.Expressions, Conditions, and Queries6.Functions7.SQL Statements8.SQL Tuning Workshop
  • 4. Referencia SQL 1. IntroducciónSQL (Lenguaje de consulta estructurado): es un conjunto de sentencias conlas que los programas y usuarios pueden accedera a las base de datos.El doctor E.F codd en su paper “a relational model of data for lange shareddata banks” en junio de 1970 estableció el modelo que hoy aceptamos como“el modelo para el manejo de systemas de base de datos relacionales”(RDBMS). Luego se desarrollo SEQUEL (Structured English QueryLanguage) por IBM Corporation, Inc. Que con el tiempo se convirtio en SQL.Convenciones LexicasCuando se crea un sentencia SQL. Se puede incluir uno o mas <tabs>,<enter>, <space>.No es sensible a mayusculas en el caso de palabras reservadas, palabrasclaves, identificadores y parametros. Sin embargo si para los literales de tipotexto y los nombres en comillas.
  • 5. Referencia SQL2. Basic Elements of Oracle SQL Datatypes Literals Format Models Nulls Pseudocolumns Comments Database Objects Schema Object Names and Qualifiers Syntax for Schema Objects and Parts in SQL Statements
  • 6. Referencia SQL DatatypesCada valor manipulado por oracle tiene un tipo de dato. El valor de ciertotipo de dato tiene un conjunto de propiedades asociadas, al igual que undominio.Cuando creas una tabla o cluster, se debe especificar el tipo de dato decada columna. Cuando creas un procedimiento o funcion, se debeespecificar el tipo de datos de cada argumento.http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/sql_elements2a.htm
  • 7. Referencia SQL Tipos de datosPertenecientes a la base de datos NUMBER CHAR VARCHAR2 DATE LONG LONG RAW RAWROWID BLOB, CLOB, NCLOB, BFILE
  • 8. Referencia SQL LiteralesLos terminos de “literales” y “valores contantes” son sinonimos yrepresentan un valor de datos establecido. Los tipos de literales son:Literales de TextoLitereles de EnterosLiterales NumericosLiterales IntervaloSe pueden espeficar literales como parte de una expresion o condicion.Veamos la sintaxis de cada tipo.
  • 9. Referencia SQL Literales de TextoDefinen un texto o carácter. Ejemplos : ‘hola mundo’, ‘d’. Y su sintaxis: Donde N especifica el uso de caracteres Nacionales. C es cualquier miembro del conjunto de caracteres. ‘’ son dos comillas simples que marcan el comienzo y el final de la cadena
  • 10. Referencia SQL Literales NumericosEstan el dominio de los numero fraccionarios. Ejemplos: 1.1, -12.3, .01, 23E-10.
  • 11. Referencia SQL Literales de IntervalosEstos literales especifican un periodo de tiempo. Oracle soporta dos tipo de literales de intervalos, YEAR TO MONTH y.YEAR TO MONTH
  • 12. Referencia SQLLiterales de IntervaloDAY TO SECOND
  • 13. Referencia SQL Modelo de formatosTO_DATE(27-OCT-98, DD-MON-RR)TO_CHAR(salary, $99,990.99)to_char(0.1, 00.0999)
  • 14. Referencia SQLModelo de formatos Elemento Ejemplo Descripcion, (comma) 9,999 Coma en un punto Especifico. (period) 99.99 Decimal$ $ 9.999 Signo Dólar0 0999 Cero a la izquierda 9990 Cero a la derecha9 9999 Cantidad de DigitosB B9999 Retorna Blanco en esa posicionC C999 Retorna el simbolo de Moneda ISO (NLS_ISO_CURRENCY)D 99D99 Retorna el carácter decimalEEEE 9.9EEEE Retorna un Valor usando notacion cientificaG 9G999 Pone el separador de grupo (miles)L L999 Retorna carácter de monedaMI 9999MI Retorna negativo o positivoPR 9999PR Retorna valor negativio en <>RN RN Retorna Romano Mayuscularn rn Retorna Romano MinusculaS S9999 Retorna negativo 9999S Retorna positivo con +
  • 15. Referencia SQL NullCuando una columna no tiene un valor asociado decimos que el valor es null. Mas sin embargo, se puede restringir a la columna como para que no puedan haber valores nulos.Null no representa el valor cero, ni tampoco la cadena vacia ‘’. Todas las operaciones con null retornaran null excepto la condenación.Funcion NVL: NVL (variable,0).Condiciones evaluadas con null retornaran UNKNOWN. Y estas condiciones no retornaran columnas si son puestas en el campo WHERE.
  • 16. Referencia SQL PseudocolumnasLas pseudocolumnas actuan igual que una columna pero sus datos no estan guardados en la tabla. CURRVAL and NEXTVAL LEVEL ROWID ROWNUM XMLDATA
  • 17. Referencia SQL ComentariosEn cual cualquier sentencia SQL se pueden adicionar comentarios.SELECT last_name, salary + NVL(commission_pct, 0), job_id, e.department_id FROM employees e, departments d /*The DEPARTMENTS table is used to get the department name.*/ WHERE e.department_id = d.department_id AND salary + NVL(commission_pct,0) > -- Subquery: (SELECT salary + NVL(commission_pct,0)FROM employees WHERE last_name = Pataballa);
  • 18. Referencia SQL ObjetosLos objetos pueden o no estar asociados a un schema. Un schema es una colección lógica de datos estructurados y objetos.http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/sql_elements8a.htm
  • 19. Referencia SQL Nombramiento de objetos de esquemaMáximo 30 caracteres. Excepto las base de datos que solo pueden tener máximo 8 caracteres y los links hasta 128.No se pueden utilizar las palabras reservadas.No pueden empezar con “SYS_“, y deben empezar con un carácter alfabético.En un espacio de nombres dos objetos no pueden tener el mismo nombre.
  • 20. Referencia SQL 6. Consultas SQL ColumnaColumna Campos EspecialEspecial Columna a ur ct t ru RUT Nombres Apellidos Fecha_Nac Sueldo Ciudad Es 123 Jaja Merio 01/Jan/68 1’456.323 C 534 f Mario Torres 432.122 P 899 Perla Torres 14/Jun/56 6’856.556 P os at 566 Mario Bolaños 5/Sep/89 432.121 B D Fila, Tupla
  • 21. Referencia SQL6. Consultas SQL Proyección Selección Tabla 1 Tabla 1 Join Tabla 1 Tabla 2
  • 22. Referencia SQL 6. Consultas SQLBloque Básico:SELECT identifica las columnas que se quieren verFROM identifica de que tablaWHERE condición para traer ciertos registros y otro no
  • 23. Referencia SQL 6. Consultas SQLf
  • 24. Referencia SQL 3. OperadoresUn operador manipula campos de datos y retorna un resultado. Estos pueden ser unitarios o binarios. Y además, tienen cierta precedencia con la cual Oracle determina en una expresión cual operador debe evaluarse primero. Los usuario pueden crear sus propios operadores. Veamos:Arithmetic OperatorsSe pueden usar operadores aritméticos para negar, sumar, dividir, restar y multiplicar. +, -, *, /.Concatenation OperatorSe usa para unir dos cadenas de texto. ||Set OperatorsUtilizados para combinar dos o mas consultas en un mismo resultado. UNION, MINUS, INTERCEPT.
  • 25. Referencia SQL UNION [ALL], INTERSECT, MINUSUNION ALL :SELECT product_id FROM inventoriesINTERSECTSELECT product_id FROM order_items;INTERSECT :SELECT product_id FROM inventoriesINTERSECTSELECT product_id FROM order_items;
  • 26. Referencia SQL UNION [ALL], INTERSECT, MINUSSe pueden combinar múltiples consultas usando los operadores de conjunto. Todo tienen la misma precedencia.UNION :SELECT location_id, department_name "Department", TO_CHAR(NULL) "Warehouse" FROM departments UNION SELECT location_id, TO_CHAR(NULL) "Department", warehouse_name FROM warehouses;
  • 27. Referencia SQL UNION [ALL], INTERSECT, MINUSMINUS :SELECT product_id FROM inventoriesMINUSSELECT product_id FROM order_items;
  • 28. Referencia SQL 4. ExpresionesUna expresión es la combinación de dos o mas valores, operadores, funciones, procedimientos a evaluar. Una expresión asume el tipo de datos de sus componentes.
  • 29. Referencia SQL ExpresionesSimple ExpressionsCompound ExpressionsCASE ExpressionsCURSOR ExpressionsDatetime ExpressionsFunction ExpressionsINTERVAL ExpressionsObject Access ExpressionsScalar Subquery ExpressionsType Constructor ExpressionsVariable ExpressionsExpression Lists
  • 30. Referencia SQLExpresiones SimplesH
  • 31. Referencia SQLExpresiones compuestas
  • 32. Referencia SQLExpresiones CASEH
  • 33. Referencia SQL Expresiones CURSORSELECT department_name, CURSOR(SELECT salary, commission_pct FROM employees e WHERE e.department_id = d.department_id) FROM departments d;
  • 34. Referencia SQLExpresiones tipo fechaH
  • 35. Referencia SQL Expresiones tipo fechacircle_area(radius)payroll.tax_rate(empno)hr.employees.comm_pct(dependents, empno)@remoteDBMS_LOB.getlength(column_name)my_function(DISTINCT a_column)
  • 36. Referencia SQL Expresiones tipo Intervaloh
  • 37. Referencia SQL Expresiones de subconsultas escalaresUna expresión de consulta escalar solo devolverá una columna de una fila. Si el valor de la subconsulta retorna 0 filas, el valor será null. Si la consulta retorna mas de un registro, se levantará un error.
  • 38. Referencia SQL Lista de ExpresionesSELECT * FROM employeesWHERE (first_name, last_name, email) IN((Guy, Himuro, GHIMURO),(Karen, Colmenares, KCOLMENA))
  • 39. Referencia SQL CondicionesUna Condición especifica una combinación de uno o mas expresiones y operadores lógicos, los cuales retornan TRUE, FALSE o UNKNOWN.
  • 40. Referencia SQLCondiciones
  • 41. Referencia SQLCondiciones
  • 42. Referencia SQL Condiciones LogicasNOT: Niega la expresión, TRUE -> FALSE, FALSE -> TRUE.AND: Retorna TRUE solo si todas sus expresiones es TRUE.OR: Retorna TRUE si alguna de sus condiciones es TRUE.
  • 43. Referencia SQLCondiciones de RelacionesN
  • 44. Referencia SQLCondiciones de RangoN
  • 45. Referencia SQLCondiciones de nullsN
  • 46. Referencia SQLCondiciones EXISTS
  • 47. Referencia SQLCondiciones LIKEN
  • 48. Referencia SQL 5. FuncionesLas funciones son como operadores en cuanto ellos procesan datos y retornan un resultado. Difieren en la forma en el formato de sus argumentos. Ellos pueden tener cero o mucho argumentos.function(argument, argument, ...)Si los tipos de datos que son pasados como parámetros no coinciden con los tipos de datos de la función, Oracle intenta convertirlos.
  • 49. Referencia SQL Ordenacion de consultas SQLUsando la cláusula ORDER BY ordenamos los datos de la consulta lanzada.El mecanismos por el cual Oracle ordena los valores son especificado explicítame por NTL_SORT o Implícitamente por NLS_LANGUAGE.
  • 50. Referencia SQL JoinsUn join es una consulta que combina dos o mas tablas, vistas o vistas materializadas. Si cualquiera de estas tablas tienen nombre de columnas comunes, se deberán especificar en el llamamiento de que tablas provienen para evitar ambigüedades.Tipos: Equijoins Selft joins Cartesian Products Inner Joins Outer Joins
  • 51. Referencia SQL EquijoinsEs un join el cual une dos columnas por medio del operador ‘=‘. Combinando así los registros con valores equivalentes para las columnas especificadas.SELECT last_name, job_id, departments.department_id, department_name FROM employees, departments WHERE employees.department_id = departments.department_id;
  • 52. Referencia SQL Self JoinsEs un join de una tabla a si misma. Así, esta tabla aparecerá dos veces en la cláusula FROM, y deberán tener alias para identificarlas.SELECT e1.last_name|| works for ||e2.last_name "Employees and Their Managers" FROM employees e1, employees e2 WHERE e1.manager_id = e2.employee_id AND e1.last_name LIKE R%;
  • 53. Referencia SQL Cartesian ProductsSi se unen dos tablas sin condiciones, se producirá un producto cartesianas, cada registro de una tabla se cada registro de la otra. Es muy ineficiente y muy pocas veces se utilizan.
  • 54. Referencia SQL Inner joinsUn join de dos o mas tablas las cuales satisfacen una condición que no necesariamente es la igualdad.
  • 55. Referencia SQL outer joinsUn outer join no solo retorna los registros que satisfacen la condición, sino también, los registros de una tabla para los cuales no una que no se encuentren en la condición.SELECT e1.employee_id, e1.manager_id, e2.employee_id FROM employees e1, employees e2 WHERE e1.manager_id(+) = e2.employee_id;
  • 56. Referencia SQL SubconsultasEs cuando tenemos una consulta dentro de otra. La cual nos permite resolver preguntas al subdividir el problema. Dependiendo de su ubicación en la consulta puede tener diferentes interpretaciones y restricciones.SELECT department_id, last_name, salary FROM employees x WHERE salary > (SELECT AVG(salary) FROM employees WHERE x.department_id = department_id) ORDER BY department_id;
  • 57. Referencia SQL Tabla DUALEsta es una tabla creada automáticamente por oracle que permite acceso al diccionario de datos. Tiene una columna DUMMY de tipo VARCHAR2(1) con el valor ‘X’. Alternativamente es utilizada para seleccionar unas constante, pseudocolumna, o función de cualquier tabla.
  • 58. Referencia SQL Operador ANY y SOME• Compara un valor por cada valor en una lista o una subconsulta• Debe esta precedido de cualquiera de los siguiente operadores• =, !=, >, <, <=, >=select first_name, salary from employees where salary > any (1600, 2999);select first_name, salary from employees where substr(first_name,1,1) = any (A, W, J);
  • 59. Referencia SQL Operador ALL• Compara un valor por cada valor en una lista o una subconsulta• Debe esta precedido de cualquiera de los siguiente operadores• =, !=, >, <, <=, >=select firt_name, salary from employees where salary > all (1600, 2999);select first_name, salary from employees where salary > 1600 and salary > 2999;
  • 60. Referencia SQL AgregacionLa agregación es la propiedad que permite agrupar información y sacar reportes de ella usando funciones como:• Count• Sum• Max• Min• avg
  • 61. Referencia SQL AgrupacionLa agrupación es una propiedad que nos permite como su nombre lo indica agrupar información con el fin de generar datos estadísticos:Se puede agrupar usando funciones de agregación o usando la palabra reservada GROUP BY.select redshift, type, count(*) as numGal, avg(stellarMass) as m_avg, max(stellarMass) as m_max from DeLucia2006agroup by redshift, typeorder by redshift, type
  • 62. Referencia SQL AgrupacionPara poder hacer comparaciones con datos que se encuentran agrupados es necesario utilizar la sentencia HAVINGSELECT manager_id, count(*) cantidad FROM jobs job, employees emp WHERE job.job_id =SA_REP AND job.job_id = emp.job_id GROUP BY manager_id HAVING count(*) >= 3
  • 63. Referencia SQL Sentencias Herencia• Sentencias usadas para generar datos en forma de arbol.• Usado en tablas involutivas• Palabra reservada connect by .... Prior• SELECT level, rpad( ,(level - 1)*10, )||first_name|| ||last_name nombre FROM employees connect BY prior employee_id = manager_id start with manager_id IS null
  • 64. Referencia SQLSentencias HerenciaModo de procesamiento:• Aplica JOIN antes CB• Selecciona filas Root (Start with)• Selecciona hijos Root• Ejecuta WHERE si no JOIN
  • 65. Referencia SQL Tallerhttp://www.oracle.com/technology/obe/obe9ir2/obe-in/sschema/sschema.htm1. What are the names of the employees that have salaries between 2000and 3000?2. What are the names of the employees that work in Administration?3. What are the names of the employees working in Administration or Marketing?4. What are the employees that earn more than their manager?5. What are the names of the salesmen who have an income (salary pluscommission) above 15000?
  • 66. Referencia SQL Taller6. What are the managers that earn more than any of their employees?7. What are the names of the employees who are managers of at least onesalesman?8. What are the names of the employees who are managers of at least threesalesmen?9. What are the names of the employees who are managers, but do not manageany salesmen?10. What is the average salary for each job?11. What is the average salary of employees by job type?12. What is the average salary of employees by location?
  • 67. Referencia SQL Taller13. Who is the lowest paid employee in Roma?14. What are the names of the employees who were hired before their manager?15. For how many employees is it the case that the employee and his/her managerwork in diferent towns?16. How many employees have a higher salary than the average salary of allemployees working in the same DEPARTMENT?17. What is the average salary by town?18. Which is the town with the lowest average salary?