¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Oracle 12c
  3. SQL
Extrait - Oracle 12c SQL, PL/SQL, SQL*Plus
Extractos del libro
Oracle 12c SQL, PL/SQL, SQL*Plus Volver a la página de compra del libro

SQL

Generalidades

SQL (Structured Query Language, lenguaje estructurado de consulta) es un lenguaje de consulta utilizado para manipular bases de datos relacionales.

Fue desarrollado a mediados de los años 70 por IBM y lo comenzó a comercializar Oracle en 1979.

El interés del SQL reside en las siguientes características:

Normalización

Implementa el modelo relacional y se describe en los estándares de los principales organismos de normalización, que lo describen como sigue:

  • El instituto ANSI (American National Standards Institute) lo describe en sus documentos ANSI 9075-1:1999, ANSI 9075-2:1999 y ANSI 9075-5:1999. Puede obtener más detalles sobre estos documentos que describen la norma visitando el sitio web de ANSI (http://webstore.ansi.org) o bien el sitio web de NCITS (National Comittee for Information Technology Standards) que incluye parte de los estándares ANSI sobre SQL (http://www.incits.org).

  • ISO (International Organisation for Standardization) lo describe en los documentos ISO/IEC 9075-1:1999, ISO/IEC 9075-2:1999 e ISO/IEC 9075-5:1999. Puede obtener una copia de los documentos de normalización en el sitio web de ISO: http://www.iso.ch/iso/iso_catalogue.html.

Estándar

Debido a esta normalización, la mayor parte de los creadores de sistemas de bases de datos relacionales integran el SQL en sus productos (INFORMIX, DB2, MS SQL Server, SYBASE...).

Los datos, consultas y aplicaciones pueden por tanto migrarse con bastante facilidad de una base de datos a otra.

No procedimental

El SQL es un lenguaje de consulta que permite al usuario solicitar un resultado sin preocuparse de los medios técnicos necesarios para obtener dicho resultado. Un componente del motor de la base de datos (el optimizador) se encarga de esta tarea.

Las instrucciones se escriben en inglés, en lenguaje natural.

El SQL permite manipular tanto registros individuales como conjuntos de registros y permite el uso del resultado en otro comando. Por tanto, no son necesarias estructuras de control como en los lenguajes de programación habituales (lenguajes de tercera generación).

Universal

El lenguaje SQL puede utilizarse en todos los niveles de la gestión de una base de datos:

  • administración del sistema,

  • administración de la base de datos,

  • desarrollo y aplicaciones,

  • gestión de datos simple.

Todos los usuarios de la base de datos disponen por tanto...

Descripción de objetos

Cuando se emplea una base de datos, los primeros objetos que hay que manipular son las tablas, que "contienen" los datos, y los índices, que permiten obtener un mejor rendimiento de las consultas.

Estos dos tipos de objetos se deben crear antes de comenzar a manipular los datos en sí.

1. Tipos

CHAR (n)

Cadena de caracteres de longitud fija de n bytes, que se completa añadiendo espacios a la derecha (n <= 2000).

VARCHAR2 (n)

Cadena de caracteres de longitud variable, de n bytes como máximo (n <= 4000 si el argumento MAX_STRING_SIZE es igual a STANDARD; n <= 32767 si el argumento MAX_STRING_SIZE es igual a EXTENDED).

NCHAR (n)

Cadena de caracteres de longitud fija de n bytes, que se completan añadiendo espacios a la derecha (n <= 2000). Los caracteres se codifican de acuerdo con el juego de caracteres nacional activo.

NVARCHAR2 (n)

Cadena de caracteres de longitud variable, de n bytes como máximo (n <= 4000 si el argumento MAX_STRING_SIZE es igual a STANDARD; n <= 32767 si el argumento MAX_STRING_SIZE es igual a EXTENDED). Los caracteres se codifican de acuerdo con el juego de caracteres nacional activo.

NUMBER (p,s)

Número con una precisión de p cifras, de las cuales s son decimales, siendo (1 <= p <= 38 y -84 <= s <= +127).

DATE

Fecha comprendida entre el 1 de enero de 4712 a.C. y el 31 de diciembre de 9999 d.C.

TIMESTAMP (p)

Datos de tipo Date (año, mes, día, hora, minutos y segundos) en los que es posible especificar, con una precisión p, el número de cifras significativas para las fracciones de segundo. El valor predeterminado es 6.

TIMESTAMP(p) WITH TIME ZONE

Datos de tipo TIMESTAMP con desplazamiento de zona horaria.

TIMESTAMP(p) WITH LOCAL TIME ZONE

Datos de tipo TIMESTAMP WITH TIME ZONE que están almacenados en el servidor teniendo en cuenta la zona horaria del mismo, pero que se muestran en el equipo del cliente teniendo en cuenta la zona horaria definida en el nivel de sesión.

BLOB

Datos binarios no estructurados (hasta 128 TB como máximo, dependiendo del tamaño del bloque utilizado en la base de datos).

CLOB

Cadena de caracteres de longitud variable (hasta 128 TB como máximo, dependiendo del tamaño del bloque utilizado en la base de datos). Solo puede contener caracteres codificados con 1 byte.

NCLOB

Cadena de caracteres de longitud...

Manipulación de los datos

Las instrucciones DML permiten añadir, eliminar, modificar y visualizar las filas contenidas en las tablas existentes.

1. Instrucciones

Las instrucciones SQL manipulan expresiones. Estas expresiones hacen referencia a constantes y nombres de objetos de la base de datos, realizan llamadas a funciones estándar y establecen relaciones entre estos elementos mediante el uso de operadores.

Las expresiones lógicas (condiciones) también permiten definir el ámbito de las instrucciones.

a. Expresiones

Los términos de las expresiones pueden ser:

  • constantes de caracteres

    ejemplo: ’cadena de caracteres’; ’Escuela de Informática’.

  • constantes literales de fecha (el formato depende del idioma que se haya configurado para la instancia)

    ejemplo: ’15-JAN-94’

  • constantes numéricas

    ejemplo: 10; -123.459; -1.26e+6

  • nombres de atributos de tabla

    ejemplo: CLIENTES.NUMCLI; ARTICULOS.DESCRIPCION

  • funciones

    ejemplo: SQRT(81); REPLACE(’IAGADIGI’, ’I’, ’OU’); SYSDATE

  • pseudo-columnas

    ejemplo: nombresecuencia.NEXTVAL; ROWID.

b. Operadores

  • Aritméticos  + - / * ( )

    ejemplo: 1.15 * PRECIO; (2 * IMPLIN)/5; SYSDATE +15

  • Sobre cadenas de caracteres: concatenación: ||

    ejemplo: ’Señor’|| NOMBRE

c. Condiciones

Las condiciones emplean expresiones, operadores de comparación y operadores lógicos.

Operadores de comparación

El valor de las expresiones lógicas puede ser VERDADERO, FALSO o DESCONOCIDO. Una comparación se evaluará como DESCONOCIDO si al menos uno de los términos es NULL.

  • Comparación simple

    expresión1 {=,!=,<>, <,<=, >, >=} expresión2

  • Pertenencia a un conjunto de valores

    expresión1 IN (expresión2,...)

    VERDADERO si expresión1 aparece al menos una vez en la lista (expresión2, ...).

  • Pertenencia a un intervalo de valores

    expresión1 BETWEEN expresión2 AND expresión3

    VERDADERO si expresión1 se encuentra entre los valores límite determinados por expresión2 y expresión3, ambos inclusive.

  • Comparación con un formato de cadena de caracteres.

    expresión1 LIKE ’formato’

    El formato puede incluir los metacaracteres:

  • - "%" para designar una serie de 0 a n caracteres

  • - "_" para designar un único...

Traducción del álgebra relacional

El método del álgebra relacional permite resolver extracciones de datos creando tablas intermedias mediante el uso de operadores (unión, restricción, combinación, etc.). Este método puede traducirse a SQL mediante la instrucción SELECT, que permite llevar a cabo todas las operaciones mediante sus diferentes cláusulas (WHERE, GROUP BY, UNION, etc.), y mediante las instrucciones CREATE e INSERT, que permiten la gestión de las tablas intermedias.

1. Operaciones

a. Restricción

La restricción permite extraer solo aquellas filas que cumplan una condición.

La operación images/signe3.PNG s (condición) se traduce de la siguiente manera:

SELECT * FROM S WHERE condición; 

Ejemplo

Restricción sobre el número de pedido en la tabla PED = images/signe3.PNG PEDIDOS (NUMPED = 100):


SQL> select * from PEDIDOS where NUMPED=100;  
 
    NUMPED     NUMCLI FECHAPED ES  
---------- ---------- -------- -  
       100         15 18/11/02 EC  
 
SQL> 
 

b. Campos calculados elementales

Los campos calculados elementales permiten obtener columnas calculadas para cada fila. La operación images/signe4.PNG S (col, ..., nvcol = exp) se traduce como:

SELECT col, ..., expresión FROM S;
 

Ejemplo

Cálculo del valor del almacén images/signe4.PNG ARTICULOS(REFART, DESCRIPCION, VALALM = (PRECIOSINIVA * CANTALM))


SQL> select REFART, DESCRIPCION, (PRECIO * CANTALM) from ARTICULOS;  
 
REFA DESCRIPCION                    (PRECIO*CANTALM)  
---- ------------------------------ ---------------  
ZZZZ CANTIMPLORA  
ZZ01 LOTE ALFOMBRAS                               0  
AA00 REGALO                                       0  
CD50 CADENA HIFI                             5147,8  
AB   ALFOMBRA  
AB10 Alfombra china                           12501  
AB03 Alfombras                                17400  
AB22 ALFOMBRA...

SQL avanzado

El lenguaje SQL permite emplear otros objetos, además de las tablas y los índices, para gestionar los datos o manipular las consultas.

Por otro lado, la potencia de la instrucción SELECT permite combinar las diferentes cláusulas en un único comando, así como anidar consultas.

Por último, en un entorno multiusuario, SQL permite bloquear las tablas para preservar la integridad de los datos.

1. Los objetos

a. Objetos View (vista)

Las vistas son tablas virtuales que presentan el resultado de una instrucción SELECT.

Una de las principales ventajas de utilizar vistas procede del hecho de que la vista no almacena los datos, sino que hace referencia a una o varias tablas de origen mediante una consulta SELECT, consulta que se ejecuta cada vez que se hace referencia a la vista. De este modo, cualquier modificación que se realice sobre los datos de las tablas de origen es inmediatamente visible en la vista, cuando ésta vuelve a ejecutarse.

Los casos en que se emplean las vistas son diversos:

  • Para ocultar a los usuarios determinadas columnas o filas, poniendo a su disposición vistas de proyección o de restricción. Esto permite proporcionar un nivel de seguridad adicional.

  • Para simplificar el uso de tablas que incluyan muchas columnas, muchas filas o nombres complejos, creando vistas con estructuras más sencillas y nombres más explícitos.

  • Para "salvaguardar" las consultas utilizadas con mayor frecuencia, empleando un nombre para designarlas.

  • Para simplificar la introducción de instrucciones SQL por parte de los usuarios, enmascarando las combinaciones utilizadas con mayor frecuencia.

Una vez creadas, las vistas se emplean como las tablas en las instrucciones DML, INSERT, SELECT, UPDATE, DELETE. Sin embargo, no es posible realizar actualizaciones si la vista contiene:

  • instrucciones para operaciones de conjuntos (UNION, INTERSECT, MINUS),

  • funciones de grupo,

  • cláusulas GROUP BY, CONNECT BY, START WITH.

Una vista definida mediante una combinación soporta las instrucciones INSERT, UPDATE, DELETE, si hace referencia en su definición a una tabla cuya(s) columna(s) de clave primaria aparecen en la lista de las columnas proyectadas de la combinación y si las instrucciones INSERT, UPDATE, DELETE se aplican sobre dicha tabla.

Creación

Sintaxis


CREATE [OR REPLACE] [FORCE | NO FORCE] VIEW nombre  
[(columnas...