Anda di halaman 1dari 14

I.

Introducción
En vista del auge que toma cada vez la tecnología, es preciso saber hacer de todo lo relacionado
son software, pero no podemos olvidar que también existe la parte de cómo
manejar datos e información.

Para ello existen afortunadamente formas o maneras de como poder guardar información
necesaria y de vital importancia para nuestras empresas o compañías.

Es por tal motivo, es preciso conocer muy de fondo las diferentes plataformas o manejadores
de bases de datos para poder optar por la más adecuada para ser implantada en nuestras
compañías o empresas, como lo son SQL, ORACLE, INFORMIX.

II. Orígenes y evolución


Los orígenes de SQL (Structured Query Language - Lenguaje de Consulta Estructurada) están
ligados a las Bases de Datos de las PC o móvil. En 1970 Codd propone el modelo relacional
(Sistema de gestión de base de datos relacionales basado en la lógica de predicados y la teoría
de conjuntos

Fue creado en los laboratorios de IBM en la década de los 70, se denominó inicialmente SEQUEL
(Structured Query Language), el cual se basaba en la propuesta del modelo relacional y
proporcionada por Codd, posteriormente este lenguaje fue liberado y se estandarizó como el
lenguaje a ser usado por los diferentes Sistemas de Gestión de Base de Datos que se crearon.

En 1986 fue estandarizado por el ANSI (American National Estándar Institute – Instituto
Nacional Estadounidense de Estándares

En la actualidad SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y,


aunque la diversidad de añadidos particulares que incluyen las distintas implementaciones
comerciales del lenguaje es amplia, el soporte al estándar SQL-92 es general y muy amplio.

El ANSI SQL sufrió varias revisiones y agregados a lo largo del tiempo:


Año Nombre Alias Comentarios
Primera publicación hecha por ANSI. Confirmada
1986 SQL-86 SQL-87
por ISO en 1987.
1989 SQL-89 Revisión menor.
1992 SQL-92 SQL2 Revisión mayor.
Se agregaron expresiones regulares, consultas recursivas (para
1999 SQL:1999 SQL2000 relaciones jerárquicas) y algunas características orientadas a
objetos.
Año Nombre Alias Comentarios
Introduce algunas características de XML (“Lenguaje de
Marcado Extensible” es la forma de representar información
2003 SQL:2003 estructurada en la web (todos documentos)), cambios en las
funciones, estandarización del objeto sequence y de las
columnas autonuméricas.
Define maneras de importar y guardar datos XML en una base
de datos SQL, manipulándolos dentro de la base de datos y
2005 SQL:2005
publicando el XML y los datos SQL convencionales en forma
XML. Además, proporciona facilidades de integración de código.
Permite el uso de la cláusula ORDER BY fuera de las definiciones
2008 SQL:2008 de los cursores. Incluye los disparadores del tipo INSTEAD OF.
Añade la sentencia TRUNCATE.

III. Definición
Es una herramienta para la organización, gestión y recuperación de los daos almacenados en
bases de datos informáticos. (Base de datos: Una base de datos es una colección de información
organizada de tal modo que sea fácilmente accesible, gestionada y actualizada).

El acrónimo SQL es la abreviatura de Structured Query Language (Lenguaje Estructurado de


Consultas) y como su nombre lo indica es un lenguaje que se utiliza para interactuar con bases
de datos relacionales.

IV. Características
SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los
sistemas relacionales y permite así gran variedad de operaciones.

Es un lenguaje declarativo de “alto nivel” (capacidad cognitiva humana y no a la de una


maquina) permite una alta productividad en codificación y la orientación a objetos.

De esta forma, una sola sentencia puede equivaler a uno o más programas que se utilizarían en
un lenguaje de bajo nivel orientado a registros
 Estructuras de datos simples
 Operadores potentes
 Periodos de aprendizaje inicial cortos
 Mejora de la independencia de datos
 Modo de uso dual (interactivo o inmerso)
 Optimización
V. Lenguaje de definición de datos - DDL
El lenguaje de definición de datos puede tener algunas variaciones respecto al SMBD (Sistema
Manejador de Base de Datos) que se utilice para manipularlo, sin embargo, existe una
codificación estándar que nos permite identificar una serie de características del lenguaje y las
sentencias utilizadas en él.

A continuación, se describe la construcción de bases de datos, tablas, la modificación y


eliminación de las mismas.

5.1. Creación de la Base de Datos


La base de datos es la estructura de almacenamiento principal, la sentencia que se utiliza para
su construcción es CREATE. Su sintaxis y modo de uso genérico es:

Sintaxis:
CREATE DATABASE <Nombre de la base de datos>

Ejemplo
Para crear la base de datos CITAS, la sentencia sería:
CREATE DATABASE citas

Una vez que se ha construido la base de datos, se deben construir las tablas en su interior, es
decir que debe estar predefinida o seleccionado ese espacio de trabajo.

La sentencia que se utiliza para establecer como la base de datos activa es USE, a continuación,
su sintaxis:
USE <Nombre de la base de datos>

Ejemplo
Para realizar actividades con los objetos de la base de datos cita, debemos dejarla como la base
de datos activa:
USE citas

5.2. Creación de las tablas


Para construir las tablas que conforman las bases de datos, se utiliza la sentencia CREATE
TABLE. Con ésta se crea la estructura de la tabla, lo cual permite definir las columnas que tiene
y definir ciertas restricciones que deben cumplir esas columnas.

Antes de presentar la sentencia es necesario hacer claridad respecto a las posibles restricciones
que se manejan para las columnas de una tabla.

Las restricciones también conocidas como constraints representan características particulares


que tiene una columna y determinan entre otras, reglas sobre los contenidos, tipos de datos,
limites, relación de la columna con otras columnas, otros registros de la misma tabla o en otras
tablas.

A continuación, se presenta a manera de resumen las restricciones que se pueden asignar a las
columnas en una tabla, el nivel identifica si afecta a nivel de registro (fila).

Sintaxis:
CREATE TABLE <Nombre_tabla> (
<Nombre_columna1> <tipo_de_dato> <restricción>,
<Nombre_columna2> < tipo_de_dato > <restricción>...
<Nombre_columnaN> < tipo_de_dato > <restricción>)

Consideraciones:
Los nombres de la tabla y columnas, deben conservar las mismas características de un
identificador, es decir, no espacios en blanco, de preferencia usar los nemotécnicos definidos
en la organización, nombres significativos, no iniciar con números, etc.
Los tipos de datos están directamente relacionados con el SMBD que se utilice, para los
ejemplos que se presentan a continuación se utilizarán tipos de datos y expresiones propias de
MySql.

Ejemplo
Ya con “CITAS” como base de datos predeterminada, se procede a crear las respectivas tablas,
para crear la tabla “MEDICO”, se debe tener previamente definida la estructura de datos,
producto de los procesos de modelamiento o normalización vista anteriormente:

CREATE TABLE TblMedico (


MedIdentificacion Char (10) Primary Key not null,
MedNombres Varchar (50) not null,
MedApellidos Varchar (50) not null)

5.3. Modificaciones a las Tablas


El comando utilizado es ALTER TABLE, este comando tiene algunos atributos que nos permite
realizar cambios a una tabla ya creada. Las posibles modificaciones a realizar son: adición de
nuevas columnas, eliminación de columnas, cambio de tipo de dato, adición de constraints
(restricciones) a las columnas previamente creadas o la eliminación de restricciones.

Sin embargo, para proceder a incorporar el cambio el SMBD realiza una serie de verificaciones
para que estos cambios no afecten los datos previamente registrados (si ya existieran) o entren
en contravención con reglas anteriores. Por ejemplo, para que una columna pueda modificarse
y convertirse en llave primaria, debe tener la restricción de not null y los datos (si los hubiese)
no podrían tener valores repetidos.

En esta sentencia se utilizan expresiones que determinan el tipo de cambio a incorporar, de la


siguiente forma:
• ADD (COLUMN o CONSTRAINT): para agregar columnas o restricciones
• DROP (COLUMN o CONSTRAINT): para eliminar columnas o restricciones
• ALTER / MODIFY: para modificar columnas existentes

Sintaxis:
ALTER TABLE <Nombre_tabla>
ADD (COLUMN) <Nombre_columna> <tipo_de_dato> <Restricción>
ADD (CONSTRAINT) <Nombre_restricción> <tipo_de_restricción> <texto restricción>
DROP (COLUMN) <Nombre_columna>
DROP (CONSTRAINT) <Nombre_restricción>

Ejemplo
Se requiere agregar una columna a la tabla Medico, para almacenar el registro médico del
doctor, que es un número de tipo entero y no puede repetirse.
Alter table TblMedico
Add Column MedRegistro int
Alter table TblMedico
Add Constraint UNIQUE (MedRegistro)

5.4. Eliminación de Tablas


La sentencia DROP TABLE permite eliminar una tabla, siempre y cuando se tengan permisos
sobre el objeto, no se encuentre abierta o siendo accesada por algún usuario o si al eliminarla
se infringe alguna regla. El caso más común está relacionado con las llaves foráneas, cuando el
contenido de una tabla es referenciada por otra a través de las llaves foráneas.

Sintaxis:
DROP TABLE <Nombre_tabla>

Ejemplo
Si se deseara eliminar la tabla Medico y no existieran referencias de otras tablas, la sentencia a
utilizar es:
DROP TABLE TblMedico

La sentencia TRUNCATE TRABLE trunca todo el contenido de una tabla. La ventaja sobre el
comando DROP, es que, si se quiere borrar todo el contenido de la tabla, es mucho más rápido,
especialmente si la tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se
quiere eliminar absolutamente todos los registros.

Sintaxis:
TRUNCATE TABLE <Nombre_tabla>
VI. Lenguaje de manipulación de datos – DML
Es un lenguaje proporcionado por los sistemas gestores de bases de datos que permite a los
usuarios de la misma llevar a cabo las tareas de consulta o modificación de los datos contenidos
en las Bases de Datos del Sistema Gestor de Bases de Datos.

Este lenguaje se utiliza para “manipular” los datos de una base de Datos, es decir Insertar,
Borrar, Modificar y Consultar los registros de las tablas que conforman una base de Datos.
Las sentencias DML son:
 Insert
 Update
 Delete
 Select

6.1. Inserción de datos


La sentencia INSERT se utiliza para agregar los registros a una tabla, es decir que se agregan
filas completas de datos a la tabla, previa a la inserción se realiza se realiza un proceso de
verificación de las restricciones presentes en cada campo, es decir que, si el campo es llave
primaria, el valor a insertar no sea nulo o repetido y así sucesivamente con cada dato a insertar.

La fila siempre es agregada al final de la tabla y el valor de cada campo de coincidir con el tipo
de dato establecido para cada columna.
Sintaxis

insert into usuario (nombre, apellidos, edad, carrera)


values ("Martín", "Bastida Godínez", "23", "Ingeniería en TI");

6.2. Modificación de datos


La sentencia UPDATE se utiliza para realizar modificaciones sobre los datos que se encuentran
en los campos de una tabla. El sistema realiza una validación de la integridad de los campos,
verificando que los nuevos datos no infrinjan ninguna de las restricciones asociadas a los
campos. Se debe tener especial cuidado en proporcionar adecuadamente la condición que
determina sobre cual o cuales de los registros deben aplicarse los cambios.

Por ejemplo, en nuestra tabla "usuarios", queremos cambiar los valores de todas las claves, por
"Sevilla":

update usuarios set clave='Sevilla';

Utilizamos "update" junto al nombre de la tabla y "set" junto con el campo a modificar y su
nuevo valor.
El cambio afectará a todos los registros.

Podemos modificar algunos registros, para ello debemos establecer condiciones de selección
con "where".

Por ejemplo, queremos cambiar el valor correspondiente a la clave de nuestro usuario llamado
'Martín', queremos como nueva clave 'Boca', necesitamos una condición "where" que afecte
solamente a este registro:

update usuarios set clave='Boca'


where nombre='Martín';

Si no encuentra registros que cumplan con la condición del "where", ningún registro es
afectado.

Las condiciones no son obligatorias, pero si omitimos la cláusula "where", la actualización


afectará a todos los registros.

También se puede actualizar varios campos en una sola instrucción:

update usuario set nombre='MarceloDuarte', clave='Marce'


where nombre='Marcelo';

Para ello colocamos "update", el nombre de la tabla, "set" junto al nombre del campo y el nuevo
valor y separado por coma, el otro nombre del campo con su nuevo valor.

6.3. Eliminación de registros


La sentencia DELETE se utiliza para borrar filas de datos de una tabla. El sistema realiza una
validación de la integridad referencial antes de ejecutar la acción. Así como con la modificación
se debe tener especial cuidado en proporcionar adecuadamente la condición que determine
cual o cuales de los registros deben ser borrados.

delete from usuarios;

La ejecución del comando indicado en la línea anterior borra TODOS los registros de la tabla.

Si queremos eliminar uno o varios registros debemos indicar cuál o cuáles, para ello utilizamos
el comando "delete" junto con la cláusula "where" con la cual establecemos la condición que
deben cumplir los registros a borrar. Por ejemplo, queremos eliminar aquel registro cuyo
nombre de usuario es 'Martín':
delete from usuarios where nombre='Martín';

Si solicitamos el borrado de un registro que no existe, es decir, ningún registro cumple con la
condición especificada, no se borrarán registros, pues no encontró registros con ese dato.

6.4. Consulta de datos


Con la sentencia SELECT se visualiza la información de la base de Datos. Los datos que se
presentan corresponden a una o más filas de una tabla o también a una o más filas de una o más
tablas.

La sintaxis básica es:


SELECT <Nombre columna> o <lista de columnas>
FROM <Nombre de la tabla>

Ejemplo
Se desea consultar los nombres y apellidos de todos los médicos, la sentencia para hacer esta
consulta sería:
SELECT MedNombres, MedApellidos
FROM TblMedico

Esta instrucción, puede ir acompañada de las siguientes clausulas:


WHERE <condición>
GROUP BY <Nombre columnal>, ...
HAVING <condición>
ORDER BY <Nombre columna> <Modo de ordenamiento>

Antes de realizar cualquier consulta a la base de Datos, es muy importante tener claro cuál o
cuáles son los datos que se requiere visualizar y de que tabla o tablas se van a extraer.
En caso de que se deseara consultar TODOS los campos de la tabla, no es necesario escribir
todos los campos, a menos que se desee escribirlo en un orden particular, si no es así se utiliza
el comodín * (asterisco) que representa todos los campos.

En el ejemplo anterior se requería solo nombre y apellido, en caso de desear visualizar todos
los campos de una tabla, utilizando el comodín *, quedaría la sentencia de la siguiente manera:
SELECT From TblMedico;

6.4.1. Alias de columnas


Estos alias se utilizan para ayudar a la visualización del nombre de las columnas al momento
de generar el resultado de la consulta, estos nombres son temporales, es decir que sólo se
reflejan en salida, bien sea pantalla o impresión, pero no afectan los nombres que los campos
tienen en la tabla. Para asignar el alias a un campo se utiliza la cláusula AS (como)
Una consulta, sin alias es:
Select Medldentificacion, MedNombres, MedApellidos
From TblMedicos

Vamos ahora a configurar la salida por pantalla a los datos incluidos en la tabla medicos, La
salida debe ser, la columna Medldentificacion con título Identificacion; la columna
MedNombres, con título Nombre y la columna MedApellidos con título Apellidos, la sintaxis
sería la siguiente:
Select MedIdentificacion as Identificacion,
MedNombres as Nombre,
MedApellidos as Apellidos
From Tblmedicos

6.4.2. La cláusula WHERE


Esta cláusula es muy importante porque se utiliza para generar resultados basados en
condiciones, ya que filtra verticalmente las filas a presentar.

La sintaxis es:
SELECT <Nombre columna> o <lista de columnas>
FROM <Nombre de la tabla>
WHERE <condición>

Cuando se van a comparar dos valores se realizan según las siguientes reglas:
 Sólo se pueden comparar dos valores cuando son del mismo tipo.
 Todos los datos de tipo numérico pueden ser comparados unos con otros (por ejemplo,
un decimal con un entero)
 Se pueden comparar dos valores alfanuméricos, tomando como referencia el código de
cada uno de los caracteres que conforman la cadena.
 La selección de filas se especifica en la cláusula WHERE mediante predicados. Un
predicado expresa una condición y su resultado puede ser verdadero, falso o
desconocido.

6.4.2.1. Predicados Simples.


• Operadores de Comparación: predicados simples que expresan condiciones de
comparación entre valores. Se especifican con los signos que se detallan en la
siguiente tabla:
• Comparación de caracteres: Se utiliza el predicado LIKE. Cuando se requiere
precisar buscar campos que contengan combinaciones de caracteres que cumplan
ciertas condiciones. Para ello se utiliza el predicado LIKE, según el siguiente formato:
<Nombre columna> [NOT] LiKE <constante_alfanumerica>

Donde <Nombre columna> debe ser de tipo alfanumérico.


La constante alfanumérica puede ser caracteres normales, caracteres con significado
espacial, caracteres comodines o wildcards. La siguiente tabla presenta los posibles
comodines a utilizar:

Ejemplos
• Las ciudades que empiecen por S
SELECT ... FROM...
WHERE ciudad LIKE ‘S%’

• Las referencias que no tengan un 4


SELECT ... FROM...
WHERE ciudad LIKE ‘%[4-6]%'

• Las referencias que no tengan un 4, 5 o 6


SELECT ... FROM...
WHERE referencia LIKE ‘%[^4]%’

• Detección de valores nulos: En ocasiones es necesario discriminar las filas en


función de si en una de sus celdas existe un valor o no, esto es si dicha celda contiene
un valor nulo.
<Nombre columna> IS [NOT] NULL

Ejemplo
• Listar los clientes a los que no se le haya registrado dirección
SELECT * FROM TbiClientes
WHERE direccion IS NULL

• Predicado BETWEEN: Sirve para determinar si un valor está comprendido o no


entre otros dos valores, ambos inclusive.
<Nombre columna> [NOT] BETWEEN <exprl> AND <expr2>

Ejemplo
• Los pacientes de estrato 1 al 3
SELECT * FROM Tb1Pacientes
WHERE estrato BETWEEN 1 AND 3
• Predicado IN: Sirve para averiguar si el resultado de una expresión está incluido en
la lista de valores especificados.
<Nombre_columna> [NOT] IN ( Constantel, constante2, ....)
<Nombre_columna> [NOT] IN ( Subconsulta )

Ejemplo
• Los clientes de Bogotá, Tunja, Villavicencio e Ibague.
SELECT * FROM TblClientes
WHERE ciudad IN ( 'Bogota', `Tunja', 'Villavicencio', `Ibague')

6.4.2.2. Predicados compuestos


Son combinaciones de otros predicados, con los operadores lógicos And, OR y NOT.

Ejemplo:
• Los clientes de Tunja, que NO tengan registrada alguna dirección.
SELECT * FROM Tb1Clientes
WHERE ciudad = 'Bogota' AND dirección IS NULL,

6.4.3. Clausula ORDER BY


Esta cláusula básicamente se utiliza para ordenar las filas, este ordenamiento puede ser de
manera ascendente (cláusula ASC) o descendente (Cláusula DESC). Por defecto el
ordenamiento es ascendente, es decir de menor a mayor.

La sintaxis,
SELECT <Nombre_columna> o <lista de columnas>
FROM <Nombre de la_tabla>
WHERE <condición;
ORDER BY <Nombre columna> o <Número de columnas>

Algunos ejemplos de esta cláusula pueden ser:


1. Visualizar los nombres de los pacientes ordenados alfabéticamente
SELECT PacNombres, PacApellidos
FROM Tblpacientes
ORDER by PacNombres;
2. Visualizar los nombres y apellidos de los pacientes ordenados por apellido
alfabéticamente
SELECT PacNombres, PacApellidos
FROM Tblpacientes
ORDER BY PacApellidos;

3. Visualizar todos los datos de los pacientes, el reporte debe ordenarse de mayor a menor
por documento de identidad:
SELECT *
FROM pacientes
ORDER BY PacIdentificacion asc