Está en la página 1de 49

Uso de sentencias SQL para la definición y

manipulación del modelo de base de datos en


MySQL

INTRODUCCIÓN ............................................................................ 2

1. GENERALIDADES MYSQL ............................................................ 3

2. LA BASE DE DATOS “CITAS” .......................................................... 7

3. CREACIÓN DE LA ESTRUCTURA DE ALMACENAMIENTO ..................10

4. MODIFICACIÓN DE OBJETOS CREADOS .......................................19

5. MODIFICACIÓN DE REGISTROS ..................................................23

6. CONSULTA DE REGISTROS .........................................................29

6.1. Consultas básicas .............................................................32

6.2. Alias de columnas............................................................ 35

6.3. La cláusula WHERE ...........................................................36

6.4. Cláusula ORDER BY ...........................................................38

6.5. Visualizar datos de diferentes tablas ...................................40

6.6. Subconsultas ....................................................................45

GLOSARIO ...................................................................................47

RECURSOS BIBLIOGRÁFICOS .........................................................48

1
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Introducción

Un Sistema de Gestión de Bases de Datos (SGBD),


es un conjunto de programas que permiten el
almacenamiento, modificación y extracción de la
información en una base de datos, lo que permite el
almacenamiento, manipulación y consulta de datos
pertenecientes a una base de datos.

Hasta la fecha, se ha avanzado en varias fases respecto


al manejo de bases de datos; en este momento
vamos a centrar nuestra atención en la Construcción
de sentencias SQL para la definición y manipulación
del modelo de base de datos, para esta construcción
de sentencias, este tutorial está enfocado en el uso
del Sistema manejador de Base de datos MySQL.

2
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

1. Generalidades MySQL

La herramienta a utilizar es un Sistema Manejador de Bases de Datos


libre, gratuito, de los más utilizados y que está disponible para varios
sistemas operativos llamado MySQL.

Antes de iniciar con el proceso de creación de tablas, es fundamental


tener claro la estructura de la Base de datos, esto significa, que se debe
tener ya el nombre tanto de las tablas, como el de los campos, el tipo de
datos que se van a almacenar en cada uno de los campos y el máximo de
caracteres permitidos.

Para ello se han definido estándares en cuanto a tipos de datos y tamaños


máximos permitidos para los mismos. En este momento, el sistema
manejador de bases de datos seleccionado para esta práctica es MySQL,
el cual ya debe estar instalado en su computador, en dado caso que no
esté instalado, puede revisar el video-tutorial sobre la instalación de este
servicio.

Tipos de datos

Números

a. Si en la base de Datos se necesita almacenar números con o sin


decimales, se debe pensar en un tipo de dato Numérico, los cuales tienen
su categoría dependiendo del valor como lo muestra la siguiente tabla:

3
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

• Ejemplo

Si en la base de Datos necesito almacenar las edades de las personas,


cuyo valor máximo será 100, la opción más adecuada para el tipo de dato
sería “TINYINT”.

Otro ejemplo, si estoy sistematizando las notas de un colegio y la definitiva


se debe dar en decimales y el valor máximo es 10,00, la opción más
adecuada sería “FLOAT”.

Caracteres

b. Si en la base de Datos se necesita almacenar caracteres, se debe pensar


en un tipo de dato Texto, los cuales tienen su categoría dependiendo de
la cantidad de caracteres a almacenar; los tipos de dato texto son los
siguientes:

4
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

• Ejemplo

Se presentó en este material que el campo PacIdentificacion se declaró


como “CHAR”, con tamaño 10, porque los documentos de identidad tienen
entre 8 y 10 caracteres (p.e 63590910 o los nuevos documentos son
1098765432)

Para almacenar nombres, direcciones e información con máximo 100


caracteres se recomienda el tipo “VARCHAR”, en la tabla anterior el campo
PacNombres se declaró varchar(50), porque los nombres tienen diferente
cantidad de caracteres.

Si lo que se necesita es almacenar grandes cantidades de caracteres


como descripciones, observaciones, comentarios en este caso se tomaría
TEXT o BLOB teniendo en cuenta que los tipos BLOB distinguen entre
mayúsculas y minúsculas.

Fechas

c. Si en la base de Datos se necesita almacenar fechas, se debe pensar


en un tipo de dato Date, los cuales tienen su categoría dependiendo del

