Categorías: Manual SQL

Manual SQL (PARTE 3)

<

div id=»msgcns!A4B10A3AE5D6FA04!4613″ class=»bvMsg»>

<

div>  

10. Consultas de Unión Externas

Se utiliza la operación UNION para crear una consulta de unión, combinando los resultados de dos o más consultas o tablas independientes. Su sintaxis es:
[TABLE] consulta1 UNION [ALL] [TABLE]
consulta2 [UNION [ALL] [TABLE] consultan [ … ]]

En donde:
consulta1, consulta2, consultan
Son instrucciones SELECT, el nombre de una consulta almacenada o el nombre de una tabla almacenada precedido por la palabra clave TABLE.
Puede combinar los resultados de dos o más consultas, tablas e instrucciones SELECT, en cualquier orden, en una única operación UNION. El ejemplo siguiente combina una tabla existente llamada Nuevas Cuentas y una instrucción SELECT:
TABLE [Nuevas Cuentas] UNION ALL SELECT * FROM Clientes
WHERE [Cantidad pedidos] > 1000;
Si no se indica lo contrario, no se devuelven registros duplicados cuando se utiliza la operación UNION, no obstante puede incluir el predicado ALL para asegurar que se devuelven todos los registros. Esto hace que la consulta se ejecute más rápidamente. Todas las consultas en una operación UNION deben pedir el mismo número de campos, no obstante los campos no tienen porqué tener el mismo tamaño o el mismo tipo de datos.
Se puede utilizar una cláusula GROUP BY y/o HAVING en cada argumento consulta para agrupar los datos devueltos. Puede utilizar una cláusula ORDER BY al final del último argumento consulta para visualizar los datos devueltos en un orden específico.
SELECT [Nombre de compañía], Ciudad FROM Proveedores WHERE
País = ‘Brasil’ UNION SELECT [Nombre de compañía], Ciudad FROM Clientes
WHERE País = «Brasil»
Recupera los nombres y las ciudades de todos proveedores y clientes de Brasil
SELECT [Nombre de compañía], Ciudad FROM Proveedores WHERE País = ‘Brasil’
UNION SELECT [Nombre de compañía], Ciudad FROM Clientes WHERE País =
‘Brasil’ ORDER BY Ciudad
Recupera los nombres y las ciudades de todos proveedores y clientes radicados en Brasil, ordenados por el nombre de la ciudad
SELECT [Nombre de compañía], Ciudad FROM Proveedores WHERE País = ‘Brasil’
UNION SELECT [Nombre de compañía], Ciudad FROM Clientes WHERE País =
‘Brasil’ UNION SELECT [Apellidos], Ciudad FROM Empleados WHERE Región =
‘América del Sur’
Recupera los nombres y las ciudades de todos los proveedores y clientes de brasil y los apellidos y las ciudades de todos los empleados de América del Sur
TABLE [Lista de clientes] UNION TABLE [Lista de proveedores]
Recupera los nombres y códigos de todos los proveedores y clientes
11. Estructuras de las Tablas

Creación de Tablas Nuevas
Si se está utilizando el motor de datos de Microsoft para acceder a bases de datos access, sólo se puede emplear esta instrucción para crear bases de datos propias de access. Su sintaxis es:
CREATE TABLE tabla (campo1 tipo (tamaño) índice1 ,
campo2 tipo (tamaño) índice2 , …,
índice multicampo , … )
En donde:

Parte

Descripción

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

Ver Tipos de Datos)

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 indice a crear. Esta cláusula en opcional.

índice multicampos

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

CREATE TABLE Empleados (Nombre TEXT (25) , Apellidos TEXT (50));
Crea una nueva tabla llamada Empleados con dos campos, uno llamado Nombre de tipo texto y longutid 25 y otro llamado apellidos con longitud 50.
CREATE TABLE Empleados (Nombre TEXT (10), Apellidos TEXT,
Fecha_Nacimiento DATETIME) CONSTRAINT IndiceGeneral UNIQUE
([Nombre], [Apellidos], [Fecha_Nacimiento]);
Crea una nueva tabla llamada Empleados con un campo Nombre de tipo texto y longitud 10, otro con llamado Apellidos de tipo texto y longitud predeterminada (50) y uno más llamado Fecha_Nacimiento de tipo Fecha/Hora. También crea un índice único (no permite valores repetidos) formado por los tres campos.
CREATE TABLE Empleados (ID INTEGER CONSTRAINT IndicePrimario PRIMARY,
Nombre TEXT, Apellidos TEXT, Fecha_Nacimiento DATETIME);
Crea una tabla llamada Empleados con un campo Texto de longitud predeterminada (50) llamado Nombre y otro igual llamado Apellidos, crea otro campo llamado Fecha_Nacimiento de tipo Fecha/Hora y el campo ID de tipo entero el que establece como clave principal.

