Documente Academic
Documente Profesional
Documente Cultură
Laboratorio IV - SQL
El SQL es un Lenguaje de Consulta Estructurado que permite expresar diversas operaciones, como por ejemplo, aritmticas, combinatorias, lgicas, seleccin y ordenacin con datos almacenados en una Base de Datos Relacional. Base de Datos Relacional son aquellas que se caracterizan porque la informacin esta contenida en estructuras, llamadas tablas, donde los datos estn dispuestos en filas y columnas.
Laboratorio IV - SQL
SGBD (Sistema de Gestin de Base de Datos relacional) o RDBMS (del ingls Relational Database Management System). Es el software exclusivamente dedicado a tratar con bases de datos relacionales. SGBD que soportan SQL: MySQL, PostgreSQL, Oracle, DB2, Microsoft SQL Server.
Laboratorio IV - SQL
SGBD que soportan SQL: Oracle (Oracle ) MySQL (libre licencia GPL, Sun Microsystem) PostgreSQL (libre, licencia BSD) DB2 (IBM) SQL Server (Microsoft) Sybase ASE (Sybase) Informix (IBM)
Laboratorio IV - SQL
En 1970 Edgar F. Cood propone el modelo relacional y asociado a este un sublenguaje de acceso a los datos basado en el clculo de predicados. En los laboratorios de IBM, entre 1974 y 1975 se implement en un prototipo llamado SEQUEL-XRM. Entre 1976 y 1977, condujeron a una revisin del lenguaje (SEQUEL/2) Cambi de nombre por motivos legales. convirtindose en SQL. A partir de 1981, IBM comenz a entregar sus productos relacionales. En 1983 empez a vender DB2 En 1986, el ANSI adopt SQL como estndar para los lenguajes relacionales. En 1987 se transform en estndar ISO, con el nombre de SQL/86. Luego se presento la versin SQL/89. En 1992 se lanza un nuevo estndar ampliado y revisado del SQL llamado "SQL-92" o "SQL2. El soporte al estndar SQL-92 es general y muy amplio. En 1999 se lanza el estndar SQL:1999 con el alias SQL3. SQL:2008 y SQL:2012 son las ultimas revisiones al estndar SQL
6
Laboratorio IV - SQL
DML (Data Manipulation Language) Lenguaje de Manipulacin de Datos. DDL (Data Definition Language) Lenguaje de Definicin de Datos. DCL (Data Control Language) Lenguaje de Control de Datos.
Laboratorio IV - SQL
El Lenguaje de Manipulacin de Datos (Data Manipulation Language, o DML en ingls) es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. Sentencias: Insert; Delete; Update; Select
Laboratorio IV - SQL
El Lenguaje de Definicin de Datos (Data Definition Language, o DDL en ingls), es el que se encarga de la modificacin de la estructura de los objetos de la base de datos. Sentencias: Create, Alter, Drop y Truncate.
Laboratorio IV - SQL
El Lenguaje de Control de Datos (Data Control Language o DCL en ingls ) es un lenguaje proporcionado por el sistema de gestin de base de datos que incluye una serie de comandos SQL que permiten al administrador controlar el acceso a los datos contenidos en la base de datos. Sentencias: Grant, Revoke y Commit, Rollback
Laboratorio IV - SQL
10
Definir y destruir objetos de la Base de Datos Conceder y denegar autorizaciones para usar estos objetos. Consultar y actualizar datos.
Laboratorio IV - SQL
11
Laboratorio IV - SQL
12
Laboratorio IV - SQL
13
Laboratorio IV - SQL
14
Laboratorio IV - SQL
15
Laboratorio IV - SQL
16
Laboratorio IV - SQL
17
Laboratorio IV - SQL
18
ANSI SQL define un modelo de catlogo/esquema para almacenes de datos. Catlogo: Un catlogo es otra forma de denominar una base de datos. Es una coleccin de esquemas relacionados. Esquema: Un esquema es una coleccin de objetos de base de datos de los que es propietario o autor un usuario particular. Tabla : Las tablas son colecciones de columnas dispuestas en un orden especfico.
Laboratorio IV - SQL
19
Un Catlogo contiene un conjunto de Esquemas. Un Esquema contiene un conjunto de Tablas. Los nombres dentro de un contenedor deben ser nicos, pero otros contenedores pueden contener objetos con el mismo nombre. As por ejemplo, dos tablas pueden tener un atributo con el mismo nombre.
Laboratorio IV - SQL
20
Usando la jerarqua, se puede dar un nombre totalmente calificado a un objeto de la base de datos de la siguiente manera: <catalogo>.<esquema>.<tabla>.<columna>
Aun cuando no es parte del estndar, la mayora de los SGBD define un contenedor denominado base de datos para contener tablas o esquemas que contienen tablas.
Laboratorio IV - SQL
21
Palabras reservadas: son las que tienen un significado propio en el lenguaje. Todas las sentencias SQL comienzan por una palabra reservada. Ejemplo de palabras predefinidas serian SELECT, INSERT, WHERE, INTO. Palabras definidas por el usuario: son los nombres de tablas y columnas Constantes o literales: representan un valor determinado. Signos delimitadores: son signos especiales que aparecen en las sentencias fuera de los otros elementos. Sirven para separar o delimitar estos ltimos. Entre ellos se encuentran los espacios en blanco, los parntesis, las comas y otros.
Laboratorio IV - SQL
22
Laboratorio IV - SQL
23
Los espacios en blanco no son significativos: para aumentar la legibilidad podemos separar las sentencias en distintas lneas, una para cada parte de la sentencia. Para ello podemos usar tabuladores, espacios en blanco.
Las sentencias SQL no distinguen entre maysculas y minsculas: para aumentar la legibilidad utilizaremos maysculas para las palabras claves de SQL y minsculas para los nombres de las tablas y las columnas. Sin embargo, SQL no hace distinciones para las palabras claves como as tampoco para los nombres de las columnas ni de las tablas.
Ing. Gregorio N. Tkachuk
Laboratorio IV - SQL
24
Los puntos y coma son opcionales: las sentencias SQL pueden ser terminadas por un punto y coma (;); siendo utilizadas para separar mltiples sentencias SQL. SQL acepta dos tipos de comentarios: Los comentarios de lnea, los cuales comienzan con dos signos menos (--) Los comentarios multilneas, los cuales comienzan con /* y finalizan con */
Ing. Gregorio N. Tkachuk
Laboratorio IV - SQL
25
CREATE TABLE <nombre_de_la_tabla> ( <nombre_columna-1> < tipo>, <nombre_columna-2> < tipo>, , <nombre_columna-n> <tipo> );
Laboratorio IV - SQL
26
Laboratorio IV - SQL
27
Laboratorio IV - SQL
28
Laboratorio IV - SQL
29
Laboratorio IV - SQL
30
MySQL FLOAT(P)
Rango de valores nmero en punto flotante con signo con una precisin de al menos P dgitos.
numero en punto flotante con signo de precisin mayor que real numero en punto flotante consigno de precisin simple
REAL
REAL
Laboratorio IV - SQL
31
Laboratorio IV - SQL
32
Laboratorio IV - SQL
33
MySQL BIT
BLOB
Laboratorio IV - SQL
34
Comandos: CREATE: Permite crear una Base de Datos, Tabla, Indice. DROP: Permite borrar una Base de Datos, Tabla, Indice. ALTER: Permite modificar la estructura de una Base de Datos, Tabla, Indice. RENAME: Permite cambiar el nombre a una tabla.
Laboratorio IV - SQL
35
Laboratorio IV - SQL
36
Laboratorio IV - SQL
37
CREATE TABLE <nombre_de_la_tabla> ( <nombre_columna-1> < tipo>, <nombre_columna-2> < tipo>, , <nombre_columna-n> <tipo> );
Laboratorio IV - SQL
38
Laboratorio IV - SQL
39
Laboratorio IV - SQL
40
USE <nombre_base_de_datos>
Permite seleccionar la base de datos con la que se va a trabajar.
SHOW TABLES;
Muestra las tablas de la bases de datos seleccionada.
Ing. Gregorio N. Tkachuk
Laboratorio IV - SQL
41
DESCRIBE <nombre_de_tabla>;
Muestra la estructura de la tabla, o sea el nombre y el tipo de cada uno de los campos.
Laboratorio IV - SQL
42
Laboratorio IV - SQL
43
SELECT <lista_atributos> FROM <tablas> WHERE <condicion> ; Ejemplo: SELECT * FROM alumno WHERE aluDoc = 32333444;
SELECT aluDir, aluNom FROM alumno WHERE aluDoc > 30111222;
Ing. Gregorio N. Tkachuk
Laboratorio IV - SQL
44
SELECT [DISTINCT | ALL ] <lista columnas> FROM <lista tablas> [WHERE<condicin de seleccin de filas>] [ORDER BY <especificacin de ordenamiento> [ASC | DESC] ] ; Select devuelve una tabla resultado con las columnas indicadas en <lista columnas> desde las tablas indicadas en FROM <lista tablas> que cumplan con la condicin WHERE<condicin de seleccin de filas> ordenadas por las columnas indicadas en ORDER BY <especificacin de ordenamiento>
Ing. Gregorio N. Tkachuk
Laboratorio IV - SQL
45
DISTINCT: Elimina las filas duplicadas del resultado de la consulta. <lista columnas> lista de atributos que se desea recuperar. El orden en que se especifican los atributos determina el orden de los atributos en los resultados. El * (asterisco) es un comodn que indica todas las columnas. FROM <lista tablas> : Nombre de la o las tablas sobre las que se desea realizar la consulta. Ejemplo: SELECT * FROM alumno WHERE aluNota > 3;
Laboratorio IV - SQL
46
[WHERE<condicin de seleccin de filas>] : Condiciones que deben cumplir las tuplas para formar parte de la seleccin. Estructura de la clusula WHERE: WHERE <columna> <operador> <valor>
Laboratorio IV - SQL
47
[ORDER BY <especificacin de ordenamiento> [ASC | DESC] ] : Se indican los atributos por los cuales se desea obtener ordenada la consulta.
Laboratorio IV - SQL
48
/*Recupera el documento, nombre y direccin de todos los empadronados que tengan documento > 20000000 , ordenado por nombre en forma descendente */
SELECT documento, nombre, direccion FROM padron WHERE documento > 20000000 ORDER BY nombre DESC;
Laboratorio IV - SQL
49
/*Recupera el nombre de todos los empadronados que tengan documento > 20000000 , ordenado por nombre, pero no muestra los repetido */
SELECT DISTINCT nombre FROM padron WHERE documento > 20000000 ORDER BY nombre;
Laboratorio IV - SQL
50
SQL permite la bsqueda de patrones de informacin en la base de datos, por ejemplo si queremos conocer todos los nombre que terminan en rio o aquellos que comienzan con Ma, no lo podramos hacer utilizado condiciones como Where nombre = rio, porque solo obtendramos como resultado aquellos que se llaman rio. Estas consultas se pueden realizar utilizando en la condicin el operador [NOT] LIKE y los comodines % y _ .
SELECT documento, nombre FROM padron WHERE nombre Like %rio ORDER BY nombre;
Laboratorio IV - SQL
51
Descripcin
Concuerda con cualquier substring conteniendo cero mas caracteres (guion bajo) Concuerda con un nico carcter
Ejemplo WHERE nombre LIKE %rio // un select con esta condicin devuelve todos los nombres que terminan en rio, el comodn % reemplaza a cualquier carcter que posea nombre al comienzo.
Laboratorio IV - SQL
52
/*Recupera el nombre de todos los empadronados cuyo nombre comience con G, ordenado por nombre, pero no muestra los repetido */
SELECT DISTINCT nombre FROM padron WHERE nombre Like G% ORDER BY nombre; /*Recupera el documento y nombre de todos los empadronados cuyo nombre comience con Juli_, ordenado por documento. */ SELECT documento, nombre FROM padron WHERE nombre Like Juli_ ORDER BY documento;
53
Laboratorio IV - SQL
Las funciones de agregacin permiten obtener un solo valor a partir de un conjunto de tuplas. A excepcin de la funcin COUNT(*), todas las funciones de agregacin ignoran los valores NULL. Las funciones de agregacin se suelen utilizar con la clusula GROUP BY de la instruccin SELECT.
Laboratorio IV - SQL
54
Funcin
AVG COUNT COUNT (*) MAX MIN SUM
Descripcin
Promedio de valores en una expresin numrica Nmero de valores en una expresin Nmero de filas seleccionadas, incluye Nulos Valor ms alto en la expresin Valor ms bajo en la expresin Valores totales en una expresin numrica
Laboratorio IV - SQL
55
SELECT columna, funcion_de_agregacion(columna) FROM tabla [WHERE <condicion>] [GROUP BY <lista_de_atributos>] [HAVING <condicion_de_grupo>];
Laboratorio IV - SQL
56
La clusula GROUP BY <lista_de_atributos> permite agrupar las tuplas en grupos que tengan los mismos valores en todos los atributos de esa lista devolviendo una nica tupla por grupo. Los atributos de la clausula GRUOP BY deben aparecer en la lista de atributos del SELECT.
Ejemplo: Obtener la cantidad de productos vendidos. SELECT productoid, SUM(cantidad) FROM ventas GROUP BY productoid;
Laboratorio IV - SQL
57
La clusula HAVING <condicion_de_grupo> permite establecer una condicin sobre los grupos de manera que slo se seleccionan aquellos grupos que la cumplen. Ejemplo: Obtener los productos cuya venta sea mayor que 30. SELECT productoid, SUM(cantidad) FROM ventas GROUP BY productoid HAVING SUM(cantidad ) > 30;
Laboratorio IV - SQL
58
SELECT productoid, SUM(cantidad) AS cantidad_total FROM ventas GROUP BY productoid HAVING SUM(cantidad)>30;
productid
2
Cantidad_total
35
2
3 3
2
1 2
25
15 30
45
Laboratorio IV - SQL
59
Preguntas ?
Ing. Gregorio N. Tkachuk
Laboratorio IV - SQL
60