Conceptos generales, estructura básica, predicados y operadores. Tipos de datos.

SQL

 

Introducción

El lenguaje de consulta estructurado SQL (Standard Query Language) ) es un lenguaje de base de datos normalizado, utilizado por el motor de base de datos de Microsoft Jet el cual nos permite crear tablas y obtener datos de ella de manera muy sencilla.

El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

Para exponer mas claramente los conceptos se realizaran ejemplo sobre relaciones que se crearan aquí para entender mejor como funciona SQL.

Cuando nos refiramos a relación estamos hablando mas concretamente de la tabla de datos en si, y sus atributos serán los campos de la tabla. Como ejemplo la siguiente relación (tabla) la llamaremos persona y sus atributos ( campos ) son nombre, apellido y Id

PERSONA

  ID

 NOMBRE

   APELLIDO

34568

JOSE

ALVAREZ   

54856

PABLO

   LÓPEZ

 56640

ROBERTO

    SÁNCHEZ

    71280

JUAN

   BALDERAS

   42389

RUBEN

LÓPEZ 

 54836

SANDRA

   BULLOCK

Existen dos tipos de comandos SQL:  

  • 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.

Comandos DLL

CREATE Utilizado para crear nuevas tablas, campos e índices

DROP Empleado para eliminar tablas e índices

ALTER Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos.

Comandos DML

SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado

INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.

UPDATE Utilizado para modificar los valores de los campos y registros especificados

DELETE Utilizado para eliminar registros de una tabla de una base de datos

Estructura básica

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.    

FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros

WHERE Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar

GROUP BY Utilizada para separar los registros seleccionados en grupos específicos

HAVING Utilizada para expresar la condición que debe satisfacer cada grupo

ORDER BY  Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico

La estructura básica de una expresión para consulta SQL consta de tres elementos:       

  • SELECT
  • FROM
  • WHERE

Consultas de Selección

Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros.

Una consulta básica en SQL tiene la forma:

SELECT A1,A2,...,An
            FROM r1,r2,...,rn
WHERE P

Donde:

A = atributo ( Campo de la tabla )

r = relación ( Tabla )

P  = condición

Ejemplo: Seleccionar todos los nombres de las personas que tengan el apellido LÓPEZ de la tabla PERSONA

SELECT nombre
FROM   persona
WHERE  apellido = “LÓPEZ”;

APELLIDO

 ID

LÓPEZ

54856

LÓPEZ

 42389

El resultado de una consulta es por supuesto otra relación (Tabla). Si se omite la cláusula WHERE, el predicado P es verdadero. La lista A1, A2,..., An puede sustituirse por un asterisco (*) para seleccionar todos los atributos de todas las relaciones que aparecen en la cláusula FROM, aunque no es conveniente elegir esta ultima opción salvo que sea necesario pues desperdiciamos mucho tiempo en obtenerlo.

Predicados y operadores.

Los operadores lógicos en SQL son:

  • AND Es el "y" lógico. Evalua dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.
  • OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.
  • NOT Negación lógica. Devuelve el valor contrario de la expresión.

La lógica de estos operadores es igual que en cualquier lenguaje de programación y sirven para unir predicados.

Las operaciones aritméticas en SQL son:

  • + ( Suma )
  • - ( Resta )
  • * ( Multiplicación )
  • / ( División )

Funciones de Agregado

Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros.

Función

Descripción

AVG

Utilizada para calcular el promedio de los valores de un campo determinado 

COUNT

Utilizada para devolver el número de registros de la selección 

SUM

Utilizada para devolver la suma de todos los valores de un campo determinado 

MAX

Utilizada para devolver el valor más alto de un campo especificado 

MIN

Utilizada para devolver el valor más bajo de un campo especificado 

Operadores de Comparación

Operador

Uso

Menor que

Mayor que

<> 

Distinto de

<=

Menor ó Igual que

>=

Mayor ó Igual que

=

Igual que

BETWEEN

Utilizado para especificar un intervalo de valores.

LIKE

Utilizado en la comparación de un modelo

In

Utilizado para especificar registros de una base de datos 

El operador de comparación BETWEEN, se utiliza para valores comprendidos.

Ejemplo: Encontrar todos los nombres y Id de las personas cuyos Id sea mayor que 50 mil y menor a 60 mil

SELECT nombre, Id
FROM persona
WHERE Id BETWEEN 50000 and 60000

NOMBRE

ID

PABLO

 54856

ROBERTO

 56640

SANDRA

 54836

Ordenar los registros.

Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la cláusula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo:

SELECT Nombre, Apellido, Id FROM persona ORDER BY Nombre;

Esta consulta devuelve los campos Nombre, Apellido y Id ordenados por el campo Nombre.

El resultado sería:

JOSE

ALVAREZ   

34568

JUAN

   BALDERAS

    71280