5
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

formato que se desee almacenar, estos tipos de datos son los siguientes:

• Ejemplo

Se necesita llevar el control de acceso (con horas y segundos) de los


usuarios, al sistema de Información de la DIAN; como este ejemplo nos
exige controlar horas y segundos lo recomendable es tener un campo
llamado FechaIngresuUsuario de tipo “DATETIME”.

Listas

d. Para utilizar listas de valores, también se puede declarar campos cuyo


contenido formen parte de una serie de opciones, para esta declaración
se utiliza ENUM.

Un ejemplo seria:

Au t omov il Ma r ca ( ENUM (‘ Ch e v r o l e t ’ , ‘ Re n a u l t ’ , ‘Ki a ’ ) )

6
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Además de los tipos de Datos, también es necesario conocer algunos


modificadores que se utilizan para el manejo de los campos, dichos
modificadores se presentan a continuación:

2. La base de datos “Citas”

En este tutorial se presenta como hacer uso del motor de Base de Datos
MySQL para crear una base de datos. Se utilizará para esto la Base de
Datos “Citas” que se ha definido en otros elementos y que contiene cinco
tablas: Pacientes, Medicos, Consultorios, Citas y Tratamientos, como se
presenta en el diagrama.

Se considera importante presentar la estructura de la base de datos


detallando las tablas, tipos de datos de los campos y modificadores a
utilizar. Con el fin de que pueda proceder a su creación usando SQL como
Lenguaje de Definición de Datos (DDL).

7
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

8
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

9
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

3. Creación de la estructura de almacenamiento

Para iniciar el proceso de Definición de Datos en MySQL, se debe realizar


el siguiente procedimiento:

• Abrir el bloc de notas del equipo para digitar cada una de las instrucciones
del Lenguaje de Definición de Datos, esto en pro de ir construyendo el
script de la base de Datos, una vez digitada la instrucción copiarla y
pegarla en el espacio de trabajo de MySQL, el cual aparece cuando se
inicializa el servicio.

10
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

• Iniciar el Servicio, como se explicó en video-tutorial sobre instalación


de MySQL.

C:\Program Files (x86)\MySQL Server 5.0\bin\mysql.exe


En t e r p a sswo r d : ****
We l c ome t o t h e MySQL mon it o r . Comma nd s e nd w it h ; o r \ g .
You r MySQL c onn ec ti on i d i s 2
Se r v e r v e r s i on : 5 . 2 . 67 - c ommun it y - n t MySQL Commun it y Ed i t i on ( GPL )

Typ e ‘h elp ;’ or ‘ \ h’ for help. Typ e ‘ \ c ’ to c l ea r t h e bu ff e r .

my s q l

El password debe ser el mismo que se configuró al momento de la instalación

Creación de la base de datos

Como el servicio ya está inicializado, se crea la Base de Datos, para nuestro


ejemplo, CITAS.

La instrucción es:

c r ea t e d a t a b a s e nomb r e _b a s e d a t o s ;

Siempre debe terminar con punto y coma (;)

• Para crear todas las tablas debemos establecer “CITAS” como base de
datos predefinida

11
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

La instrucción es:

u s e nomb r e _b a s e d a t o s ;

• Por seguridad se debe verificar si la base de datos fue creada

La instrucción es:

s how d a t a b a s e s ;

12
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Modificaciones a las Tablas

Médicos

• Ya con “CITAS” como base de datos predeterminada, se procede a crear


las respectivas tablas, iniciamos con la tabla “MEDICOS”, su estructura
de datos es la siguiente:

La instrucción es:

c r ea t e t a b l e nomb r eTa b l a (
nomb r ecampo1 ti pod a t o s ( t ama ño ) mod i f i ca do r ,
nomb r ecampo2 ti pod a t o s ( t ama ño ) mod i f i ca do r ,
....
p r i ma r y k e y ( nomb r ecampo1 )

);

13
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

• Por seguridad se debe verificar si la tabla fue creada

La instrucción es:

s how t a b l e s f r om b a s e _d a t o s ;

• Ahora se verifica la estructura de la tabla

La instrucción es:

d e s c r i b e nomb r e _ t a b l a ;

14
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Pacientes

Se va a crear la tabla “PACIENTES”, como puede observar esta tabla


tiene un modificador nuevo para trabajar (ENUM), los pasos para crear
esta tabla son:

