Lenguaje SQL

Revisión del 07:52 17 ago 2011 de Jose jc.ssp (discusión | contribuciones) (Agregar campos a una tabla)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Lenguaje SQL
Información sobre la plantilla

El lenguaje SQL (Strucured Query Language). El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por el motor de base de datos de Microsoft Jet. SQL se utiliza para crear objetos QueryDef, como el argumento de origen del método OpenRecordSet y como la propiedad RecordSource del control de datos. También se puede utilizar con el método Execute para crear y manipular directamente las bases de datos Jet y crear consultas SQL de paso a través para manipular bases de datos remotas cliente - servidor.


Breve Historia

La historia de SQL (que se pronuncia deletreando en inglés las letras que lo componen, es decir "ese-cu-ele" y no "siquel" como se oye a menudo) empieza en 1974 con la definición, por parte de Donald Chamberlin y de otras personas que trabajaban en los laboratorios de investigación de IBM, de un lenguaje para la especificación de las características 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 revisión del lenguaje (SEQUEL/2), que a partir de ese momento cambió de nombre por motivos legales, convirtiéndose en SQL.

Componentes del SQL

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.

Comandos

Existen dos tipos de comandos SQL:

  • DLL que permiten crear y definir nuevas bases de datos, campos e índices.
  • 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

Cláusulas

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

Operadores Lógicos

Operador

  • AND Es el "y" lógico. Evalúa 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 verdad si alguna de las dos es cierta.
  • NOT Negación lógica. Devuelve el valor contrario de la expresión.

Operadores de Comparación

Operador < Menor que
> Mayor que
<> Distinto de
<= Menor o igual que
>= Mayor o 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

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

  • 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

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 que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable.

Consultas básicas

La sintaxis básica de una consulta de selección es la siguiente: SELECT Campos FROM Tabla;

En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo:

SELECT Nombre, Telefono FROM Clientes;

Esta consulta devuelve un recordset con el campo nombre y teléfono de la tabla clientes.

Ordenar los registros

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

SELECTCodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre;

Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre.

Se pueden ordenar los registros por mas de un campo, como por ejemplo:

SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal, Nombre;

Incluso se puede especificar el orden de los registros: ascendente mediante la claúsula (ASC -se toma este valor por defecto) ó descendente (DESC)

SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostalDESC , Nombre ASC;

Consultas con Predicado

El predicado se incluye entre la claúsula y el primer nombre del campo a recuperar, los posibles predicados son:

ALL Devuelve todos los campos de la tabla. 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. No se conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de campos deseados.

SELECT ALL FROM Empleados;

SELECT* FROM Empleados;

TOP Devuelve un determinado número de registros de la tabla 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 los 25 primeros estudiantes del curso 1994:

SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;

Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25 registros de la tabla Estudiantes. El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media número 25 y la 26 son iguales, la consulta devolverá 26 registros. 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. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso:

SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;

El valor que va a continuación de TOP debe ser un Integer sin signo.TOP no afecta a la posible actualización de la consulta.

DISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente así como los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen López en el campo Apellido, la siguiente instrucción SQL devuelve un único registro:

SELECT DISTINCT Apellido FROM Empleados;

Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios.

DISTINCTROW Omite los registros duplicados basándose en la totalidad del registro y no sólo en los campos seleccionados. Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que sólo se fijaba en el contenido de los campos seleccionados, éste lo hace en el contenido del registro completo independientemente de los campo indicados en la cláusula SELECT.

SELECT DISTINCTROW Apellido FROM Empleados;

Si la tabla empleados contiene dos registros: Antonio López y Marta López el ejemplo del predicado DISTINCT devuelve un único registro con el valor López en el campo Apellido ya que busca no duplicados en dicho campo. Este último ejemplo devuelve dos registros con el valor López en el apellido ya que se buscan no duplicados en el registro completo.

Alias

En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma:

SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;

Recuperar Información de una base de Datos Externa

Para concluir este capítulo se debe hacer referencia a la recuperación de registros de bases de datos externa. Es ocasiones es necesario la recuperación de información que se encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutará la consulta o que en ese momento no se encuentra abierta, esta situación la podemos salvar con la palabra reservada IN de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados IN 'c:\databases\gestion.mdb';

En donde c:\databases\gestion.mdb es la base de datos que contiene la tabla Empleados.

Ejemplos de Consultas utilizando SQL

Crear Tablas

1. CREATE TABLE Estudiantes ([IdEstudiante] integer, [Nombre] text, [Apellidos] text, [Dirección] memo, [Edad] byte, CONSTRAINT [Índice1]PRIMARY KEY ([IdEstudiante]));

2. CREATE TABLE Asignatura ([IdAsignatura] integer, [NAsignatura] text, CONSTRAINT [Índice1]PRIMARY KEY ([IdAsignatura]));

3. CREATE TABLE Evaluación ([IdEstudiante] integer, [IdAsignatura] Integer, [Nota] byte);

Eliminar Tablas

1. DROP TABLE Estudiantes

2. DROP TABLE Asignatura

3. DROP TABLE Evaluación

Eliminar Índices

1. DROP INDEXÍndice1 ON Estudiantes

2. DROP INDEXÍndice1 ON Asignatura

Eliminar relaciones

1. ALTER TABLE Evaluación DROP CONSTRAINT NOTA;

2. ALTER TABLE Evaluación DROP CONSTRAINT NotaAsig;

Fuente

http://www.manualdephp.com/manualphp/lenguaje-sql-php.html http://www.pablin.com.ar/computer/cursos/varios/sql1.htm http://www.maestrosdelweb.com/editorial/tutsql1/