Sei sulla pagina 1di 6

75

Captulo 3
La manipulacin de los datos (LMD)

1. Introduccin
La manipulacin de los datos (LMD)

El lenguaje de manipulacin de datos permite a los usuarios y a los desarrolla-


dores acceder a los datos de la base, modificar su contenido, insertar o eliminar
filas.
Se basa en cuatro comandos bsicos que son SELECT, INSERT, DELETE y
UPDATE.
El administrador de la base de datos, que es el nico que puede asignar o no los
derechos, no siempre autoriza estos cuatro comandos.
Para un usuario x, se podr indicar que solo puede utilizar el comando SE-
LECT. Por razones evidentes de seguridad, no todos los usuarios tendrn acce-
so a los comandos de modificacin.

2. La seleccin de datos
El comando SELECT permite realizar consultas simples de forma rpida sin un
conocimiento profundo del lenguaje de programacin.
De todos modos, puede ser muy potente si se conocen todas las funciones y
todas las posibilidades del lenguaje. Se pueden realizar consultas complejas,
con numerosas tablas pero siempre hay que poner atencin al rendimiento
76 SQL
Los fundamentos del lenguaje

que puede disminuir rpidamente en un comando SQL mal construido o que


no utilice los ndices correctos en las tablas. Hay que vigilar y utilizar las
herramientas de anlisis de consultas (vea el captulo Para ir ms lejos - Algu-
nos conceptos de rendimiento) antes de ejecutar una consulta sobre una base
de datos real con tablas importantes.
Las tablas de base que se utilizan en los siguientes prrafos son:

Modelo de datos utilizado para ilustrar la seleccin de datos

2.1 El comando de seleccin de datos SELECT

El SELECT es el comando ms importante y el ms utilizado en SQL. Con este


comando podemos recuperar las filas de una o ms tablas y transformar los
datos para su utilizacin o incluso realizar clculos.
Vamos a describir poco a poco las posibilidades de este comando en los si-
guientes prrafos.
La utilizacin ms normal consiste en seleccionar filas de una tabla:

Editions ENI - All rights reserved


SELECT FECHA_COMPRA, TIPO, MARCA FROM TELEFONO;

En este ejemplo, hemos seleccionado tres columnas de la tabla TELEFONO.


El comando nos va a devolver todas las filas de la tabla para estas tres colum-
nas.
La manipulacin de los datos (LMD) 77
Captulo 3

Si se hubieran querido todas las columnas y todas las filas de la tabla, el co-
mando habra sido este:
SELECT * FROM TELEFONO;

FECHA_ NUM_
NUMERO TIPO MARCA PRECIO COLOR
COMPRA PROPIETARIO
1 SP 1 15/01/10 159 190120 ROJO
2 SP 1 14/03/10 99 190215
3 CT 3 02/05/10 49 190001 NEGRO
4 DE 4 25/07/10 89 190222 BLANCO
5 IP 5 30/09/10 359 190561

El asterisco es prctico cuando no se conocen los nombres de las columnas,


pero el resultado es raramente legible con tablas que contengan un gran n-
mero de columnas. Para saber el nmero de columnas, haga antes un DESC de
la tabla (DESC <nombre tabla>).

La sintaxis es simple:
SELECT <columna 1>, <columna 2> ... | * FROM <tabla1>, <tabla2> ...

Si algunas columnas tienen el mismo nombre perteneciendo a tablas distintas,


habr que aadir el nombre de la tabla delante de la columna para que el sis-
tema sepa qu columna debe utilizar.
No es obligatorio poner el nombre de las tablas delante de cada columna, pero
por una cuestin de legibilidad y de mantenimiento es preferible ponerlas
cuando se trata de selecciones complejas.
SELECT TELEFONO.FECHA_COMPRA,
TELEFONO.TIPO,
TELEFONO.MARCA,
TIPO_TEL.DESC_TIPO,
MARCA_TEL.DESC_MARCA
FROM TELEFONO,TIPO_TEL, MARCA_TEL;
78 SQL
Los fundamentos del lenguaje