a. Inicializar el servicio, en el caso que vaya a empezar su sesión de


trabajo, de lo contrario solo es estar ubicado en la base de datos “CITAS”
use citas;

b. Digitar la sintaxis para creación de Tablas

c r ea t e t a b l e nomb r eTa b l a (
nomb r ecampo1 ti pod a t o s ( t ama ño ) mod i f i ca do r ,
nomb r ecampo2 e num (‘ x ’ , ‘ y ’) ,
....
p r i ma r y k e y ( nomb r ecampo1 )
);

15
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Preferiblemente utilizar los comandos para verificar las tablas de


la base de datos ( s how t a b l e s fr om c it a s ;) y la estructura de
la tabla recientemente creada.( d e s c r i b e p ac i e n t e s ; )

16
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Consultorios

Se va a realizar la creación de la tabla “CONSULTORIOS”, cuya descripción


es:

Citas

Se va a crear la tabla “CITAS”, como puede observar esta tabla tiene


unos modificadores nuevos para trabajar y además esta tabla contiene
llaves foráneas, es decir se relacionan datos de otras tablas.

17
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

La sintaxis para crear esta tabla es:

c r ea t e t a b l e nomb r eTa b l a (
nomb r ecampo1 ti pod a t o s ( t ama ño ) mod i f i ca do r
nomb r ecampo2 e num (‘ x ’ , ‘ y ’) d e f a u lt “ v a l o r ” ,
....
p r i ma r y k e y ()
f o r e i gn k e y nomb r ecampo a s r e f e r e n ce s t a b l a ( campo_ t a b l a )
);

18
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

4. Modificación de objetos creados

El comando utilizado es “ALTER TABLE” , este comando tiene algunos


atributos que nos permite realizar cambios a una tabla ya creada.

Aunque “ALTER TABLE”, se convierte en una instrucción muy


versátil para modificar la estructura de la Base de Datos, se
debe tener cuidado con los cambios que se realicen en las tablas
porque pueden afectar la lógica del Sistema.

Para practicar esta instrucción se va a crear la tabla “TRATAMIENTOS”


cuya estructura inicial es:

19
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

El código y la estructura de la tabla en MySQL,

20
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Se deben realizar ajustes a la tabla de tal modo que al finalizar la tabla


Tratamientos debe quedar de la siguiente manera:

Los cambios que se van a realizar a la tabla “TRATAMIENTOS” son los


siguientes:

a. Incluir el modificador “a u t o_ i n c r eme n t ” al campo TraNumero.

21
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

b. En este cambio se debe asignar un nuevo nombre al campo, el nombre


inicial es Descripción y el que se va a asignar es “TraDescipición”.

c. Al campo TraFechaInicio se le debe cambiar el Tipo de Dato tiene un


varchar(10) y se le debe asignar un tipo “Date”.

d. La tabla inicial no tiene el campo “TraFechaFin” se debe incluir


esta columna en la tabla, dicho campo debe quedar después del campo
TraFechaInicio.

e. En la tabla inicial se tiene el campo “TraTemporal”, el cual no es necesario


para el sistema, por lo tanto esta columna se debe eliminar de la Base de
Datos.

22
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

5. Modificación de registros

Para realizar las operaciones de Inserción de Registros se utiliza la


sentencia INSERT del lenguaje de manipulación de datos (D.M.L.).

La sentencia INSERT permite incluir los datos en cada uno de los campos
que se tienen en las tablas de la base de datos creada. Se deben tener en
cuenta algunos detalles al momento de utilizar el “INSERT INTO”:

1. El nombre de las tablas

2. El orden de los campos

3. El tipo de los campos

4. Las Referencias entre tablas

5. La separación entre los datos

6. La finalización de la instrucción.

Al momento de incluir los registros a una tabla, estos se pueden enviar


de manera individual, por grupo de registros o por medio de un archivo
plano. En este material se trabajará inicialmente el envío de un registro
y el de varios registros.

Su sintaxis es:

i n s e r t i n t o t a b l a ( campo1 , campo2 , campo3 , campo4 , campo5 )


v a l u e s (‘ v a l o r 1 ’ , ’ v a l o r 2 ’ , ’ v a l o r 3 ’ , ’ v a l o r 4 ’ , ‘ v a l o r 5 ’) ;

