Este documento presenta una introducción a SQL, incluyendo una breve historia, las principales características y estructuras del lenguaje como comandos, cláusulas, funciones y tipos de datos. También explica cómo crear y gestionar tablas en SQL mediante comandos como CREATE, ALTER, DROP, así como índices y restricciones.
Esta presentación nos muestra los conceptos Fundamentales para el Diseño y Creación de Base de Datos Relacionales, se Centra en el Modelo de Datos Relacional, ya que es el mas usado a nivel mundial.
Esta presentación nos muestra los conceptos Fundamentales para el Diseño y Creación de Base de Datos Relacionales, se Centra en el Modelo de Datos Relacional, ya que es el mas usado a nivel mundial.
Docker para Dummies. Presentación sobre virtualización en Cloud Computing. Definición de Docker y otros componentes o proyectos relacionados (Kubernetes y Openshift).
Para llevar a cabo un proyecto de tecnologías de la información basado
en la utilización de herramientas de uso habitual en Internet
(como por ejemplo la World Wide Web), en entornos de software libre,
como en cualquier otro tipo de proyecto, es necesario seguir un
proceso que nos lleve desde la comprensión del alcance del problema
que queremos solventar hasta la implantación y mantenimiento
de la solución que hayamos elegido.
En este curso se pretenden repasar aquellas fases que es necesario
seguir a lo largo de todo proyecto, tomando como referencia uno
que basará su funcionamiento en la utilización de la web como herramienta
principal.
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Micael Gallego
Esta presentación corresponde al "Tema 2: Tecnologías de desarrollo web" de la asignatura "Desarrollo de Aplicaciones Web" de 3º del Grado en Ingeniería del Software de la ETSII en la Universidad Rey Juan Carlos.
Docker para Dummies. Presentación sobre virtualización en Cloud Computing. Definición de Docker y otros componentes o proyectos relacionados (Kubernetes y Openshift).
Para llevar a cabo un proyecto de tecnologías de la información basado
en la utilización de herramientas de uso habitual en Internet
(como por ejemplo la World Wide Web), en entornos de software libre,
como en cualquier otro tipo de proyecto, es necesario seguir un
proceso que nos lleve desde la comprensión del alcance del problema
que queremos solventar hasta la implantación y mantenimiento
de la solución que hayamos elegido.
En este curso se pretenden repasar aquellas fases que es necesario
seguir a lo largo de todo proyecto, tomando como referencia uno
que basará su funcionamiento en la utilización de la web como herramienta
principal.
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Micael Gallego
Esta presentación corresponde al "Tema 2: Tecnologías de desarrollo web" de la asignatura "Desarrollo de Aplicaciones Web" de 3º del Grado en Ingeniería del Software de la ETSII en la Universidad Rey Juan Carlos.
Es un lenguaje orientado únicamente a la definición y al acceso a los datos por lo que no se puede considerar como lenguaje de programación como tal ya que no incluye funcionalidades como son estructuras condicionales, bucles, formateo de salida, etc.
SQL (Structured Query Language): Informe de Lectura Unidad 3
1. Tema:
Bases de Datos
Unidad 3: SQL (Structured Query Language)
Asignatura:
Base de Datos – INF-4200-1
Participante:
Juan Miguel Custodio Morillo
100480765
Docente:
Edward Ureña Mejía
Fecha:07/03/2021
2. Índice
Introducción
1. Breve historia de SQL
1.2.¿Qué podemos hacer con SQL?
1.3.Principales Características de SQL
2. Estructuras de SQL
2.1.Comandos de definición de datos
2.2.Comandos de manipulación de datos
2.3.Comandos de control y seguridad de datos
2.4.Clausulas
2.5.Funciones de agregados
2.6.Tipos de Datos
3. Gestión de tablas en SQL
3.1.Creación de tablas a partir de sentencias SQL
3.2.Creación de Tablas Nuevas
3.3.La cláusula CONSTRAINT
3.4.Creación de Índices
3.5.Modificar el diseño de una tabla
3.6.Sintaxis y ejemplos para introducir registros en una tabla
3.7.Borrado de registros en una tabla
3.8.UPDATE del lenguaje SQL y edición de registros en una tabla.
3.9.Consultas de Selección (SELECT)
Consultas con Predicado
3.10. Criterios de selección
3.11. Cómo realizar selecciones eficientemente
3.12. Consultas mediante JOIN
3.13. Vistas (tablas virtuales) en SQL
Nota sobre la utilización de valores nulos
conclusión
Bibliografías
3. Introducción
En este trabajo, tiene como objetivo principal reunir los conceptos claves e introductorios para
crear y manipular bases de datos con la estructura del lenguaje SQL.
Definición: El término SQL significa, «Structured Query Language» (lenguaje de consulta
estructurada), debido a que fue concebido para consultar o recuperar los datos de bases de datos
estructuradas o relacionales, así como administrar los diferentes sistemas de gestión de bases de
datos.
1. Breve historia de SQL
En 1970, Edgar Frank Codd propone el modelo relacional y asociado a este un sublenguaje de
acceso a los datos basado en el cálculo de predicados. Basándose en estas ideas, los laboratorios
de IBM definieron el lenguaje SEQUEL (Structured English Query Language) que más tarde fue
ampliamente implementado por el sistema de gestión de bases de datos (SGBD)
experimental System R, desarrollado en 1977 también por IBM. Sin embargo, fue Oracle quien
lo introdujo por primera vez en 1979 en un producto comercial.
El SEQUEL terminó siendo el predecesor de SQL, que es una versión evolucionada del primero.
SQL pasa a ser el lenguaje por excelencia de los diversos sistemas de gestión de bases de
datos relacionales surgidos en los años siguientes y fue por fin estandarizado en 1986 por
el ANSI, dando lugar a la primera versión estándar de este lenguaje, "SQL-86" o "SQL1". Al año
siguiente este estándar es también adoptado por ISO.
Sin embargo, este primer estándar no cubría todas las necesidades de los desarrolladores e
incluía funcionalidades de definición de almacenamiento que se consideró suprimirlas. Así que,
en 1992, se lanzó un nuevo estándar ampliado y revisado de SQL llamado "SQL-92" o "SQL2".
1.2. ¿Qué podemos hacer conSQL?
Todos los principales gestores de base de datos incorporan un motor SQL en el Servidor de Base
Datos, así como herramientas de cliente que permiten enviar comandos SQL para que sean
procesadas por el motor del servidor. De esta forma, todas las tareas de gestión de la Base de
Datos (BD) pueden realizarse utilizando sentencias SQL:
Ejecutar sentencias o queries en una base de datos.
Recuperar datos de una base de datos.
Insertar registros en una base de datos.
Actualizar los registros de una base de datos.
Eliminar los registros de una base de datos.
Crear nuevas bases de datos.
4. Crear nuevas tablas en una base de datos.
Crear procedimientos almacenados o stored procedures en una base de datos.
Crear vistas o views en una base de datos.
Establecer permisos en tablas, procedimientos y vistas.
1.3. Principales Característicasde SQL
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" o "de no procedimiento" que, gracias a su fuerte base
teórica y su orientación al manejo de conjuntos de registros —y no a registros individuales—
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. SQL también tiene las siguientes características:
Lenguaje de definición de datos: El LDD de SQL proporciona comandos para la
definición de esquemas de relación, borrado de relaciones y modificaciones de los
esquemas de relación.
Lenguaje interactivo de manipulación de datos: El LMD de SQL incluye lenguajes de
consultas basado tanto en álgebra relacional como en cálculo relacional de tuplas.
Integridad: El LDD de SQL incluye comandos para especificar las restricciones de
integridad que deben cumplir los datos almacenados en la base de datos.
Definición de vistas: El LDD incluye comandos para definir las vistas.
Control de transacciones: SQL tiene comandos para especificar el comienzo y el final de
una transacción.
SQL incorporado y dinámico: Esto quiere decir que se pueden incorporar instrucciones
de SQL en lenguajes de
programación como: C++, C, Java, PHP, COBOL, Pascal y Fortran.
Autorización: El LDD incluye comandos para especificar los derechos de acceso a las
relaciones y a las vistas.
El estándar SQL permite el intercambio entre diferentes manejadores o DBMS.
2. Estructuras de 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. Los comandos del SQL pueden dividirse en tres grupos:
5. 2.1. Comandos de definición de datos DDL = Data Definition Language), que permiten
crear y definir nuevas bases de datos, campos, etc. Donde tenemos:
CREATE: Encargado de crear nuevas tablas, campos, …
DROP: Encargado de eliminar tablas
ALTER: Encargado de modificar las tablas, agregando campos o cambiando la
definición de los campos
2.2.Comandos de manipulación de datos (DML = Data Manipulation Language), que
permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. Donde
encontramos:
SELECT: Encargado de consultar registros de la base de datos que satisfagan un
criterio determinado
INSERT: Encargado de cargar lotes de datos en la base de datos en una única
operación
UPDATE: Encargado de modificar los valores de los campos y registros
especificados
DELETE: Encargado de eliminar registros de una tabla
TRUNCATE: Este comando 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,
ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia
parecería ser DML (Lenguaje de Manipulación de Datos), es en realidad una DDL, ya
que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no
ejecuta ninguna transacción.
2.3.Comandos de control y seguridadde datos, que gobiernan los privilegios de los
usuarios, los controles de acceso, …
2.4.Clausulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea
seleccionar o manipular.
FROM: Sirve para especificar la tabla de la cual se van a seleccionar los registros.
WHERE: Sirve para especificar las condiciones que deben reunir los registros que se van
a seleccionar.
6. GROUP BY: Sirve para especificar un criterio adicional por el que agrupar los registros
seleccionados.
HAVING: Sirve para expresar la condición que debe satisfacer cada grupo anterior.
ORDER BY: Sirve para ordenar los registros seleccionados de acuerdo con el orden
especificado.
2.5.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, por lo general encontramos:
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
2.6.Tipos de Datos
La mayoría de los productos incluyen tipos de datos extendidos e incluso algunos productos
ofrecen la posibilidad de que el usuario defina sus propios tipos. Los tipos más utilizados:
CHAR: (longitud) se utiliza para guardar cadenas de caracteres de longitud fija
especificada entre paréntesis.
VARCHAR: (longitud) almacenas cadenas de caracteres de longitud variable cuyo límite
máximo es especifica como longitud.
NUMBER: (escala, precisión) se utiliza para guardar datos numéricos.
INT: Es el principal tipo de datos de valores enteros de SQL, con números enteros con o
sin signo.
DATE: Utilizado para almacenar fechas.
TIME: La hora del día en horas minutos segundos (el valor predeterminado es 0).
3. Gestiónde tablas en SQL
3.1. Creaciónde tablas a partir de sentencias SQL
Para crear una tabla debemos especificar diversos datos: El nombre que le queremos asignar, los
nombres de los campos y sus características. Además, puede ser necesario especificar cuáles de
estos campos van a ser índices y de qué tipo van a serlo.
7. La sintaxis de creación puede variar ligeramente de una base de datos a otra ya que los tipos de
campo aceptados no están completamente estandarizados.
A continuación, explicamos superficialmente la sintaxis de esta sentencia:
Sintaxis
Create Table nombre tabla
(
nombre_campo_1 tipo_1,
nombre_campo_2 tipo_2,
nombre_campo_n tipo_n
Key(campo_x,...)
);
Finalmente, definimos los índices enumerándolos entre paréntesis precedidos de la palabra KEY
o INDEX.
3.2. Creaciónde Tablas Nuevas
CREATE TABLE tabla (
campo1 tipo (tamaño) índice1,
campo2 tipo (tamaño) índice2,... ,
índice multicampo , ... );
En donde:
Tabla Es el nombre de la tabla que se va a crear.
campo1
campo2
Es el nombre del campo o de los campos que se van a crear en la nueva tabla.
La nueva tabla debe contener, al menos, un campo.
Tipo Es el tipo de datos de campo en la nueva tabla.
Tamaño Es el tamaño del campo sólo se aplica para campos de tipo texto.
índice1
índice2
Es una cláusula CONSTRAINT que define el tipo de índice a crear. Esta
cláusula en opcional.
índice
multicampos
Es una cláusula CONSTRAINT que define el tipo de índice multicampos a
crear. Un índice multicampo es aquel que está indexado por el contenido de
varios campos. Esta cláusula en opcional.
8. 3.3. 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
o Eliminar un índice de un único campo o si se trata de un campo multiíndice. Para los índices de
campos únicos:
CONSTRAINT nombre {PRIMARY KEY | UNIQUE | REFERENCES tabla externa
[(campo externo1, campo externo2)]}
Para los índices de campos múltiples:
CONSTRAINT nombre {PRIMARY KEY (primario1[, primario2 [,...]]) |
UNIQUE (único1[, único2 [, ...]]) |
FOREIGN KEY (ref1[, ref2 [,...]]) REFERENCES tabla externa
[(campo externo1 ,campo externo2 [,...])]}
En donde:
Nombre Es el nombre del índice que se va a crear.
PrimarioN Es el nombre del campo o de los campos que forman el índice primario.
ÚnicoN Es el nombre del campo o de los campos que forman el índice de clave única.
RefN
Es el nombre del campo o de los campos que forman el índice externo (hacen
referencia a campos de otra tabla).
tabla externa
Es el nombre de la tabla que contiene el campo o los campos referenciados en
refN
campos
externos
Es el nombre del campo o de los campos de la tabla externa especificados por
ref1, ref2,... , refN
Si se desea crear un índice para un campo cuando se está utilizando las instrucciones ALTER
TABLE o CREATE TABLE la cláusula CONTRAINT debe aparecer inmediatamente después
de la especificación del campo indexado.
Si se desea crear un índice con múltiples campos cuando se está utilizando las instrucciones
ALTER TABLE o CREATE TABLE la cláusula CONSTRAINT debe aparecer fuera de la
cláusula de creación de tabla.
Índice Descripción
9. UNIQUE
Genera un índice 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 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 campos contenidos en otras
tablas). Si la clave principal de la tabla externa consta de más de un campo, se
debe utilizar una definición de índice de múltiples campos, listando todos los
campos de referencia, el nombre de la tabla externa, y los nombres de los campos
referenciados en la tabla externa en el mismo orden que los campos de referencia
listados. Si los campos referenciados son la clave principal de la tabla externa, no
tiene que especificar los campos referenciados, predeterminado por valor, el
motor Jet se comporta como si la clave principal de la tabla externa estuviera
formada por los campos referenciados.
3.4. Creaciónde Índices
La sintaxis para crear un índice en una tabla ya definida en la siguiente:
CREATE [ UNIQUE] INDEX índice
ON Tabla (campo [ASC|DESC][, campo [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
En donde:
Índice Es el nombre del índice a crear.
Tabla Es el nombre de una tabla existente en la que se creará el índice.
Campo Es el nombre del campo o lista de campos que constituyen el índice.
ASC|DESC
Indica el orden de los valores de los campos ASC indica un orden ascendente
(valor predeterminado) y DESC un orden descendente.
UNIQUE Indica que el índice no puede contener valores duplicados.
DISALLOW
NULL
Prohibe valores nulos en el índice
10. IGNORE
NULL
Excluye del índice los valores nulos incluidos en los campos que lo componen.
PRIMARY
Asigna al índice la categoría de clave principal, en cada tabla sólo puede existir
un único índice que sea "Clave Principal". Si un índice es clave principal
implica que no puede contener valores nulos ni duplicados.
3.5. 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 Es 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.
Operación Descripción
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 utiliza para agregar un índice de multicampos o de un único campo.
11. DROP
COLUMN
Se utiliza 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.
3.6. Sintaxis y ejemplos para introducir registros enuna tabla
Los registros pueden ser introducidos a partir de sentencias que emplean la instrucción Insert. La
sintaxis utilizada es la siguiente:
Insert Into nombre_tabla (nombre_campo1, nombre_campo2,...) Values (valor_campo1,
valor_campo2...)
Un ejemplo sencillo a partir de nuestra tabla modelo es la introducción de un nuevo cliente lo
cual se haría con una instrucción de este tipo:
Insert Into clientes (nombre, apellidos, dirección, población, codigopostal, email, pedidos)
Values ('Perico', 'Palotes', 'Percebe n°13', 'Lepe', '123456', 'perico@desarrolloweb.com', 33)
Como puede verse, los campos no numéricos o booleanos van delimitados por apostrofes: '.
También resulta interesante ver que el código postal lo hemos guardado como un campo no
numérico.
Por supuesto, no es imprescindible rellenar todos los campos del registro. Eso sí, puede ser que
determinados campos sean necesarios. Estos campos necesarios pueden ser definidos cuando
construimos nuestra tabla mediante la base de datos.
3.7. Borrado de registros en una tabla
Para borrar un registro nos servimos de la instrucción Delete. En este caso debemos especificar
cual o cuales son los registros que queremos borrar. Es por ello necesario establecer una
selección que se llevara a cabo mediante la cláusula Where.
Delete From nombre_tabla Where condiciones_de_selección
Si queremos por ejemplo borrar todos los registros de los clientes que se llamen Perico lo
haríamos del siguiente modo:
Delete From clientes Where nombre='Perico';
Hay que tener cuidado con esta instrucción ya que, si no especificamos una condición con
Where, lo que estamos haciendo es borrar toda la tabla:
Delete From clientes
12. 3.8. UPDATE del lenguaje SQL y edición de registros en una tabla.
Update es la instrucción del lenguaje SQL que nos sirve para modificar los registros de una tabla.
Como para el caso de Delete, necesitamos especificar por medio de Where cuáles son los
registros en los que queremos hacer efectivas nuestras modificaciones. Además, obviamente,
tendremos que especificar cuáles son los nuevos valores de los campos que deseamos actualizar.
La sintaxis es de este tipo:
Update nombre_tabla Set nombre_campo1 = valor_campo1, nombre_campo2 = valor_campo2,...
Where condiciones_de_selección
Un ejemplo aplicado:
Update clientes Set nombre='José' Where nombre='Pepe';
Mediante esta sentencia cambiamos el nombre Pepe por el de José en todos los registros cuyo
nombre sea Pepe.
Aquí también hay que ser cuidadoso de no olvidarse de usar Where, de lo contrario,
modificaríamos todos los registros de nuestra tabla.
3.9. Consultas de Selección(SELECT)
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 una nueva tabla.
Consultas de selecciónbásicas
La sintaxis más sencilla de una consulta de selección es la siguiente:
SELECT Campos FROM Tabla;
Donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos.
Consultas con Predicado (ALL, TOP, DISTINCT) :En cuanto al conjunto de registros
seleccionados, estos modificadores, que se incluyen entre SELECT y el primer nombre del
campo a recuperar, provocan las siguientes acciones:
ALL: Devuelve todos los campos de la tabla (valor por defecto).
TOP: Devuelve un determinado número de registros de la tabla.
DISTINCT: Omite repeticiones de registros cuyos campos seleccionados coincidan totalmente.
DISTINCTROW: Omite repeticiones de registros basándose en la totalidad del registro y no sólo
en los campos seleccionados.
13. ALIAS
Un alias, es otra forma de llamar a una tabla o a una columna, y se utiliza para simplificar las sentencias
SQL cuando los nombres de tablas o columnas son largos o complicados. Por ejemplo:
SELECT
Apellido AS Empleado
FROM
Empleados AS Trabajadores
3.10. Criterios de selección
Operadores Lógicos
Los operadores lógicos soportados por SQL son: AND, OR, XOR, Eqv, Imp, Is y Not.
Operador BETWEEN
Para indicar que deseamos recuperar los registros según el intervalo de valores de un
campo emplearemos el operador BETWEEN.
El Operador LIKE
Se utiliza para comparar una expresión de cadena con un modelo en una expresión SQL.
Se puede utilizar el operador LIKE para encontrar valores en los campos que coincidan
con el modelo especificado.
El Operador IN
Este operador devuelve los registros cuyo campo indicado coincide con alguno de los
dados en una lista.
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. WHERE es
opcional, pero cuando aparece debe ir a continuación de FROM.
3.11. Cómo realizar seleccioneseficientemente
La selección total o parcial de una tabla se lleva a cabo mediante la instrucción Select. En dicha
selección hay que especificar:
14. -Los campos que queremos seleccionar
-La tabla en la que hacemos la selección
En nuestra tabla modelo de clientes podríamos hacer por ejemplo una selección del nombre y
dirección de los clientes con una instrucción de este tipo:
Select nombre, dirección From clientes
Si quisiésemos seleccionar todos los campos, es decir, toda la tabla, podríamos utilizar el
comodín * del siguiente modo:
Select * From clientes
Resulta también muy útil el filtrar los registros mediante condiciones que vienen expresadas
después de la cláusula Where. Si quisiésemos mostrar los clientes de una determinada ciudad
usaríamos una expresión como esta:
Select * From clientes Where poblacion Like 'Madrid'
Además, podríamos ordenar los resultados en función de uno o varios de sus campos. Para este
último ejemplo los podríamos ordenar por nombre así:
Select * From clientes Where poblacion Like 'Madrid' Order By nombre
Teniendo en cuenta que puede haber más de un cliente con el mismo nombre, podríamos dar un
segundo criterio que podría ser el apellido:
Select * From clientes Where poblacion Like 'Madrid' Order By nombre, apellido
Si invirtiésemos el orden « nombre,apellido » por « apellido, nombre », el resultado sería
distinto. Tendríamos los clientes ordenados por apellido y aquellos que tuviesen apellidos
idénticos se subclasificarían por el nombre.
Es posible también clasificar por orden inverso. Si por ejemplo quisiésemos ver nuestros clientes
por orden de pedidos realizados teniendo a los mayores en primer lugar escribiríamos algo así:
Select * From clientes Order By pedidos Desc
Una opción interesante es la de efectuar selecciones sin coincidencia. Si por ejemplo buscásemos
el saber en qué ciudades se encuentran nuestros clientes sin necesidad de que para ello aparezca
varias veces la misma ciudad usaríamos una sentencia de esta clase:
Select Distinct población From clientes Order By población
Así evitaríamos ver repetido Madrid tantas veces como clientes tengamos en esa población.
15. 3.12. Consultas mediante JOIN
La sentencia SQL JOIN se utiliza para relacionar varias tablas. Nos permitirá obtener un
listado de los campos que tienen coincidencias en ambas tablas:
Los Principales Join:
a. Inner join – esta es la opción predeterminada. Si no se especifica el tipo de unión, se
establecerá de manera predeterminada como la unión interna. Esto implica que, si estamos
uniendo dos tablas en una columna común, solo retornaran los datos que coincidan en
ambas tablas.
Subtipos de Inner Join:
Tipos de Join Operadores de comparación permitidos
Theta Join = (igual) < (menor que) > (mayor que) ≤ (menos o igual que) ≥
(mayor o igual que) <> (desigual)! = (desigual)
Equi Join = (igual)
Non Equi Join < (menor que) > (mayor que) ≤ (menor o igual que) ≥ (mayor o igual
que) <> (desigual)! = (desigual)
Natural Join es un subtipo de Equi Join y, al igual que este, requiere la igualdad de dos
valores de columna como condición de selección. Si dos tablas están enlazadas por
columnas con el mismo nombre, los Inner Join se aplican como Natural Join.
b. Cross join – como indica su nombre, hace [n X m] donde se una todo combinado con
todo. Es un escenario donde simplemente listamos las tablas para unir (en la cláusula From
de la sentencia Select), usando comas para separarlas.
c. Left join – este tipo de unión significa que solo retornan todos los datos de la tabla de la
mano izquierda, solo si los datos coinciden con la tabla de la mano derecha.
d. Right join – este tipo de unión es el caso opuesto al anterior. Implica que solo retornaran
los datos de la tabla de la mano derecha, solo si los datos coinciden con la tabla de la mano
izquierda.
16. Además de esto, también existen tipos de combinaciones externas y cruzadas. La Outer join
tiene 3 tipos diferentes:
i. Left outer join – recupera registros si están presentes en la tabla izquierda.
ii. Right outer join – recupera registros si están presentes en la tabla derecha.
iii. Full outer join – recupera registros si están presentes en cualquiera de las dos
tablas.
3.13. Vistas (tablas virtuales) en SQL
Las vistas (“views”) en SQL son tabla que deriva de otras tablas con un mecanismo que permite
generar un resultado a partir de una consulta (query) almacenado, y ejecutar nuevas consultas
sobre este resultado como si fuera una tabla normal. Las vistas tienen la misma estructura que
una tabla: filas y columnas. La única diferencia es que sólo se almacena de ellas la definición, no
los datos. Esto limita las posibles operaciones de actualización que pueden aplicarse a las vistas,
pero no ofrecen limitación alguna al consultar una vista.
La cláusula CREATE VIEW permite la creación de vistas. La cláusula asigna un nombre a la
vista y permite especificar la consulta que la define. Su sintaxis es:
# CREATE VIEW id_vista [(columna,…)]AS especificación_consulta;
Opcionalmente se puede asignar un nombre a cada columna de la vista. Si se especifica, la lista
de nombres de las columnas debe de tener el mismo número de elementos que el número de
columnas producidas por la consulta. Si se omiten, cada columna de la vista1 adopta el nombre
de la columna correspondiente en la consulta.
Nota sobre la utilización de valores nulos
En SQL la ausencia de valor se expresa como valor nulo (NULL). Esta ausencia de valor o valor
nulo no equivale en modo alguno al valor 0. Cualquier expresión aritmética que contenga algún
valor nulo retornará un valor nulo.
En SQL un valor nulo ni siquiera es igual a otro valor nulo
La explicación es que un valor nulo es indeterminado, y, por tanto, no es igual ni distinto de otro
valor nulo.
Cuando queremos comprobar si un valor es nulo emplearemos el operador IS NULL (o IS NOT
NULL para comprobar que es distinto de nulo).
17. Como acabamos de ver los valores nulos en muchas ocasiones pueden representar un problema,
especialmente en columnas que contienen valores numéricos. Para evitar estos problemas se
suele utilizar:
La restricción NOT NULL (es una orden de definición de datos) que impide que se incluyan
valores nulos en una columna.
La función NVL (que veremos en detalle más adelante) que se utiliza para devolver un valor
determinado en el caso de que el valor del argumento sea nulo.
Por ejemplo, NVL (COMISION, 0) retornará 0 cuando el valor de comisión sea nulo. (En Access
se llama NZ)
Conclusión
A través de toda información analizada pude contactar que SQL se convirtió en un lenguaje
estándar que nos permite administrar y extraer información de bases de datos en forma sencilla,
ya que su implementación y manejo, resulta fácil y de muchas ventajas frente a otros lenguajes
de estructuras de datos. Esto significa que puedes usar los mismos comandos entre un manejador
y otro, ya que SQL es un lenguaje estándar, lo cual resulta de mucha utilidad, porque los
comandos para crear la estructura de base de datos o para manipular los datos siguen
conservando la misma forma. Por estas y características hacen de este lenguaje uno de los más
importantes usados y solicitados para analizar datos.
El SQL no presenta una estructura engorrosa, más bien atractivas y suaves para el desarrollador,
también se debe saber que, aunque exista un estándar definido por ANSI, existen
particularidades entre los diferentes DBMS en el manejo SQL.
En mi humilde opinión creo que SQL se seguirá utilizando por mucho tiempo, y puede surgen
otro mañana, pero la forma que brinda este lenguaje es única; sobre todo la forma lógica como
está estructurado.
Bibliografías:
Fundamentos de Sistemas de Bases de Datos, de Ramez Elmasri y Shamkant B. Navathe (2007) ,
5ta. Edición .
Fundamentos de SQL, Tercera edición Andy Oppel Robert Sheldon Traducción Carlos Fabián
Jiménez Castillo.
https://www.lawebdelprogramador.com/cursos/archivos/ManualPracticoSQL.pdf
https://es.wikipedia.org/wiki/SQL
https://www.cartagena99.com/recursos/alumnos/apuntes/Manual-SQL1.pdf