En la seccin La utilizacin de los alias de este captulo, veremos que para ha-
cer la lectura ms fcil podemos dar un alias a cada tabla. Este alias suele ser
simple y permite encontrar fcilmente la tabla. Por ejemplo, TEL para TELE-
FONO o TIP para TIPO_TEL.

2.2 Las opciones DISTINCT y ALL

Por defecto, en la ejecucin de un SELECT se recuperan todas las filas (la op-
cin ALL es automtica). Si se quiere suprimir los duplicados hay que aadir
la clusula DISTINCT.
La clusula DISTINCT se aplica a todas las columnas presentes en el coman-
do.

Ejemplo:
SELECT TIPO, MARCA, PRECIO FROM TELEFONO;

y
SELECT DISTINCT TIPO, MARCA, PRECIO FROM TELEFONO;

Los dos SELECT anteriores tienen el mismo resultado aunque haya un dupli-
cado en las dos primeras lneas. Las dos primeras columnas son iguales pero no
la tercera.

TIPO MARCA PRECIO


SP 1 159
SP 1 99
DT 3 49

Editions ENI - All rights reserved


DE 4 89
IP 5 359
La manipulacin de los datos (LMD) 79
Captulo 3

Por el contrario, si reducimos la seleccin a dos columnas:


SELECT TIPO, MARCA FROM TELEFONO;

TIPO MARCA
SP 1
SP 1
CT 3
DE 4
IP 5

Si se aade la clusula DISTINCT, una de las filas que contienen 'SP' y '1' se
eliminar.
SELECT DISTINCT TIPO, MARCA FROM TELEFONO;

TIPO MARCA
SP 1
CT 3
DE 4
IP 5

Observacin
La clusula DISTINCT no se puede utilizar con operadores de agrupamiento
(ver GROUP BY). De hecho los operadores de tipo COUNT o SUM eliminan au-
tomticamente los duplicados.

2.3 La utilizacin de los alias

En una consulta SQL que contenga varias tablas, es preferible asignar un dimi-
nutivo a cada nombre de tabla que se denomina alias. Siempre bajo la ptica
de hacer que las consultas sean ms legibles para todos los programadores.
Este alias se puede utilizar para un nombre de columna y tambin para un re-
sultado de una funcin o un SELECT anidado.
80 SQL
Los fundamentos del lenguaje

Un alias se sita a continuacin del elemento al que sustituir.

Ejemplo de alias en una tabla:


SELECT TIPO, MARCA, PRECIO FROM TELEFONO TEL;

Cuando existen varias tablas, hay que dar un alias diferente para cada una de
las tablas:
SELECT TEL.FECHA_COMPRA,
TEL.MARCA,
MAR.DESC_MARCA
FROM TELEFONO TEL, MARCA_TEL MAR;

El alias en una columna sustituye en la visualizacin el nombre inicial de la co-


lumna. Esto puede permitir dar un resultado ms explcito para un usuario u
ocultar el nombre real de la columna.

Ejemplo de alias en una columna:


SELECT TIPO C1, MARCA C2, PRECIO FROM TELEFONO TEL;

El alias tambin es interesante para poner nombre al resultado de un clculo.


As el usuario comprender inmediatamente el contenido de esta columna.

Ejemplo de alias en un resultado de un clculo:


SELECT TIPO C1, MARCA C2, PRECIO*166.386 PRECIO_PESETAS FROM TELEFONO
TEL;

El alias tambin se utiliza cuando dos columnas tienen el mismo nombre en


tablas diferentes. Hay que indicar al sistema el origen de la columna.
Por ejemplo, la columna TIPO existe en la tabla TELEFONO y en la tabla
TIPO_TEL. Es bastante lgico, ya que se trata de la FOREIGN KEY de la tabla
TELEFONO que apunta a la tabla TIPO_TEL.

Editions ENI - All rights reserved


Si se quiere escribir una consulta que utilice estas dos tablas, la unin se reali-
zar con esta clave, entonces es necesario diferenciar las dos columnas.

Potrebbero piacerti anche