PABLO

   LÓPEZ

54856

ROBERTO

    SANCHEZ

 56640

RUBEN

LÓPEZ 

   42389

SANDRA

   BULLOCK

 54836

Consultas con Predicado

El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados son:

Predicado

Descripción

ALL

Devuelve todos los campos de la tabla

TOP

Devuelve un determinado número de registros de la tabla

DISTINCT

Omite los registros cuyos campos seleccionados coincidan totalmente

DISTINCTROW

Omite los registros duplicados basándose en la totalidad del registro y no sólo en los campos seleccionados.

Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos  selecciona todos los registros que cumplen las condiciones de la instrucción SQL.

Con el uso de este predicado obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, se recomienda por su rapidez indicar el listado de campos deseados. Ejemplo:

SELECT ALL FROM persona;
    SELECT * FROM persona;

TOP

Devuelve un cierto número de registros que entran entre al principio o al final de un rango especificado por una cláusula ORDER BY. Supongamos que queremos recuperar los nombres de las 3 primeras personas de nuestra tabla ejemplo.

SELECT TOP 3 Nombre, Apellido FROM persona ORDER BY Apellido;

Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 3 registros de la tabla persona .El predicado TOP no elige entre valores iguales.

Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la cláusula ORDER BY. Ejemplo:

    SELECT TOP 30 PERCENT Nombre, Apellido FROM persona
    ORDER BY Apellido;

La cláusula WHERE

La cláusula WHERE puede usarse para determinar qué registros de las tablas enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. Depués de escribir esta cláusula se deben especificar las condiciones. Si no se emplea esta cláusula, la consulta devolverá todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuación de FROM.

SELECT Nombre, Apellido FROM persona WHERE Id > 56000;

Obtendríamos el siguiente resultado:

ROBERTO

    SANCHEZ

 56640

JUAN

   BALDERAS

    71280

SELECT Nombre, Apellido FROM persona WHERE Apellido ="López";

Consultas de Acción

Las consultas de acción son aquellas que no devuelven ningún registro, son las encargadas de acciones como añadir y borrar y modificar registros.

   DELETE

Crea una consulta de eliminación que elimina los registros de una o más de las tablas listadas en la cláusula FROM que satisfagan la cláusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algún campo en concreto. Su sintaxis es:

DELETE Tabla.* FROM Tabla WHERE criterio

La opción tabla.* se utiliza cuando el origen está basado en varias tablas, y sirve para indicar en qué tabla vamos a borrar.

DELETE * FROM persona WHERE Apellido = "Sánchez";

La opción * es opcional y es la que se asume por defecto y se puede poner unicamente cuando el origen es una sola tabla.

Nota importante. Una vez borrados, los registros no se pueden recuperar.

Para saber con seguridad qué registros se eliminarán, primero se puede ejecutar una consulta de selección que utilice el mismo criterio y después ejecutar la consulta de borrado. Es importante mantener copias de seguridad de los datos por si se eliminan los registros equivocados, podrán ser recuperarados.

INSERT INTO

La inserción de nuevos datos en una tabla se realiza añadiendo filas enteras a la tabla, la sentencia SQL que lo permite es la orden INSERT INTO.

Esta consulta puede ser de dos tipo: Insertar un único registro ó Insertar en una tabla los registros contenidos en otra tabla.

Para insertar un único Registro:
En este caso la sintaxis es la siguiente:

    INSERT INTO Tabla (campo1, campo2, .., campoN)
    VALUES (valor1, valor2, ..., valorN)

Por ejemplo utilizando nuestra tabla muestra.

INSERT INTO persona (Nombre, Apellido, Id) VALUES ('Luis', 'Sánchez', '54122');

Para insertar Registros de otra Tabla:

INSERT INTO Tabla  SELECT TablaOrigen.* FROM TablaOrigen

De esta forma los campos de TablaOrigen se grabarán en Tabla, para realizar esta operación es necesario que todos los campos de TablaOrigen estén contenidos con igual nombre en Tabla. Tabla deberá poseer todos los campos de TablaOrigen (igual nombre e igual tipo).

UPDATE

Crea una consulta de actualización que cambia los valores de los campos de una tabla especificada basándose en un criterio específico. Su sintaxis es:

    UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN
    WHERE Criterio;

Ejemplo:

UPDATE persona SET Id = 12345 WHERE Id = 34568;

Tipos de Datos

Los tipos de datos SQL se clasifican en 13 tipos de datos primarios y de varios sinónimos válidos reconocidos por dichos tipos de datos.

Los tipos de datos primarios son:

BINARY, BIT, BYTE, COUNTER, CURRENCY, DATETIME, SINGLE, DOUBLE, SHORT, LONG, LONGTEXT, LONGBINARY, TEXT

Estructuras de las Tablas

 Creación de Tablas Nuevas.