23
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Enviando valores según el Tipo de Datos

Para los campos de tipo TEXTO el valor va entre comilla sencilla. Por
ejemplo para el campo PacNombres de tipo varchar el dato se envía
‘Ma r i a Cam il a’.

Para los campos tipo NUMERICO el valor va sin comilla sencilla Por
ejemplo para el campo ConNumero de tipo int el dato se envía 101 .

Para los campos tipo DATE el valor va con comilla sencilla y en el


formato exigido por la respectiva clasificación. Por ejemplo para el
campo PacFechaNacimiento de tipo Date el dato se envía en formato
año-mes-dia ‘1980 - 04 - 12 ’.

Caso 1

Insertando un Registro a tablas SIN referencias

Para este ejemplo, se incluirán 2 registros a las tablas “MEDICOS” y


“PACIENTES”

Realmente el proceso es bastante sencillo, siempre y cuando se respete


la sintaxis. Recordemos la estructura de las dos tablas con las que se va
a trabajar:

Utilizando la instrucción ya presentada:

24
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

i nser t i nto t a b l a ( campo1 , campo2 , campo3 , campo4 , campo5 )

v a l u e s (‘ v a l o r 1 ’ , ’ v a l o r 2 ’ , ’ v a l o r 3 ’ , ’ v a l o r 4 ’ , ‘ v a l o r 5 ’) ;

Insertar un registro a la tabla PACIENTES se realiza de la siguiente forma:

Para insertar un segundo registro se debe repetir la instrucción, solo es


cuestión de cambiar los “values”, teniendo cuidado de NO repetir en este
caso la misma identificación del paciente.

25
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Caso 2

Insertando Varios Registros a tablas SIN referencias

En este caso la instrucción INSERT se utiliza en la forma:

i nser t i nto t a b l a ( campo1 , campo2 , campo3 , campo4 , campo5 )

values

(‘valor 1’,’valor 2’,’valor 3’,’valor 4’, ‘valor 5’), ------ Valores de registro 1

(‘valor 1’,’valor 2’,’valor 3’,’valor 4’, ‘valor 5’), ------ Valores de registro 2

(‘valor 1’,’valor 2’,’valor 3’,’valor 4’, ‘valor 5’); ------ Valores de registro 3

Caso 3

Insertando Registros a tablas CON referencias

Para este ejemplo, se incluirán 2 registros a las tablas “TRATAMIENTOS”

Se pudo observar en los ejemplos de inserción anteriores que el proceso


es bastante sencillo siempre y cuando se respete la sintaxis y se tengan en
cuenta los seis (6) detalles relacionados en la descripción de la instrucción
INSERT.

Para el caso de las tablas que contienen llaves foráneas, es decir campos
de referencia a otras tabas, el único cuidado que se debe tener para lograr
una inserción exitosa de registros es que se incluyan datos que estén en
la tabla principal. Un ejemplo de esto se da con el campo “TraPaciente” el

26
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

cual es una llave foránea que hace referencia al campo PacIdentificacion


de la tabla Pacientes, entonces SOLO se le deben enviar datos que ya se
hayan incluido en el campo PacIdentificacion de la tabla pacientes.

Se va a verificar los registros de la tabla pacientes ( s e l ec t * fr om


nomb r e _ t a b l a ),

Según esto los datos que se podrían enviar son (37821203, 63502720,
77191950 o 77191957)

Recordemos la estructura de la tabla “TRATAMIENTOS”, a la cual se le van


a insertar dos registros.

27
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Primero verifique la tabla Pacientes e identifique los datos que se


