Sunteți pe pagina 1din 60

Ing.

Gregorio Nicols Tkachuk

Que el estudiante logre:


Conocer y utilizar los comandos de SQL. Crear y modificar Bases de Datos relacionales a travs de los comandos especficos.

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

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)

Ing. Gregorio N. Tkachuk

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

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

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

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

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

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

10

El Lenguaje SQL permite:


Definir y destruir objetos de la Base de Datos Conceder y denegar autorizaciones para usar estos objetos. Consultar y actualizar datos.

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

11

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

12

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

13

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

14

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

15

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

16

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

17

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

18

En SQL las bases de datos se organizan mediante una jerarqua de contenedores.

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.

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

22

Ing. Gregorio N. Tkachuk

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> );

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

26

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

27

La lista muestra de Menor a Mayor precedencia.


Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

28

ANSI SQL SMALLINT INT INTEGER BIGINT

MySQL SMALLINT[(M)] INT[(M)] INTEGER[(M)] BIGINT[(M)]

Rango de valores -32768 a 32767 -2147483648 a 2147483647 -9223372036854775808 a 9223372036854775807

(M) indica el ancho mximo para mostrar. El valor mximo es 255.

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

29

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

30

ANSI SQL FLOAT(P)

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

DOUBLE PRECISION DOUBLE

REAL

REAL

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

31

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

32

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

33

ANSI SQL BIT


BIT VARYING(L) BINARY LARGE OBJECT[(L)] o BLOB TEXT BOOLEAN BOOL

MySQL BIT

Rango de valores Almacena un numero fijo de nmeros binarios.


L cantidad de bit Datos binarios hasta un max. de 65536 byte. (ejem. imgenes, sonido) Texto hasta 65536 caracteres Verdadero / Falso

BLOB

TEXT[(M)] BOOLEAN TINYINT(1)

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

35

CREATE DATABASE <nombre_base_de_datos>


Ejemplo: CREATE DATABASE Alumnos;

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

36

DROP DATABASE <nombre_base_de_datos>


Ejemplo: DROP DATABASE Alumnos;

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

37

CREATE TABLE <nombre_de_la_tabla> ( <nombre_columna-1> < tipo>, <nombre_columna-2> < tipo>, , <nombre_columna-n> <tipo> );

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

38

Ejemplo: CREATE TABLE Carrera ( CarrCod Int, CarrDescripcion VARCHAR(40) );

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

39

DROP TABLE <nombre_de_la_tabla>


Ejemplo: DROP TABLE Carrera;

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

40

USE <nombre_base_de_datos>
Permite seleccionar la base de datos con la que se va a trabajar.

Ejemplo: USE Alumnos; SHOW DATABASES;


Muestra las bases de datos existentes.

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.

Ejemplo: DESCRIBE carrera;

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

42

INSERT INTO <nombre_tabla> [(< atributo1>, . . . , <atributoN> )] VALUES (<expresion1>, ..,<expresionN>);


Ejemplo: INSERT INTO alumno (aluDoc, aluNom, aluDir) VALUES (30111222, Lopez Martina, Av. Roca 77);

INSERT INTO carrera VALUE (10, PUI);

Ing. Gregorio N. Tkachuk

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: Permite recuperar informacin de una o mas tablas de la Base de Datos.

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;

Ing. Gregorio N. Tkachuk

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>

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

47

[ORDER BY <especificacin de ordenamiento> [ASC | DESC] ] : Se indican los atributos por los cuales se desea obtener ordenada la consulta.

Ing. Gregorio N. Tkachuk

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;

Ing. Gregorio N. Tkachuk

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;

Ing. Gregorio N. Tkachuk

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;

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

51

Los caracteres comodn son:


Comodn
%

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.

Ing. Gregorio N. Tkachuk

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

Ing. Gregorio N. Tkachuk

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.

Ing. Gregorio N. Tkachuk

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

STD(expr), STDDEV(expr) Desviacin estadstica de todos los valores

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

55

SELECT columna, funcion_de_agregacion(columna) FROM tabla [WHERE <condicion>] [GROUP BY <lista_de_atributos>] [HAVING <condicion_de_grupo>];

Ing. Gregorio N. Tkachuk

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;

Ing. Gregorio N. Tkachuk

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;

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

58

USE facturacion; SELECT productoid, ordenid ,cantidad FROM ventas;

SELECT productoid, SUM(cantidad) AS cantidad_total FROM ventas GROUP BY productoid HAVING SUM(cantidad)>30;

productoid ordenid cantidad


1 1 2 1 1 1 5 10 10

productid
2

Cantidad_total
35

2
3 3

2
1 2

25
15 30

45

Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

59

Preguntas ?
Ing. Gregorio N. Tkachuk

Laboratorio IV - SQL

60

S-ar putea să vă placă și