Sunteți pe pagina 1din 20

UNIVERSIDAD ANDINA DEL CUSCO

PAP de Ingeniera de Sistemas

INTRODUCCIN
El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos estandarizado por la ANSI, y ampliamente utilizado por una gran cantidad de Sistemas Administradores de Bases de Datos (SMDB) para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos, cumpliendo funciones de DDL y DML. Sin embargo como sucede con cualquier sistema de normalizacin hay excepciones para casi todo; de hecho, cada motozr de bases de datos o SMDB tiene sus peculiaridades y lo hace diferente de otro motor, por lo tanto, el lenguaje SQL normalizado (ANSI) no nos servir para resolver todos los problemas, aunque si se puede asegurar que cualquier sentencia escrita en el estndar ANSI ser interpretable por cualquier motor de datos. Para el caso particular del curso de Base de Datos se utilizara el Sistemas Administrador de Bases de Datos (SMDB) de la empresa Microsoft TM llamado SQL SERVER Express 2005. BREVE HISTORIA La historia de SQL inicia en 1974 con la definicin, por parte de Donald Chamberlin y de otras personas que trabajaban en los laboratorios de investigacin de IBM, de un lenguaje para la especificacin de las caractersticas de las bases de datos que adoptaban el modelo relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se implement en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977 a una revisin del lenguaje (SEQUEL/2), que a partir de ese momento cambi de nombre por motivos legales, convirtindose en SQL. En 1986, el ANSI adopt SQL (sustancialmente adopt el dialecto SQL de IBM) como estndar para los lenguajes relacionales y en 1987 se transform en estndar ISO. Esta versin del estndar va con el nombre de SQL/86. En los aos siguientes, ste ha

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
sufrido diversas revisiones que han conducido primero a la versin SQL/89 y, posteriormente, a la actual SQL/92. El hecho de tener un estndar definido por un lenguaje para bases de datos relacionales abre potencialmente el camino a la intercomunicabilidad entre todos los productos que se basan en l. Desde el punto de vista prctico, por desgracia las cosas fueron de otro modo. Efectivamente, en general cada productor adopta e implementa en la propia base de datos slo el corazn del lenguaje SQL, extendindolo de manera individual segn la propia visin que cada cual tenga del mundo de las bases de datos. Actualmente, est en marcha un proceso de revisin del lenguaje por parte de los comits ANSI e ISO, que debera terminar en la definicin de lo que en este momento se conoce como SQL3. Las caractersticas principales de esta nueva encarnacin de SQL deberan ser su transformacin en un lenguaje stand-alone (mientras ahora se usa como lenguaje hospedado en otros lenguajes) y la introduccin de nuevos tipos de datos ms complejos que permitan, por ejemplo, el tratamiento de datos multimediales.

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

COMPONENTES DEL LENGUAJE ESTRUCTURADO DE CONSULTAS


El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. TIPOS DE COMANDOS Existen dos tipos de comandos SQL:
o

Los DLL que permiten crear y definir nuevas bases de datos, campos e ndices. Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.

El lenguaje de definicin de datos (DDL)


Cada DBMS debe incluir un subprograma (en este caso un lenguaje) para construir el esquema, llamado lenguaje de definicin de datos (DDL, Data Detinition Language). Este lenguaje tiene varios comandos y protocolos que diseador de la base de datos usa para definir y asignar nombre a los archivos registros y campos de una base de datos antes de empezar a distribuirlos. Y la mayor parte de los DBMS de PC, la interfaz de usuario del DDL presenta pantallas y pide al diseador que introduzca los parmetros apropiados de un men. Estas interfaces son auto explicativas y permiten que alguien, con poco de experiencia, genere una base de datos.

El lenguaje de manipulacin de datos (DML)


El lenguaje de manipulacin de datos (DML) de eleccin para muchos creadores de DBMS relacionales es el SQL, ahora es un estndar internacional y se proporciona con la mayor parte de los programas de administracin de bases de datos relacionales. Su fuerza radica en sus comandos auto explicativo fcil de recordar.

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

COMANDOS DDL
Comando Descripcin

CREATE Utilizado para la creacin de bases de datos, tablas, campos e ndices. DROP ALTER Empleado para eliminar bases de datos, tablas e ndices Utilizado para modificar las tablas agregando campos o cambiando la definicin de los campos.

SINTAXIS: Creacin de tablas CREATE TABLE nombre_tabla (<definicin_atributo_1> [UNIQUE] [NOT NULL], (<definicin_atributo_2> [UNIQUE] [NOT NULL], ..................... (<definicin_atributo_n> [UNIQUE] [NOT NULL]); Donde: definicin_atributo = nombre_atributo tipo_dato tamao) UNIQUE: no se permiten valores duplicados en la columna NOT NULL: no se permiten valores nulos en la columna Modificacin de tablas Aadir un nuevo atributo Borrar un atributo ALTER TABLE <nombre_tabla> ADD <definicin_atributo>; ALTER TABLE <nombre_tabla> DROP COLUMN <definicin_atributo>; En el caso que la tabla contenga una serie de filas, no se podr definir el atributo nuevo ni como UNIQUE ni como NOT NULL (ya que en las filas existentes no tendr

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
valor). Modificar un atributo ya existente ALTER TABLE <nombre_tabla> MODIFY <definicion_atributo>; Si la tabla ya contiene filas, se podr poner el atributo como NOT NULL, si dicho atributo no tiene valor nulo en ninguna fila. Si se quiere definir como UNIQUE el atributo no puede tener valores duplicados en las filas existentes Eliminacin DROP [especificacin] nombre_de_creacion; Donde especificacin viene a ser lo siguiente: DATABASE TABLE INDEX para crear bases de datos. para el caso de tablas. Para creacin de ndices.

Y donde detalle solo es aplicable para la creacin de tablas, indicando el nombre del campo y el tipo de dato respectivo. Ejemplos: Creacin de una base de datos llamada biblioteca CREATE DATABASE biblioteca; Creacin de una tabla con atributos de cdigo de facultad, nombre de facultad y descripcin de facultad donde el campo cdigo de facultad tiene la caracterstica de ser una llave primaria o clave principal. CREATE TABLE facultad ( cod_fac nomb_fac desc_fac ); int NOT NULL, varchar(50) NULL, varchar(250) NULL,

PRIMARY KEY (cod_fac)

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
Creacin de una tabla llamada carrera, cuya relacin est definida como muchos a uno, esta relacin se logra establecer a trav s del campo cod_fac que pasa desde la tabla facultad hasta la tabla carrera como llave fornea. CREATE TABLE carrera ( cod_car nomb_car cod_fac int NOT NULL, varchar(60) NOT NULL, int NULL,

PRIMARY KEY (cod_car), FOREIGN KEY (cod_fac) REFERENCES facultad ); Elimina la tabla carrera de una determinada base de datos. DROP TABLE carrera; Elimina la base de datos biblioteca creada anteriormente DROP DATABASE biblioteca; Ejemplos de Modificacin de campos: La siguiente secuencia de comandos modifica la tabla facultad para agregarle un campo llamado hist_fac cuyo campo almacenara un tipo de dato varchar(200). ALTER TABLE facultad ADD hist_fac VARCHAR(200); La siguiente secuencia elimina la columna hist_fac creada anteriormente. ALTER TABLE facultad DROP COLUMN hist_fac;

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

COMANDOS DML

Comando INSERT

Descripcin Utilizado para cargar lotes de datos en la base de datos en una nica operacin. Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado Utilizado para modificar los valores de los campos y registros especificados Utilizado para eliminar registros de una tabla de una base de datos

SELECT

UPDATE DELETE Clusulas

Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular. Clusula FROM Descripcin Utilizada para especificar la tabla de la cual se van a seleccionar los registros Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar Utilizada para separar los registros seleccionados en grupos especficos Utilizada para expresar la condicin que debe satisfacer cada grupo Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico

WHERE

GROUP BY HAVING ORDER BY

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

OPERACIONES DE ACTUALIZACION SINTAXIS: INSERCIN DE FILAS INSERT INSERT INTO <nombre_tabla> [(<lista_de _atributos>)] VALUES (<valor_1>, <valor_2>,...,<valor_n>); MODIFICACIN DE FILAS UPDATE UPDATE <nombre_tabla> SET <atributo_1> = <valor_1>, <atributo_2> = <valor_2>, ........... <atributo_n> = <valor_n> [WHERE <condicin>]; La modificacin afectar a todas las filas que cumplan la condicin, si se especifica sta (la clusula WHERE expresa la condicin de bsqueda en una consulta y se ver posteriormente). Si no se especifica condicin, la modificacin afectar a todas las filas de la tabla. El valor que se asigne a un atributo puede ser una constante, o el resultado de una sub consulta (que deber ir entre parntesis). ELIMINACIN DE FILAS DELETE DELETE FROM <nombre_tabla> [WHERE <condicin>]; No se pueden eliminar partes de una fila. Si no aparece la clusula "WHERE" se eliminarn todas las filas de la tabla, no eliminndose la definicin de sta en el esquema.

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

10

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
SENTENCIA DE SELECCIN SELECT SELECT [UNIQUE/DISTINCT] <expresin> FROM <lista_de_tablas> [WHERE <condicion>] [GROUP BY <lista_de_atributos> [HAVING <condicin_de_grupo> ]] [ORDER BY <lista_de_atributos> [ASC/DESC] ]; Los atributos que no aparezcan en lista_de_atributos quedarn con valor NULL (tambin puede aparecer en VALUES el valor NULL). Es obligatorio especificar un valor para los atributos que estn definidos como "NOT NULL". EJEMPLOS DE OPERACIONES DE ACTUALIZACION Ejemplo de INSERT: El siguiente cdigo inserta un registro o fila en una tabla llamada facultad creada anteriormente en la Base de Datos Biblioteca. INSERT INTO facultad(cod_fac,nomb_fac,desc_fac) VALUES(1,Faculad de Educacin y Ecoturismo, Esta facultad esta ); Insercin de otro registro. INSERT INTO facultad(cod_fac,nomb_fac,desc_fac) VALUES(2,Faculatd de Ingeniera, Esta facultad esta ); Como se puede fijar en los dos ejemplos anteriores los datos para el campo desc_fac permite valores repetidos, esto se da porque este campo no es Clave Primaria o Clave Principal, lo que no pasara con el campo cod_fac que si es de tipo Clave Primaria o Clave Principal y no permitir valores repetidos. Ejemplo de SELECT:
o

El siguiente cdigo genera una lista de la tabla facultad a la que anteriormente se le ingreso 2 registros. SELECT cod_fac,nomb_fac,desc_fac FROM facultad Resultado:

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

11

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

El siguiente cdigo genera una lista de la tabla facultad a la que anteriormente se le ingreso 2 registros. SELECT * FROM facultad Resultado:

Como puede ver ambas sentencias generan el mismo resultado esto se debe a que * equivale a todos los atributos de una tabla.
o

El siguiente cdigo genera una lista de la tabla facultad a la que anteriormente se le ingreso 2 registros. SELECT DISTINCT desc_fac FROM facultad DISTINCT significa que genrela una lista sin valores repetidos. En este caso ambos registros tienen el mismo dato en el campo desc_fac.

El siguiente cdigo utiliza la clausula WHERE para generar un lista con un valor condicional. SELECT * FROM facultad WHERE cod_fac = 2

El siguiente cdigo utiliza la clausula WHERE para generar un lista con un valor condicional. SELECT * FROM facultad WHERE nomb_fac = Facultad de Ingeniera Resultado para las 2 sentencias anteriores:

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

12

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

Ejemplo de UPDATE:
o

El siguiente cdigo modificara el campo desc_fac de cada uno de los 2 registros de la tabla facultad. UPDATE facultad SET desc_fac = Esta facultad est abocada a la educacin y el ecoturismo para el desarrollo y la conservacin de de nuestra regin Madre de Dios ;

Sin embargo el dato ingresado anteriormente al campo desc_fac es solo para la facultad de educacin por ello se usa una condicional para especificar el registro que se desea modificar. UPDATE facultad SET desc_fac = Esta facultad se centra en el desarrollo del agro y la forestacin para una mejor explotacin de los recursos naturales de nuestra regin WHERE cod_fac = 2 ;

OPERADORES LGICOS Operador AND Uso Es el "y" lgico. Evala dos condiciones y devuelve un valor de verdad slo si ambas son ciertas. Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta. Negacin lgica. Devuelve el valor contrario de la expresin.

OR NOT

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

13

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

OPERADORES DE COMPARACIN Operador < > <> <= >= = Menor que Mayor que Distinto de Menor Igual que Mayor Igual que Igual que Uso

BETWEEN Utilizado para especificar un intervalo de valores. LIKE IN Utilizado en la comparacin de un modelo Utilizado para especificar registros de una base de datos

Ejemplo de operadores de comparacin AND, OR y NOT:


o

El siguiente cdigo genera una lista de la tabla facultad utilizando una condicional AND, es decir ambas condiciones deben de cumplirse. SELECT * FROM facultad WHERE cod_fac>=1 AND nomb_fac= 'Facultad de Ingeniera' Resultado:

El siguiente cdigo es similar a la anterior con la diferencia que no necesariamente ambas condiciones debe cumplirse para estar en el resultado. SELECT * FROM facultad WHERE cod_fac>=1 OR nomb_fac= 'Facultad de Ingeniera'

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

14

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

Resultado:

El siguiente cdigo negara la comparacin que se esta evaluando. SELECT * FROM facultad WHERE NOT cod_fac=1 Resultado:

EL OPERADOR LIKE Se utiliza para comparar una expresin de cadena con un modelo en una expresin SQL. Su sintaxis es: EXPRESIN LIKE MODELO En donde expresin es una cadena modelo o campo contra el que se compara expresin. Se puede utilizar el operador Like para encontrar valores en los campos que coincidan con el modelo especificado. Por modelo puede especificar un valor completo (Ana Mara), o se pueden utilizar caracteres comodn como los reconocidos por el sistema operativo para encontrar un rango de valores (Like An*). El operador Like se puede utilizar en una expresin para comparar un valor de un campo con una expresin de cadena. Por ejemplo, si introduce Like C* en una consulta SQL, la consulta devuelve todos los valores de campo que comiencen por la letra C. En una consulta con parmetros, puede hacer que el usuario escriba el modelo que se va a utilizar. El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de cualquier letra entre A y F y de tres dgitos:

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

15

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
Like 'P[A-F]###' Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A a la D seguidas de cualquier cadena. Like '[A-D]*' En la tabla siguiente se muestra cmo utilizar el operador Like para comprobar expresiones con diferentes modelos. Tipo de coincidencia Modelo Planteado Varios caracteres Carcter especial Varios caracteres Un solo carcter Un solo dgito 'a*a' 'a[*]a' 'ab*' 'a?a' 'a#a' Coincide No coincide

'aa', 'aBa', 'aBBBa' 'aBC' 'a*a' 'abcdefg', 'abc' 'aaa', 'a3a', 'aBa' 'a0a', 'a1a', 'a2a' 'f', 'p', 'j' '9', '&', '%' 'A', 'a', '&', '~' 'An9', 'az0', 'a99' 'aaa' 'cab', 'aab' 'aBBBa' 'aaa', 'a10a' '2', '&' 'b', 'a' '0', '1', '9' 'abc', 'aj0'

Rango de caracteres '[a-z]' Fuera de un rango Distinto de un dgito Combinada '[!a-z]' '[!0-9]' 'a[!b-m]#'

En determinado motores de bases de datos, esta clusula, no reconoce el asterisco como carcter comodn y hay que sustituirlo por el carcter tanto por ciento (%). Por ejemplo, en SQLSERVER: Ejemplo LIKE 'A%' LIKE '_NG' Todo lo que comience por A Todo lo que comience por cualquier carcter y luego siga NG Descripcin

LIKE '[AF]%' Todo lo que comience por A F

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

16

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
LIKE '[A-F]%' Todo lo que comience por cualquier letra comprendida entre la A y la F LIKE '[A^B]%' Todo lo que comience por A y la segunda letra no sea una B Ejemplo del operador LIKE:
o

El siguiente cdigo genera una lista de la tabla facultad utilizando una condicional AND, es decir ambas condiciones deben de cumplirse. SELECT * FROM facultad WHERE LIKE nomb_fac '%Ingeniera' Resultado:

OPERADOR 'BETWEEN ... AND ...' Establece una comparacin dentro de un determinado intervalo. Ejemplo del operador BETWEEN ... AND:
o

Obtener el nombre de mquina para aquellas cuyo precio por hora est comprendido entre 5000 y 15000. SELECT nombre FROM maquinas WHERE precio_hora BETWEEN 5000 AND 10000; Tambin se puede utilizar NOT BETWEEN.

OPERADOR "IN". Indica pertenencia. Comprueba la pertenencia de una valor a un conjunto dado (que debe ir entre parntesis). Este conjunto puede especificarse por enumeracin de sus elementos o por el resultado de la ejecucin de una sentencia SELECT. Ejemplo del operador IN:

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

17

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
o

Obtener los nombres de aquellos conductores que residen en 'TAMBOPATA' o en 'TAHUAMANU'. SELECT nombre FROM conductores WHERE localidad IN ('TAMBOPATA','TAHUAMANU');

Obtener nombres de los trabajadores que han utilizado la mquina 'M2'.. SELECT nombre FROM conductores WHERE cod_con IN (SELECT cod_con FROM trabajos WHERE cod_tra = 'M2');

o SELECT nombre FROM conductores WHERE cod_con IN (SELECT cod_con FROM trabajos WHERE codd_tra = 'M2');

o SELECT nombre FROM conductores, trabajos WHERE conductores. cod_con = trabajos. cod_con AND cod_tra = 'M2';

o SELECT nombre FROM conductores WHERE 'M2' IN (SELECT cod_tra FROM trabajos WHERE conductores. cod_con = trabajos. cod_con); Tambin se puede utilizar NOT IN.

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

18

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

FUNCIONES DE AGREGADO Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se aplica a un grupo de registros.

Funcin AVG COUNT SUM MAX MIN

Descripcin Utilizada para calcular el promedio de los valores de un campo determinado Utilizada para devolver el nmero de registros de la seleccin Utilizada para devolver la suma de todos los valores de un campo determinado Utilizada para devolver el valor ms alto de un campo especificado Utilizada para devolver el valor ms bajo de un campo especificado

Ejemplo del operador AVG:


o

Obtiene el promedio de un campo especifico, en este caso calcula el sueldo promedio de la tabla empleado. SELECT AVG(sueldo) FROM empleado;

Ejemplo del operador COUNT:


o

Calcula la cantidad de registros. SELECT count(cod_emp) FROM empleados;

Ejemplo del operador SUM:


o

Calcula la suma total del campo sueldo para saber el total de planilla de pago en una empresa.

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

19

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
SELECT sum(sueldo) FROM empleado; Ejemplo del operador MAX:
o

Obtiene el mximo sueldo o el sueldo mayor de la tabla empleado. SELECT Max(sueldo) FROM empleado;

Ejemplo del operador MIN:


o

Calcula el menor sueldo de la tabla empleado. SELECT Min(sueldo) FROM empleado;

CLAUSULA GROUP BY Ejemplo del operador GROUP BY:


o

Obtiene la cantidad de carreras agrupadas de acuerdo a cada facultad. SELECT count(cod_fac) FROM carrera GROUP BY cod_fac;

CLAUSULA HAVING Ejemplo del operador HAVING:


o

Obtiene la cantidad de carreras agrupadas de acuerdo a cada facultad pero solo si se cumple con la igualdad. SELECT count(cod_fac) FROM carrera GROUP BY cod_fac Having cod_fac=2;

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

20

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas
CLAUSULA ORDER BY Ejemplo del operador ORDER BY:
o

Lista a los usuarios registrados ordenados alfabticamente de acuerdo al nombre de usuario. SELECT * FROM usuario Order By nomb_usu ASC;

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

21

UNIVERSIDAD ANDINA DEL CUSCO


PAP de Ingeniera de Sistemas

BIBLIOGRAFA

SISTEMA DE BASES DE DATOS

Introduccin al Lenguaje de Consultas Estructurado SQL

22