11.2 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. Si se utiliza el motor de datos de Microsoft, sólo podrá utilizar esta cláusula con las bases de datos propias de dicho motor.
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 [, …]])]}

Parte

Descripción

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 esta utilizando las instrucciones ALTER TABLE o CREATE TABLE la cláusula CONTRAINT debe aparecer inmediatamente después de la especificación del campo indexeado.
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.

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 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 fueran los campos referenciados .

Creación de Índices
Si se utiliza el motor de datos Jet de Microsoft sólo se pueden crear índices en bases de datos del mismo motor. La sintaxis para crear un índice en ua 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:

Parte

Descripción

índice

Es el nombre del índice a crear.

tabla

Es el nombre de una tabla existentes en la que se creará el índice.

campo

Es el nombre del campo o lista de campos que consituyen el índice.

ASC|DESC

Indica el orden de los valores de lso campos ASC indica un orden ascendente (valor predeterminado) y DESC un orden descendente.

UNIQUE

Indica que el indice no puede contener valores duplicados.

DISALLOW NULL

Prohibe valores nulos en el índice

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 indice que sea «Clave Principal». Si un índice es clave principal implica que que no puede contener valores nulos ni duplicados.

Se puede utilizar CREATE INDEX para crear un pseudo índice sobre una tabla adjunta en una fuente de datos ODBC tal como SQL Server que no tenga todavía un índice. No necesita permiso o tener acceso a un servidor remoto para crear un pseudo índice, además la base de datos remota no es consciente y no es afectada por el pseudo índice. Se utiliza la misma sintaxis para las tabla adjunta que para las originales. Esto es especialmente útil para crear un índice en una tabla que sería de sólo lectura debido a la falta de un índice.
CREATE INDEX MiIndice ON Empleados (Prefijo, Telefono);
Crea un índice llamado MiIndice en la tabla empleados con los campos Prefijo y Telefono.
CREATE UNIQUE INDEX MiIndice ON Empleados (ID) WITH DISALLOW NULL;
Crea un índice en la tabla Empleados utilizando el campo ID, obligando que que el campo ID no contenga valores nulos ni repetidos.
Modificar el Diseño de una Tabla
Modifica el diseño de una tabla ya existente, se puden 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:

Parte

Descripción

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.

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

ALTER TABLE Empleados ADD COLUMN Salario CURRENCY;
Agrega un campo Salario de tipo Moneda a la tabla Empleados.
ALTER TABLE Empleados DROP COLUMN Salario;
Elimina el campo Salario de la tabla Empleados.
ALTER TABLE Pedidos ADD CONSTRAINT RelacionPedidos FOREIGN KEY
(ID_Empleado) REFERENCES Empleados (ID_Empleado);
Agrega un indice externo a la tabla Pedidos. El índice externo se basa en el campo ID_Empleado y se refiere al campo ID_Empleado de la tabla Empleados. En este ejemplo no es necesario indicar el campo junto al nombre de la tabla en la
cláusula REFERENCES, pues ID_Empleado es la clave principal de la tabla Empleados.
ALTER TABLE Pedidos DROP CONSTRAINT RelacionPedidos;
Elimina el índide de la tabla Pedidos.
12. Consultas con Parámetros

Las consultas con parámetros son aquellas cuyas condiciones de búsqueda se definen mediante parámetros. Si se ejecutan directamente desde la base de datos donde han sido definidas aparecerá un mensaje solicitando el valor de cada uno de los parámetros. Si deseamos ejecutarlas desde una aplicación hay que asignar primero el valor de los parámetros y después ejecutarlas. Su sintaxis es la siguiente:
PARAMETERS nombre1 tipo1, nombre2 tipo2, … , nombreN tipoN Consulta
En donde:

 

Parte

Descripción

nombre

Es el nombre del parámetro

tipo

Es el

tipo de datos del parámetro

consulta

Una consulta SQL

Puede utilizar nombre pero no tipo de datos en una cláusula WHERE o HAVING.
PARAMETERS Precio_Minimo Currency, Fecha_Inicio DateTime;
SELECT IDPedido, Cantidad FROM Pedidos WHERE Precio > Precio_Minimo
AND FechaPedido >= Fecha_Inicio;
El ejemplo siguiente muestra como utilizar los parámetros en el programa de Visual Basic:
Public Sub GeneraConsulta()
Dim SQL As String
Dim Qd As QueryDef
Dim Rs As Recordset
SQL = «PARAMETERS Precio_Minimo Currency,  Fecha_Inicio DateTime; »
SQL = SQL & «SELECT IDPedido, Cantidad FROM Pedidos WHERE Precio > »
SQL = SQL & «Precio_Minimo AND FechaPedido >= Fecha_Inicio; »
Set Qd = BaseDatos.CreateQueryDef(MiConsulta, SQL)