encuentran en el campo PacIdentificación (para este ejemplo son
37821203, 63502720, 77191950 o 77191957.

Y ahora la instrucción,

El campo “TraNumero” de la tabla “TRATAMIENTOS”


autoincrementable, esto quiere decir que el sistema le va asignando
el valor automáticamente y este se va incrementando de 1 en 1, por
ese motivo SE OMITE del listado de campos de la instrucción INSERT,
esto se puede observar en el ejemplo que se acabó de presentar.

Por ser un valor que el sistema asigna AUTOMATICAMENTE, TAMPOCO


se relaciona dentro de los values que se incluyen en la sintaxis del
INSERT.

A las tablas con llaves foráneas también se le pueden insertar varios


registros en una sola instrucción, este proceso se realiza de igual forma
que en el ejemplo de inserción de varios registros, donde un registro se
separa del otro con la coma( ; ).

28
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

6. Consulta de registros

Para realizar las operaciones de Consulta de Registros se utiliza la sentencia


SELECT del lenguaje de manipulación de datos (D.M.L.).

La sentencia SELECT permite visualizar 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:

Se l ec t c o l umn a , li s t a _ c o l umn a s

F r om t a b l a _o r i g e n

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

Wh e r e c ond i c i ón
G r oup by c o l umn a 1 , …
Ha v i ng c ond i c i ón
O r d e r by c o l umn a a s c
O r d e r by c o l umn a d e s c

Antes de realizar cualquier consulta a la base de Datos, es muy importante

29
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

tener claro cuál o cuáles son los datos que se requiere visualizar y de que
tabla o tablas se van a extraer.

Para las prácticas que se van a desarrollar en esta sesión se tomarán como
referencia las tablas que se construyeron anteriormente, recordemos la
sintaxis:

u s e c it a s ;
s how t a b l e s fr om c it a s ;
d e s c nomb r e _ t a b l a ;

Si ha realizado todas las prácticas sugeridas en este Objeto de aprendizaje,


el resultado del sistema será el siguiente, como lo muestra a próxima
imagen:

30
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

31
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Para los ejercicios que se presentan es necesario que la base de datos


de ejemplo tenga la estructura que se presentó en la imagen anterior.
En el caso de las tablas que no tengan la estructura presentada, puede
adecuarla utilizando el lenguaje de Definición de Datos, bien sea para
crear las tablas o para modificar la estructura.

6.1. Consultas básicas

EJEMPLO 1

Se va a iniciar con una consulta básica a la tabla pacientes; esta consulta


puede generarse de diferentes maneras dependiendo de los datos que se
necesiten visualizar.

Esta consulta puede requerir TODOS los campos de la tabla, para este
caso se utiliza el comodín * a s t e r i s c o - t odo s

La instrucción seria:

Se l ec t * F r om p ac i e n t e s ;

También puede requerirse algún o algunos campos en particular, para este


caso lo que se debe hacer es relacionar el nombre del o de los campos que
desea visualizar.

32
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

EJEMPLO 2

En el presente ejemplo se visualizará SOLO la información de los campos


Pacidentificación, PacNombres y PacApellidos de la tabla pacientes.

Se l ec t Pac I d e n ti f i cac i on , PacNomb r e s , PacAp e l l i do s

F r om p ac i e n t e s

EJEMPLO 3

Listar TODA la información de los consultorios

Recuerde la estructura de la tabla consultorios (ConNumero, ConNombre),


como esta tabla solo tiene dos campos, se pude utilizar el comodín *, la
instrucción será:

Se l ec t * fr om c on s u lt o r i o s ;

33
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

EJEMPLO 4

Generar el listado de TODOS los médicos de la institución, el listado debe


visualizar su identificación junto con los nombres y apellidos

Antes de definir la sintaxis, se va a verificar los campos que tiene la tabla


“médicos”, estos son MedIdentificacion, MedNombres, MedApellidos

Para este caso se puede utilizar la siguiente instrucción:

• Con el comodín *

Se l ec t * fr om me d i c o s ;

• Esta consulta también se podría realizar relacionando los campos


identificación, nombres y apellidos según el requerimiento presentado

Se l ec t Me d I d e n ti f i cac i on , Me dNomb r e s , Me dAp e l l i do s

fr om me d i c o s ;

34
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

6.2. Alias de columnas

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

Una consulta, sin Alias es:

Se l ec t Me d I d e n ti f i cac i on , Me dNomb r e s , Me dAp e l l i do s

F r om me d i c o s

La misma consulta pero configurando la salida por pantalla de los datos


incluidos en la tabla médicos, de tal forma que la salida sea:

35
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

• La columna MedIdentificacion, con título Identificacion.

• La columna MedNombres, con título Nombre.

• La columna MedApellidos con título Apellidos.

La sintaxis de la consulta utilizando Alias, sería la siguiente:

Se l ec t Me d I d e n ti f i cac i on a s I d e n ti f i cac i on ,
Me dNomb r e s a s Nomb r e ,
Me dAp e l l i do s a s Ap e l l i do s
F r om me d i c o s

En el ejemplo anterior se observa que la salida presenta en la parte superior


de las columnas el nombre de los campos, es decir, MedIdentificacion,
MedNombres, MedApellidos, esto se cambió con el uso del alias, el sistema
tiene como palabra reservada para esta función, el termino “AS”.

6.3. La clausula WHERE

Esta cláusula es muy importante porque se utiliza para generar resultados


basados en condiciones. La sintaxis es

Se l ec t campo o campo s ,
F r om t a b l a
Wh e r e c ond i c i ón ;

36
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Algunos ejemplos de esta cláusula podrían ser:

Visualizar el nombre y apellido de los pacientes cuyo sexo sea F

Se l ec t PacNomb r e s , PacAp e l l i do s , Pac s e xo


F r om p ac i e n t e s
Wh e r e Pac s e xo= ’ F ’ ;

Visualizar el nombre y apellido de los pacientes cuyo sexo sea M

Se l ec t PacNomb r e s , PacAp e l l i do s , Pac s e xo


F r om p ac i e n t e s

Wh e r e Pac s e xo= ’ M ’ ;

37
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Visualizar los datos del paciente con identificación número 37821200

Se l ec t *
F r om p ac i e n t e s
Wh e r e Pac I d e n ti f i cac i on=37821200 ;

6.4. Cláusula ORDER BY

Esta cláusula básicamente se utiliza para ordenar las filas, este


ordenamiento puede ser de manera ascendente o descendente. Por
defecto el ordenamiento es ascendente, es decir de menor a mayor.

La sintaxis:

Se l ec t campo o campo s ,
F r om t a b l a
O r d e r by c o l umn a

Algunos ejemplos de esta cláusula pueden ser,

Visualizar el los nombres de los pacientes ordenados alfabéticamente

38
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Se l ec t PacNomb r e s , PacAp e l l i do s
F r om p ac i e n t e s
O r d e r by PacNomb r e s ;

Visualizar los nombres y apellidos de los pacientes ordenados por apellido


alfabéticamente

Se l ec t PacNomb r e s , PacAp e l l i do s
F r om p ac i e n t e s
O r d e r by PacAp e l l i do s ;

39
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Visualizar todos los datos de los pacientes, el reporte debe ordenarse de


mayor a menor por documento de identidad:

Se l ec t *
F r om p ac i e n t e s
O r d e r by Pac I d e n ti f i cac i on a s c ;

6.5. Visualizar datos de diferentes tablas

Este tipo de consultas se utiliza frecuentemente, su objetivo es visualizar


datos que están en diferentes tablas, específicamente los datos de aquellas
que tienen llaves foráneas. En este tipo de consultas se vuelven a trabajar
los alias, solo que en esta ocasión el alias es para las tablas y no para las
columnas de una tabla.

EJEMPLO 1

Se tiene el siguiente requerimiento:

Visualizar todos los tratamientos con el nombre y apellido del


paciente.

Para atender el requerimiento se toma como referente la tabla “pacientes”,


porque es en esta tabla donde está el nombre y apellido de los pacientes
y la tabla “tratamientos”, que es la tabla donde está la información de
los tratamientos. Las tablas mencionadas tienen en común el campo

40
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

identificación, en la tabla pacientes se llama PacIdentificacion y en la


tabla tratamientos el campo se llama TraPaciente. La descripción de las
dos tablas es la siguiente:

La visualización de datos de diferentes tablas SIEMPRE debe contener


como mínimo el where donde se compare la llave principal de la tabla
1 con la llave foránea de la tabla 2.

41
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

La Sintaxis es:

Se l ec t a li a s 1 . campo a li a s 2 . campo
F r om t a b l a 1 a li a s 1 t a b l a 2 a li a s 2
Wh e r e a li a s 1 . ll a v e p r i n c i p a l = a li a s 2 . ll a v e f o r a n ea ;

Para nuestro ejemplo, la tabla 1 es pacientes y la tabla 2 tratamientos,


la llave principal de la tabla 1 es Pacidentificacion y la llave foránea de la
tabla 2 es Trapaciente, con estos datos la sintaxis quedaría de la siguiente
manera:

Se l ec t t r a . * , p ac . PacNomb r e s , p ac . PacAp e l l i do s
F r om t r a t am i e n t o s t r a , p ac i e n t e s p ac
Wh e r e p ac . Pac I d e n ti f i cac i on = t r a . T r a p ac i e n t e ;

El objetivo de esta condición es asegurar la integridad de los datos entre


tablas. Es decir que el documento de identidad que está registrado en
la tabla tratamientos sea igual al documento de identidad que está
registrado en la tabla.

El sistema como respuesta a esta consulta, visualiza TODOS los campos de


la tabla TRATAMIENTOS (TraNumero, TraFechaAsignado, TraDescripcion,
TraFechaInicio, TraFechafin, TraObservaciones, TraPaciente) y de la tabla
PACIENTES (PacNombres y PacApellidos).

EJEMPLO 2

Si lo que se necesita es cambiar el orden en el que aparecen los datos, se


puede organizar el select de la consulta de manera diferente. En el próximo
ejemplo se tiene el mismo requerimiento, visualizar los tratamientos que
se han realizado los pacientes; se necesita que se visualice el nombre y
apellidos del paciente con los datos de todos los tratamientos que se ha

42
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

realizado.

La sintaxis para esta consulta es la misma del ejemplo anterior, lo que


varía es el orden de los campos en el select.

Se l ec t p ac . PacNomb r e s , p ac . PacAp e l l i do s , t r a . *
F r om t r a t am i e n t o s t r a , p ac i e n t e s p ac
Wh e r e p ac . Pac I d e n ti f i cac i on = t r a . T r a p ac i e n t e ;

Puede observar que el orden de los datos que presenta el sistema es


diferente y está de acuerdo con los parámetros dados en el select.

EJEMPLO 3

Visualizar los tratamientos que se ha realizado el paciente con documento


77191957, del paciente se debe visualizar sus nombres y apellidos

Se l ec t p ac . PacNomb r e s , p ac . PacAp e l l i do s , tra.*


F r om t r a t am i e n t o s tra, p ac i e n t e s p ac
Wh e r e p ac . Pac I d e n ti f i cac i on = t ra . T r a p ac i e n t e a nd tra.
T r a Pac i e n t e= 77191957 ;

En la anterior instrucción se incluyó el and tra.TraPaciente= 77191957,


porque el requerimiento es muy puntual SOLO los tratamientos que se ha
realizado el paciente con ese documento de identidad.

43
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

EJEMPLO 4

Visualizar los pacientes que se han realizado un blanqueamiento Dental


como tratamiento; de este tratamiento visualizar las fechas de asignación,
de inicio y de finalización y del paciente visualizar el documento de
identidad, nombre y apellido.

Se l ec t p ac . Pac I d e n ti f i cac i on , p ac . PacNomb r e s , p ac . PacAp e l l i do s ,


t r a . T r a Fec h aAs i gn a do , t r a . T r a Fec h a I n i c i o , t r a . T r a Fec h a F i n

F r om t r a t am i e n t o s tra, p ac i e n t e s p ac

Wh e r e p ac . Pac I d e n ti f i cac i on = t ra . T r a p ac i e n t e a nd tra.


T r aDe s c r i p c i on = ’ B l a nqu eam i e n t o De n t a l ’ ;

Puede observar que para este ejemplo, la condición en el AND


(Blanqueamiento Dental) está dentro de comillas sencillas, debido a que
el campo es de tipo varchar. Cuando los campos son de tipo numérico la
condición va sin comillas sencillas.

De los tratamientos que fueron asignados el día 2012-08-17 visualizar los


datos de los pacientes (identificación, nombres y apellidos), la descripción
del tratamiento y las observaciones del mismo. Para este requerimiento
la instrucción sería:

Se l ec t p ac . Pac I d e n ti f i cac i on , p ac . PacNomb r e s , p ac . PacAp e l l i do s ,


t r a . T r aDe s c r i p c i on , t r a . T r aOb s e r v ac i on e s

F r om t r a t am i e n t o s tra, p ac i e n t e s p ac

Wh e r e p ac . Pac I d e n ti f i cac i on = t ra . T r a p ac i e n t e a nd tra.


T r a Fec h aAs i gn a do = ’ 2012 - 08 - 17 ’ ;

44
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

En el caso que se desee saber los tratamientos de otras fechas, solo es


cuestión de cambiar el dato que está entre comillas sencillas, para este
ejemplo la respuesta seria sin datos porque la tabla TRATAMIENTOS solo
tiene registros con la fecha ‘2012-08-17’

6.6. Subconsultas

Una subconsulta, es una instrucción SELECT anidada dentro de una


instrucción SELECT.

Para estas subconsultas se pueden utilizar las siguientes formas de


sintaxis:

1. Comparación [ANY | ALL | SOME]: Es una expresión y un


operador de comparación que compara la expresión con el
resultado de la subconsulta.

2. Expresión [NOT] IN: Es una expresión por la que se busca


el conjunto resultante de la subconsulta.

Para realizar las subconsultas se utiliza una instrucción SELECT, con la


misma sintaxis y reglas que cualquier otra instrucción SELECT, es muy
importante el uso de los paréntesis para proporcionar el conjunto del valor
o los valores especificados para evaluar en la expresión de la cláusula
WHERE.

Se puede utilizar el predicado ANY o SOME, los cuales son sinónimos, para

45
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

recuperar registros de la consulta principal, que satisfagan la comparación


con cualquier otro registro recuperado en la subconsulta.

El ejemplo siguiente devuelve todos los productos cuyo precio unitario


es mayor, que el de cualquier producto vendido con un descuento igual o
mayor al 25 por ciento.:

SELECT * FROM P r odu c t o s WHERE P r ec i oUn i d a d > ANY

( SELECT P r ec i oUn i d a d FROM De t a ll e Ped i do WHERE De s c u e n t o >= 0


. 25 ) ;

El predicado ALL se utiliza para recuperar únicamente aquellos registros de


la consulta principal que satisfacen la comparación con todos los registros
recuperados en la subconsulta.

Si se cambia ANY por ALL en el ejemplo anterior, la consulta devolverá


únicamente aquellos productos cuyo precio unitario sea mayor que el de
todos los productos vendidos con un descuento igual o mayor al 25 por
ciento. Esto es mucho más restrictivo.

El predicado IN se emplea para recuperar únicamente aquellos registros


de la consulta principal para los que algunos registros de la subconsulta
contienen un valor igual. El ejemplo siguiente devuelve todos los productos
vendidos con un descuento igual o mayor al 25 por ciento:

SELECT * FROM P r odu c t o s WHERE I DP r odu c t o I N

( SELECT I DP r odu c t o FROM De t a ll e Pe d i do WHERE De s c u e n t o >= 0 . 25 ) ;

Muestre el nombre y la edad del estudiante de mayor edad

Se l ec t nomb r e , e d a d
F r om e s t ud i a n t e
wh e r e e d a d i n ( s e l ec t ma x ( e d a d ) fr om e s t ud i a n t e ) ;

46
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Glosario

AUTO_INCREMENT: Tipo de Modificador que se utiliza para ir


incrementando automáticamente el valor en cada registro.

DDL: Lenguaje de Definición de Datos.

ENUM: Campos cuyo contenido formen parte de una serie de opciones.

MySQL: Motor de Bases de Datos libre, gratuito que está disponible para
varios sistemas operativos.

NOT NULL: Tipo de identificador utilizado para impide que un campo sea
vacío.

PRIMARY KEY: Tipo de identificador que hace que el campo se considere


la llave primaria de la tabla.

S.Q.L: Structured Query Language - Lenguaje de Consulta Estructurado.

SGBD: Conjunto de programas que permiten el almacenamiento,


modificación y extracción de la información en una base de datos.

UNIQUE: Tipo de identificador que evita la repetición de valores.

USE: Palabra utilizada para establecer una base de datos, como base de
datos predefinida.

47
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

Recursos Bibliográficos

Manual de Referencia MySQL, disponible en

http://dev.mysql.com/doc/refman/5.0/es/index.html

48
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la definición y manipulación del modelo de
base de datos en MySQL

CRÉDITOS

USO DE SENTENCIAS SQL PARA LA DEFINICIÓN Y MANIPULACIÓN


DEL MODELO DE BASE DE DATOS EN MYSQL

Desarrollador de contenido
Magda Milena García Gamboa
Experto temático

Asesor Pedagógico Rafael Neftali Lizcano Reyes

Productor Multimedia Rafael Ricardo Valdés Prada


William Fernando Ramirez

Programador Daniel Eduardo Martínez Díaz

Líder expertos temáticos Ana Yaqueline Chavarro Parra

Líder linea de producción Santiago Lozada Garcés

49
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje