Uso de sentencias SQL para la denició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” “CITAS” ............................ ........................................................7 ............................7 3. CREACIÓN DE LA ESTRUCTURA DE ALMACENAMIENTO .................10 4. MODIFICACIÓN DE OBJETOS CREADOS ............................. ...................................... .........19 19 5. MODIFICACIÓN DE REGISTROS ............................ ................................................. ..................... 23 6. CONSUL CONSULTA TA 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 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 defnició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 defnició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 defnició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 c ampos 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 l a instalación de este servicio.
Tipos de dat os os
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 ti enen su categoría dependiendo del valor como lo muestra la siguiente sigui ente tabla:
3 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 defnició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 defnició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: AutomovilMarca (ENUM(‘Chevrolet’, ‘Renault’, ‘Kia’ ) )
6 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 defnició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 defnició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 defnició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 defnició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 Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.2.67-community-nt MySQL Community Edition (GPL) Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql 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: create database nombre_basedatos;
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 defnición y manipulación del modelo de base de datos en MySQL
La instrucción es: use nombre_basedatos;
• Por seguridad se debe verificar si la base de datos fue creada
La instrucción es: show databases;
12 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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:
create table nombreTabla ( nombrecampo1 tipodatos(tamaño) modificador, nombrecampo2 tipodatos(tamaño) modificador, .... primary key (nombrecampo1) );
13 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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: show tables from base_datos;
• Ahora se verifica la estructura de la tabla
La instrucción es: describe nombre_tabla;
14 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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
create table nombreTabla ( nombrecampo1 tipodatos(tamaño) modificador, nombrecampo2 enum(‘x’, ‘y’), .... primary key (nombrecampo1) );
15 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 (show tables from citas; ) y la estructura de la tabla recientemente creada.( describe pacientes; )
16 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 defnición y manipulación del modelo de base de datos en MySQL
La sintaxis para crear esta tabla es: create table nombreTabla ( nombrecampo1 tipodatos(tamaño) modificador nombrecampo2 enum(‘x’, ‘y’) default “valor”, .... primary key () foreign key nombrecampo as references tabla(campo_tabla) );
18 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 defnició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 defnició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 “auto_increment ” al campo TraNumero.
21 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 defnició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: insert into tabla (campo1, campo2, campo3, campo4,campo5) values(‘valor 1’,’valor 2’,’valor 3’,’valor 4’, ‘valor 5’);
23 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 ‘Maria Camila ’.
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 I n s e r t a n d o u n R e g i s t r o a t a b l a s SI N r e f e r e n c i a s
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 defnición y manipulación del modelo de base de datos en MySQL
insert into tabla (campo1, campo2, campo3, campo4,campo5) values(‘valor 1’,’valor 2’,’valor 3’,’valor 4’, ‘valor 5’);
Insertar un registro a la tabla P A CI EN T E S 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 defnición y manipulación del modelo de base de datos en MySQL
Caso 2 I n s e r t a n d o V a r i o s R e g i s t r o s a t a b l a s SI N r e f e r e n c i a s
En este caso la instrucción INSERT se utiliza en la forma: insert into tabla (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 I n s e r t a n d o R e g i s t r o s a t a b l a s CO N r e f e r e n c i a s
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 defnició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 S O L O 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 (select * from nombre_tabla ),
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 defnició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 defnició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: Select columna, lista_columnas From tabla_origen
Esta instrucción, puede ir acompañada de las siguientes clausulas: Where condición Group by columna 1, … Having condición Order by columna asc Order by columna desc
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 defnició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: use citas; show tables from citas; desc nombre_tabla;
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 defnició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 defnició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 E J EM P L O 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 T O D O S los campos de la tabla, para este caso se utiliza el comodín * asterisco - todos La instrucción seria: Select * From pacientes;
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 defnición y manipulación del modelo de base de datos en MySQL E J EM P L O 2
En el presente ejemplo se visualizará SOLO la información de los campos Pacidentificación, PacNombres y PacApellidos de la tabla pacientes. Select PacIdentificacion, PacNombres, PacApellidos From pacientes
E J EM P L O 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á: Select * from consultorios;
33 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnición y manipulación del modelo de base de datos en MySQL E J EM P L O 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 * Select * from medicos;
• Esta consulta también se podría realizar relacionando los campos
identificación, nombres y apellidos según el requerimiento presentado
Select
MedIdentificacion, MedNombres, MedApellidos
from medicos;
34 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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: Select
MedIdentificacion, MedNombres, MedApellidos
From medicos
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 defnició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: Select MedIdentificacion as Identificacion, MedNombres as Nombre , MedApellidos as Apellidos From medicos
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 Select campo o campos, From tabla Where condición;
36 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnición y manipulación del modelo de base de datos en MySQL
Algunos ejemplos de esta cláusula podrían ser: V i su a l i z a r e l n o m b r e y a p e l l id o d e l o s p a c i e n t e s c u y o s e x o s e a F
Select PacNombres, PacApellidos, Pacsexo From pacientes Where Pacsexo=’F’;
V i su a l i z a r e l n o m b r e y a p e l l id o d e l o s p a c i e n t e s c u y o s e x o s e a M
Select PacNombres, PacApellidos, Pacsexo From pacientes Where Pacsexo=’M’;
37 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnición y manipulación del modelo de base de datos en MySQL
Visualizar los datos del paciente con identificación número 37821200 Select * From pacientes Where PacIdentificacion=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: Select campo o campos, From tabla Order by columna
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 defnición y manipulación del modelo de base de datos en MySQL
Select PacNombres, PacApellidos From pacientes Order by PacNombres;
Visualizar los nombres y apellidos de los pacientes ordenados por apellido alfabéticamente Select PacNombres, PacApellidos From pacientes Order by PacApellidos;
39 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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: Select * From pacientes Order by PacIdentificacion asc ;
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. E J EM P L O 1
Se tiene el siguiente requerimiento: V i su a l i z a r t o d o s l o s t r a t a m i e n t o s c o n e l n o m b r e y a p e l l i d o d e l 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 defnició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 defnición y manipulación del modelo de base de datos en MySQL
La Sintaxis es: Select alias1.campo alias2.campo From tabla1 alias1 tabla2 alias2 Where alias1.llaveprincipal= alias2.llaveforanea;
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: Select tra.*, pac.PacNombres, pac.PacApellidos From tratamientos tra, pacientes pac Where pac.PacIdentificacion = tra.Trapaciente;
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).
E J EM P L O 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 defnició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. Select pac.PacNombres, pac.PacApellidos, tra.* From tratamientos tra, pacientes pac Where pac.PacIdentificacion = tra.Trapaciente;
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.
E J EM P L O 3
Visualizar los tratamientos que se ha realizado el paciente con documento 77191957, del paciente se debe visualizar sus nombres y apellidos
Select
pac.PacNombres, pac.PacApellidos, tra.*
From tratamientos tra, pacientes pac Where pac.PacIdentificacion TraPaciente= 77191957;
=
tra.Trapaciente
and
tra.
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 defnición y manipulación del modelo de base de datos en MySQL
E J EM P L O 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. Select pac.PacIdentificacion, pac.PacNombres, pac.PacApellidos, tra.TraFechaAsignado, tra.TraFechaInicio, tra.TraFechaFin From tratamientos tra, pacientes pac Where pac.PacIdentificacion = tra.Trapaciente TraDescripcion =’Blanqueamiento Dental’;
and
tra.
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:
Select pac.PacIdentificacion, pac.PacNombres, pac.PacApellidos, tra.TraDescripcion, tra.TraObservaciones From tratamientos tra, pacientes pac Where pac.PacIdentificacion = TraFechaAsignado =’2012-08-17’;
tra.Trapaciente
and
tra.
44 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 . Co m p a r a c i ó n [ A N Y | A L L | S O M E] : Es u n a e x p r e s i ó n y u n o p e r a d o r d e c o m p a r a c ión q u e c o m p a r a l a e x p r e s ión c o n e l resultado de la subconsulta. 2 . Ex p r e s ió n [ N O T ] I N : E s u n a e x p r e s i ó n p o r l a q u e s e b u s c a e l co n j u n t o r e s u l t a n t e d e l a s u b c o n s u l t a .
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 defnició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 Productos WHERE PrecioUnidad > ANY (SELECT PrecioUnidad FROM DetallePedido WHERE Descuento >= 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 Productos WHERE IDProducto IN (SELECT IDProducto FROM DetallePedido WHERE Descuento >= 0.25);
Muestre el nombre y la edad del estudiante de mayor edad Select nombre, edad From estudiante where edad in (select max (edad) from estudiante);
46 FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Uso de sentencias SQL para la defnició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 defnició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