La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para rellenarla con datos, nos permite definir las columnas que tiene y ciertas restricciones que deben cumplir esas columnas.

La sintaxis es la siguiente:

CREATE TABLE tabla (campo1 tipo (tamaño) índice1 ,
    campo2 tipo (tamaño) índice2 , ...,
    índice multicampo , ... )

Donde:

tabla nombre de la tabla que estamos definiendo.

campo1, campo2 nombre de la columna que estamos definiendo

tipo: tipo de dato de la columna, todos los datos almacenados en la columna deberán ser de ese tipo.

indice1, indice2 Es una cláusula CONSTRAINT que define el tipo de indice a crear. Esta cláusula en opcional.

indice multicampo Es una cláusula CONSTRAINT que define el tipo de indice multicampos a crear. Un índice multicampo es aquel que está indexado por el contenido de varios campos. Esta cláusula en opcional.

Ejemplos:

      CREATE TABLE persona (Nombre TEXT (25) , Apellido TEXT (50));

Crea una nueva tabla llamada PERSONA con dos campos, uno llamado Nombre de tipo texto y longutid 25 y otro llamado apellidos con longitud 50.

    CREATE TABLE persona (Id INTEGER CONSTRAINT IndicePrimario PRIMARY, Nombre TEXT, Apellido TEXT, Fecha_Nacimiento DATETIME);

Crea una tabla llamada PERSONA con un campo Texto de longitud predeterminada (50) llamado Nombre y otro igual llamado Apellido, crea otro campo llamado Fecha_Nacimiento de tipo Fecha/Hora y el campo Id de tipo entero el que establece como clave principal.

  ID

 NOMBRE

   APELLIDO

FECHA_NAC

34568

JOSE

ALVAREZ   

19/06/1975

54856

PABLO

   LÓPEZ

03/08/1973

 56640

ROBERTO

    SÁNCHEZ

08/05/1980

  71280

JUAN

   BALDERAS

02/06/1979

   42389

RUBEN

LÓPEZ 

03/06/1976
54836

SANDRA

   BULLOCK

04/04/1979
La cláusula CONSTRAINT

Se utiliza la cláusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar índices. Existen dos sintaxis para esta cláusula dependiendo si desea Crear ó Eliminar un índice de un único campo o si se trata de un campo multiíndice.

Tipo de Indice

Descripción

UNIQUE

Genera un índece de clave única, lo que implica que los registros de la tabla no pueden contener el mismo valor en los campos indexados.

PRIMARY KEY

Genera un índice primario en el campo o los campos especificados. Todos los campos de la clave principal deben ser únicos y no nulos, cada tabla sólo puede contener una única clave principal.

FOREIGN KEY

Genera un índice externo (toma como valor del índice de los campos contenidos en otras tablas). Una clave foránea es una columna o conjunto de columnas que contiene un valor que hace referencia a una fila de otra tabla,

Modificar el Diseño de una Tabla.

Modifica el diseño de una tabla ya existente, se pueden modificar los campos o los índices existentes. Su sintaxis es:

    ALTER TABLE tabla {ADD {COLUMN tipo de campo[(tamaño)] [CONSTRAINT índice]     CONSTRAINT índice multicampo} |
    DROP {COLUMN campo I CONSTRAINT nombre del índice} }

En donde:

tabla Es el nombre de la tabla que se desea modificar.

campo Es el nombre del campo que se va a añadir o eliminar.

tipo Es el tipo de campo que se va a añadir.

tamaño El el tamaño del campo que se va a añadir (sólo para campos de texto).

índice Es el nombre del índice del campo (cuando se crean campos) o el nombre del índice de la tabla que se desea eliminar.

índice multicampo Es el nombre del índice del campo multicampo (cuando se crean campos) o el nombre del índice de la tabla que se desea eliminar.

ADD COLUMN Se utiliza para añadir un nuevo campo a la tabla, indicando el nombre, el tipo de campo y opcionalmente el tamaño (para campos de tipo texto).

ADD Se utliza para agregar un índice de multicampos o de un único campo.

DROP COLUMN Se utliza para borrar un campo. Se especifica únicamente el nombre del campo. 

DROP Se utiliza para eliminar un índice. Se especifica únicamente el nombre del índice a continuación de la palabra reservada CONSTRAINT. 

Ejemplo:

Agrega un campo Salario de tipo Moneda a la tabla persona.

ALTER TABLE persona ADD COLUMN Salario CURRENCY;

Elimina el campo Salario de la tabla persona.
ALTER TABLE persona DROP COLUMN Salario;

DROP TABLE

La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si está abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad referencial (si interviene como tabla padre en una relación y tiene registros relacionados).
La sintaxis es la siguiente:

DROP TABLE tabla1

Ejemplo:
DROP TABLE persona
Elimina de la base de datos la tabla persona.

 


Ir a Inicio