Professional Documents
Culture Documents
SQL se compone de varios elementos: Sentencias - Seleccionan o modifican datos u objetos del esquema, controlan el flujo de los programas, etc. Consultas - Recuperan datos en funcin de unos criterios. Expresiones - Generan valores escalares. Predicados - Especifican las condiciones que sern evaluadas. Clusulas - Componen las sentencias. Opcionales en algunos casos. Punto y coma: No es requerido en todos los RDBMS pero es el estndar para indicar fin de la sentencia.
III.Sentencias SQL
SELECT - Recupera informacin de la base de datos. DML (Lenguaje de manipulacin de datos) INSERT - Inserta nuevos registros en la base de datos. UPDATE - Actualiza registros ya existentes. DELETE - Borra registros. MERGE - Realiza una combinacin de datos segn unas condiciones DDL (Lenguaje de definicin de datos) CREATE - Crea estructuras de datos (tablas, vistas, etc). ALTER - Modifica estructuras de datos DROP - Borra estructuras de datos. RENAME - Renombra estructuras de datos. TRUNCATE - Sirve para vaciar tablas.
Control de Transacciones COMMIT - Confirma las operaciones DML. ROLLBACK - Invalida las operaciones DML SAVEPOINT - Introduce un punto de guardado para realizar COMMIT y ROLLBACK localizados. DCL (Lenguaje de control de datos) GRANT - Otorga permisos a usuarios. REVOKE - Quita permisos de los usuarios. IV.SQL*PLUS SQL*Plus es el cliente bsico de acceso a una base de datos Oracle. Permite realizar consultas y sentencias SQL que sern ejecutadas por la base de datos en el servidor. Es posible ejecutar cualquier consulta o programa PL/SQL que el servidor de Oracle pueda entender.
V.iSQL*PLUS Es una versin que aparece a partir de la versin 9i de Oracle, es muy similar al SQL*Plus, pero no requiere instalacin en el cliente, sino que se ejecuta desde un navegador web. Es necesario que el servidor de la base de datos acepte peticiones para este programa, normalmente se accede a travs de la url http://ip-del-servidor:5560
Las clusulas SELECT, que especifica las columnas o expresiones que vamos a recuperar, y FROM , que indica la tabla de la que se recuperan, son obligatorias.
SELECT - Lista las columnas a recuperar. * - Selecciona todas las columnas DISTINCT - Elimina duplicados column | expression - selecciona la columna y/o expresin (pueden ser varias) que se van a recuperar alias - Indica la cabecera de cada una de las columnas o expresiones FROM - La tabla que contiene las columnas WHERE - Filtro de los registros a visualizar condition(s) - Lista de condiciones de filtro.
Las sentencias SQL no son sensibles a maysculas o minsculas pero se recomienda escribir las palabras clave en maysculas y el resto en minsculas.
NOMBRE
Alberto Sofia Juan Marcos Marta Lorena Alba Jose Lus
APELLIDOS
Gmez Martnez Lpez Fernndez Prez Hernndez lvarez Surez
DIRECCION
Calle de la Amapola 1 Calle de la Violeta 32 Calle de la Margarita 21 Calle de la Rosa 10 Calle de la Amapola 12 Calle de los Girasoles 12 Calle de la Violeta 22 Calle de la Margarita 1
TELEFONO
93000001 93000071 93000039 93000068 93000003 93000088 93000079 93000033
FECHA_ NACIMIENTO
01/01/50 01/08/75 31/03/89 31/08/77 09/03/85 25/08/80 20/10/82 30/05/58
Para seleccionar todas las columnas de una tabla se utiliza el * tras el SELECT. Otra forma de hacerlo, sera ennumerar todas las columnas, separadas por comas, de la tabla. SELECT id_viajero, nombre, apellidos, direccion, telefono, fecha_nacimiento FROM viajero; Para filtrar por columnas, tan solo hay que especificarlas separadas por comas. SELECT nombre, apellidos FROM viajero;
NOMBRE
Alberto Sofia Juan Marcos Marta Lorena Alba Jose Lus Damin Julin
APELLIDOS
Gmez Martnez Lpez Fernndez Prez Hernndez lvarez Surez Rodrguez Rodrguez
II.Expresiones aritmticas Sirven para realizar clculos sobre la informacin recuperada y mostrar los resultados de los mismos, se pueden usar los operadores aritmticos en cualquier clusula de una sentencia SQL, excepto en la clusula FROM. Los operadores aritmticos (ordenados por prioridad) son
CONTINENTE
Europa Europa Europa Europa Europa Europa Amrica del Norte Amrica del Norte Amrica del Norte Amrica del Sur
NUM_HABITANTES
46080737 10605870 59337888 60876136 60609153 82210000 302791280 33187800 107449525 188078227
NUM_HABITAN TES+10000
46090737 10615870 59347888 60886136 60619153 82220000 302801280 33197800 107459525 188088227
Los operadores tienen prioridad y se debe utilizar parntesis para forzar operaciones que se realizaran de forma diferente segn su prioridad.
NOMBRE
Espaa Portugal Italia Francia Reino Unido Alemania Estados Unidos Canad Mjico Brasil
NUM_HA BITANTE S
46080737 10605870 59337888 60876136 60609153 82210000 302791280 33187800 107449525 188078227
2*(NUM_HABITANTES +1000000)
94161474 23211740 120675776 123752272 123218306 166420000 607582560 68375600 216899050 378156454
III.Valores nulos El valor nulo se representa con null e implica la ausencia de valor para una columna de una fila determinada. Es diferente del nmero 0 y del caracter espacio. SELECT nombre, habitantes, clima FROM lugar;
NOMBRE
Budapest Osaka Kyoto Tibet Shangai Rajastn Himalaya Bombay Casablanca Rabat 13691836 2949805 Tropical
HABITANTES
1696128 2629252 1464900 2740000 18403769
CLIM A
Subtropical
Operar valores nulos con expresiones aritmticas devolver valores nulos: SELECT nombre, habitantes + 100000, clima FROM lugar;
NOMBRE
Budapest Osaka Kyoto Tibet Shangai Rajastn Himalaya Bombay Casablanca Rabat
HABITANTES+100000
1796128 2729252 1564900 2840000 18503769
CLIM A
Subtropical
13791836 3049805
Tropical
IV.Alias de columna Los alias para las columnas sirven para renombrar la cabecera de una columna devuelta por una consulta SQL. Para utilizarlos, se sita el alias despus de la columna o expresin separado por un espacio, o se puede utilizar la palabra AS entre la columna y el alias. Si el nombre del alias contiene espacios, tiene caracteres especiales (#, $, ...), o es sensible a maysculas/minusculas se debe entrecomillar con comillas dobles (")
SELECT nombre AS "Nombre del Lugar", 2*(habitantes + 5000) "Nueva Poblacin" FROM lugar;
No mbr e Del Lugar
Budapest Osaka Kyoto Tibet Shangai Rajastn Himalaya Bombay Casablanca Rabat 27393672 5909610
V.Operador de concatenacin El operador de concatenacin || sirve para unir columnas o expresiones entre s y mostrarlas como una sola. Es posible unir las columnas con cadenas de literales (entre comillas simples) para formar frases o literales. SELECT apellidos || ', ' || nombre AS "Nombre Completo", nombre || ' vive en ' || direccion || ' y naci el ' || fecha_nacimiento AS "Informacin" FROM viajero;
No mbr e Co mpleto
Gmez,Alberto Martnez,Sofia Lpez,Juan Fernndez,Marcos Prez,Marta Hernndez,Lorena lvarez,Alba Surez,Jose Lus Rodrguez,Damin Rodrguez,Julin
Informac in
Alberto vive en Calle de la Amapola 1 y naci el 01/01/50 Sofia vive en Calle de la Violeta 32 y naci el 01/08/75 Juan vive en Calle de la Margarita 21 y naci el 31/03/89 Marcos vive en Calle de la Rosa 10 y naci el 31/08/77 Marta vive en Calle de la Amapola 12 y naci el 09/03/85 Lorena vive en Calle de los Girasoles 12 y naci el 25/08/80 Alba vive en Calle de la Violeta 22 y naci el 20/10/82 Jose Lus vive en Calle de la Margarita 1 y naci el 30/05/58 Damin vive en Calle de los Tulipanes 10 y naci el 10/11/60 Julin vive en Calle de los Claveles 3 y naci el 01/12/58
VI. Uso de DISTINCT para eliminar duplicados En ocasiones, habr consultas que devuelvan filas duplicadas, utilizando la palabra clave DISTINCT, podemos eliminar estos duplicados del resultado de una sentencia SELECT. SELECT continente FROM pais;
CONTINENTE
Europa Europa Europa Europa Europa Europa Amrica del Norte Amrica del Norte Amrica del Norte Amrica del Sur
CONTINENTE
Europa Europa Europa Europa Europa Europa Europa Europa Europa
Las columnas que intervienen en la comparacin no tienen porque estar presentes en la clusula SELECT para poder ser filtradas por el WHERE. Las cadenas de texto deben estar entrecomilladas con comillas simples y son sensibles a maysculas / minsculas, sin embargo los nmeros se expresan sin comillas. Para las fechas, se debe tener en cuenta el formato por defecto, que suele depender del idioma de instalacin, puede ser DD/MM/YY y se deben expresar entre comillas simples.
Condiciones de Comparacin Las condiciones de comparacin se usan para comparar una columna o expresin con otra expresin o valor. WHERE expresin operador valor
Las condiciones de comparacin son las siguientes: Operador = > >= < <= <> BETWEEN ... AND ... IN (lista) Significado Igualdad Mayor que Mayor / Igual que Menor que Menor / Igual que Distinto Entre dos valores (ambos incluidos) La expresin est incluida en la lista de valores Igualdad usando comodines Valor nulo
LIKE IS NULL
HABITANTES
586829 163173 87186 441200 496200 739426 454863 596638 582049 223617
Condicin BETWEEN Se utiliza para filtrar filas incluidas en un rango de valores definido por un lmite inferior y un lmite superior. SELECT nombre, habitantes FROM lugar WHERE habitantes BETWEEN 1000000 AND 2000000;
NOMBRE
Budapest Kyoto Volgograd Barcelona San Diego Valencia Miln Patagonia Crdoba Praga
HABITANTES
1696128 1464900 1012800 1595110 1255240 1738690 1308735 1738251 1315540 1188126
Condicin IN Se utiliza para comprobar si una columna o expresin est contenida en una lista determinada de valores. Esta condicin tambin se llama condicin de pertenencia. SELECT nombre, apellidos, fecha_nacimiento FROM viajero WHERE fecha_nacimiento IN ('01/01/50','25/08/80','31/03/89');
NOMBRE
Alberto Juan Lorena Carlos
APELLIDOS
Gmez Lpez Hernndez Vzquez
FECHA_NACIM IENTO
01/01/50 31/03/89 25/08/80 01/01/50
Se puede utilizar NOT IN para especificar que una columna o expresin no est en una lista determinada de valores.
Condicin LIKE Se utiliza para filtrar utilizando comodines de bsqueda en la cadena de comparacin. Se pueden utilizar estos comodines: % - Secuencia de 0 o ms caracteres. _ - Secuencia de un nico carcter. SELECT nombre, apellidos, fecha_nacimiento FROM viajero WHERE apellidos LIKE 'M%';
NOMBRE
Sofia Diana Isabel Mara Alejandra Mercedes
APELLIDOS
Martnez Menndez Mndez Muoz Martnez Martnez
FECHA_NACIM IENTO
01/08/75 10/11/79 25/08/85 22/10/80 30/06/64 05/06/77
Los smbolos % y _ se pueden combinar entre ellos y con cualquier otro carcter o cadena de caracteres. Si se necesita buscar exactamente los caracteres % y _, podemos utilizar la opcin ESCAPE, que define un carcter de escape SELECT nombre, apellidos, perfil_viajero FROM viajero WHERE perfil_viajero LIKE 'CLASE\_%' ESCAPE '\';
NOMBRE
Alberto Marcos Lorena Beatriz Margarita Carmen Susana Esteban Natalia Oriol
APELLIDOS
Gmez Fernndez Hernndez Gonzlez Snchez Ruiz Daz Jimnez Fernndez Prez
Se puede usar NOT LIKE para especificar que una columna o expresin no coinciden con la cadena especificada. Condiciones NULL Para comprobar si un valor es NULL se utiliza la condicin IS NULL. Un valor nulo significa la ausencia del mismo, un valor indeterminado, no disponible o no asignado. Si se comparara con =, el resultado sera siempre NULL, ya que un valor nulo no es comparable con ningn otro, ni siquiera con otro nulo. SELECT nombre, clima FROM lugar WHERE clima IS NULL;
NOMBRE
Jersey Manchester Exeter Cumbria San Francisco Gran Can Maui Nueva Orleans Montaas Rocosas Boston
CLIM A
Condiciones Lgicas Operador AND OR NOT Significado Devuelve TRUE si las dos condiciones son TRUE Devuelve TRUE si al menos una de las condiciones es TRUE Devuelve TRUE si la condicion es FALSE
SELECT nombre, clima, habitantes FROM lugar WHERE clima = 'Continental' AND habitantes IS NOT NULL;
NOMBRE
Nueva York Mosc Praga Vladivostok Chicago
CLIM A
Continental Continental Continental Continental Continental
HABITANTES
8214426 12622000 1188126 586829 2842518
SELECT nombre, clima, habitantes FROM lugar WHERE clima = 'Continental' OR habitantes > 10000000;
NOMBRE
Nueva York Tokio Pekin Mosc Praga Shangai Bombay Vladivostok Chicago Sao Paulo
CLIM A
Continental Templado Continental Continental Continental Subtropical Tropical Continental Continental Tropical
HABITANTES
8214426 12527115 12622000 1188126 18403769 13691836 586829 2842518 10927985
SELECT nombre, continente FROM pais WHERE continente NOT IN ('Europa', 'Asia', 'frica');
NOMBRE
Estados Unidos Canad Mjico Brasil Argentina Uruguay Australia Nueva Zelanda Ecuador
CONTINENTE
Amrica del Norte Amrica del Norte Amrica del Norte Amrica del Sur Amrica del Sur Amrica del Sur Oceana Oceana Amrica del Sur
Prioridad de Ejecucin Las condiciones lgicas junto con las aritmticas, tienen una prioridad de ejecucin.
Operador Operadores aritmticos Operadores de concatenacin Operadores de comparacin IS NULL, LIKE, IN (y sus variantes con NOT) BETWEEN y NOT BETWEEN NOT AND OR Para modificar esta prioridad de evaluacin, se utilizan los parntesis.
APELLIDO S
Vzquez Surez Snchez Ruiz Rodrguez Rodrguez Rodrguez Ramrez Prez Prez
Si no se especifica ASC o DESC, el rden por defecto es ascendente, que implica: Para valores numricos se muestran los valores ms bajos primero. Para valores de fecha, se muestran los valores con fecha anterior. Para valores de caracteres, se usa el rden alfabtico. Los valores nulos se muestran los ltimos para orden ascendente, y los primeros para orden descendente
Es posible ordenar por mltiples columnas y tambin utilizar el alias de la columna para realizar ordenaciones. En el caso de ordenar por mltiples columnas, se debe especificar ASC o DESC en cada una, de lo contrario se ordenarn ascendentemente. Se puede utilizar una columna o expresin que no est presente en la SELECT para realizar el orden. SELECT apellidos || ', ' || nombre as nombre_completo, fecha_nacimiento FROM viajero ORDER BY fecha_nacimiento ASC, nombre_completo DESC, id_viajero;
NOMBRE_COMPLETO
Vzquez, Carlos Gmez, Alberto Fernndez, Roberto Surez, Jose Lus Rodrguez, Julin Gonzlez, Israel Rodrguez, Damin Gonzlez, Beatriz Rodrguez, Manuel Martnez, Alejandra
FECHA_NACIMIENTO
01/01/50 01/01/50 15/02/55 30/05/58 01/12/58 31/03/59 10/11/60 22/04/62 05/06/63 30/06/64