Qd.Parameters!Precio_Minimo = 2
Qd.Parameters!FechaInicio = #31/12/95#
Set Rs = Qd.OpenRecordset()
End Sub

Ejemplo:
PARAMETERS [Escriba los Apellidos:] Text; SELECT * FROM Empleados
WHERE [Escriba los Apellidos:] = [Apellidos];
La ejecución desde la base de datos solicita al usuario los apellidos del empleado y después muestra los resultados.
13. Bases de Datos Externas

Para el acceso a bases de datos externas se utiliza la cláusula IN. Se puede acceder a base de datos dBase, Paradox o Btrieve. Esta cláusula sólo permite la conexión de una base de datos externa a la vez. Una base de datos externa es una base de datos que no sea la activa. Aunque para mejorar los rendimientos es mejor adjuntarlas a la base de datos actual y trabajar con ellas.
Para especificar una base de datos que no pertenece a Access Basic, se agrega un punto y coma (;) al nombre y se encierra entre comillas simples. También puede utilizar la palabra reservada DATABASE para especificar la base de datos externa. Por ejemplo, las líneas siguientes especifican la misma tabla:
FROM Tabla IN  ‘[dBASE IV; DATABASE=C:DBASEDATOSVENTAS;]’;
FROM Tabla IN ‘C:DBASEDATOSVENTAS’ ‘dBASE IV;’
Acceso a una base de datos externa de Microsoft Access:
SELECT IDCliente FROM Clientes IN MISDATOS.MDB WHERE IDCliente Like ‘A‘;
En donde MISDATOS.MDB es el nombre de una base de datos de Microsoft Access que contiene la tabla Clientes.
Acceso a una base de datos externa de dBASE III o IV:
SELECT IDCliente FROM Clientes IN ‘C:DBASEDATOSVENTAS’ ‘dBASE IV’;
WHERE IDCliente Like ‘A
‘;
Para recuperar datos de una tabla de dBASE III+ hay que utilizar ‘dBASE III+;’ en lugar de ‘dBASE IV;’.
Acceso a una base de datos de Paradox 3.x o 4.x:
SELECT IDCliente FROM Clientes IN ‘C:PARADOXDATOSVENTAS’
‘Paradox 4.x;’ WHERE IDCliente Like ‘A‘;
Para recuperar datos de una tabla de Paradox versión 3.x, hay que sustituir ‘Paradox 4.x;’ por ‘Paradox 3.x;’.
Acceso a una base de datos de Btrieve:
SELECT IDCliente FROM Clientes IN ‘C:BTRIEVEDATOSVENTASFILE.DDF’
‘Btrieve;’ WHERE IDCliente Like ‘A
‘;
C:BTRIEVEDATOSVENTASFILE.DDF es la ruta de acceso y nombre de archivo del archivo de definición de datos de Btrieve.

Facebook: https://www.facebook.com/EIMafias/

Twitter:@ElMafiasdelTuit

Instagram: https://www.instagram.com/paramissuperioresoficial/

Twitch: https://www.twitch.tv/eimafias/

ElMafias

Compartir
Publicado por
ElMafias
Etiquetas: Manual SQL

Entradas recientes

Cómo usar un Ipad Mini como monitor pc

Cómo usar un Ipad Mini como monitor pc

En este tutorial vamos hacer que un ipad mini haga de segundo monitor. Para que…

1 semana hace
Activar cuenta Super Administrador en Windows 10

Activar cuenta Super Administrador en Windows 10

Cuando tenemos algún problema en Windows y lo intentas solucionar desde el usuario de administrador …

2 semanas hace
Aprende a programar con LOGO en el emulador Applewin

Aprende a programar con LOGO en el emulador Applewin

Allá por el año 1988 en el colegio teníamos una asignatura que era informática y…

2 meses hace
Cómo añadir Roms a Recalbox Raspberry pi 4.

Cómo añadir Roms a Recalbox Raspberry pi 4.

Ayer os explicaba como instalar Recalbox en nuestra Raspberry pi 4.  Hoy vamos añadir roms a través…

2 meses hace
Instalar Recalbox en una tarjeta microSD de 128 GB para Raspberry Pi 4

Instalar Recalbox en una tarjeta microSD de 128 GB para Raspberry Pi 4

Hace unos años explicamos como crear una consola retro en una Raspberry pi 3. En…

2 meses hace
Cómo cambiar el nombre de Nueva Carpeta predeterminada desde regedit

Cómo cambiar el nombre de Nueva Carpeta predeterminada desde regedit

Cuando creamos una carpeta nueva en Windows 10, la carpeta recibe el nombre de “Nueva…

2 meses hace