BASE DE DATOS 2

Page 1

TECNOLOGÍA INFORMÁTICA Y REPARACIÓN DE COMPUTADORES MODALIDAD SEMIPRESENCIAL


Semestre II: Base de Datos II

INSTITUTO TECNOLÓGICO SUPERIOR “JUAN MONTALVO” Ing. Paulina Vega Mg. Sc. RECTORA Lic. Manuel Abarca VICERRECTOR

TECNOLOGÍA EN INFORMÁTICA Y REPARACIÓN DE COMPUTADORES SEGUNDO SEMESTRE Ing. Yecenia Cevallos DOCENTE COORDINADORA DE CARRERA

Telefax: 2574 519 – 2574 067 Contacto correoinstitucional: instsecre@hotmail.com Web: tecnologicovirtual.juanmontalvoloja.edu Dirección: Av. Emiliano Ortega 13 – 75 y Lourdes

ITSJM – Informática y Reparación de Computadores

Página 2


Semestre II: Base de Datos II

PRÓLOGO Las bases de datos hoy en día, constituye la parte más fundamental de los sistemas de información en las organizaciones; toda información se almacena, recupera, se comparte y luego llega a convertirse en un factor crítico para la extracción y la búsqueda de conocimiento. Es por las razones antes expuestas que el curso de Base de Datos II está estructurado, para apoyar a los estudiantes en el desarrollo y entendimiento del rol de los datos. En esta asignatura, Base de Datos II, se analizará específicamente el manejo de MySQL tomando en cuenta aspectos necesarios tales como Introducción, Instalación, Implementación, Administración y Programación

ITSJM – Informática y Reparación de Computadores

Página 3


Semestre II: Base de Datos II

INDICE DE CONTENIDOS INDICE DE CONTENIDOS .......................................................................................... 4 1.2

Tipos de datos .................................................................................................. 7

1.2.1.

Tipos Numéricos .......................................................................................... 7

1.2.2.

Tipos de fecha............................................................................................... 8

1.2.3.

Tipos de cadena de caracteres ......................................................................... 9

1.3.2.

Características de MySql .................................................................................10

1.4 1.4.1.

Instalación de MySql ...................................................................................... 12 Conexión con la línea de comando........................................................... 12

1.5.

Sentencia USE................................................................................................ 12

1.6.

Sentencia SHOW TABLES.............................................................................. 13

1.7.

Sentencia DESCRIBE ..................................................................................... 14

2.1.

Sentencia CREATE ........................................................................................ 15

2.1.1.

Crear base de datos ..........................................................................................15

2.1.2.

Crear tablas ......................................................................................................... 15

2.2.

Sentencia DROP TABLE ............................................................................... 17

2.3.

Sentencia ALTER ........................................................................................... 17

UNIDAD 3: COMANDOS DML ................................................................................... 18 3.1.

Sentencia INSERT........................................................................................... 18

3.2.

Sentencia SELECT .......................................................................................... 18

3.3.

Cláusula WHERE ............................................................................................ 22

3.4.

Cláusula ORDER BY ....................................................................................... 26

3.5.

Cláusula LIMIT .........................................................................................................28

3.6.

Comando UPDATE ........................................................................................ 29

3.7.

Comando DELETE ......................................................................................... 30

3.8.

TRUNCATE .............................................................................................................. 30

UNIDAD 4: OPERADORES LOGICOS Y DE COMPARACION................................. 31 4.1.

OPERADORES LÓGICOS ............................................................................. 31

4.1.1.

NOT ( !) .................................................................................................................31

4.1.2.

AND (&&) .............................................................................................................. 31

ITSJM – Informática y Reparación de Computadores

Página 4


Semestre II: Base de Datos II 4.1.3. OR ( || ) .................................................................................................................32 4.2.

Reglas para las comparaciones de valores .....................................................32

4.3.

OPERADORES DE COMPARACIÓN ............................................................ 33

4.3.1.

Operador de igualdad................................................................................... 33

4.3.2.

Operador de igualdad con NULL seguro ...................................................... 33

4.3.3.

Operador de desigualdad............................................................................. 34

4.3.4.

Operador LIKE .....................................................................................................34

4.4.

Operadores de comparación de magnitud ...................................................... 36

4.5.

Verificar pertenencia a un rango ...................................................................... 37

UNIDAD 5: FUNCIONES DE AGREGADO ............................................................... 39 5.1.

SUM........................................................................................................................... 39

5.2.

MAX Y MIN ............................................................................................................... 39

5.3.

COUNT ..................................................................................................................... 39

5.4.

AVG ........................................................................................................................... 40

2.5. Problemas resueltos .................................................................................................... 40

ITSJM – Informática y Reparación de Computadores

Página 5


Semestre II: Base de Datos II

UNIDAD 1: CONOCIENDO LA BASE DE DATOS MySql 1.1

Modelo entidad relación

Recordemos el modelo Entidad – Relación de una escuela...

La entidad “alumnos” se convierte en la tabla:

ITSJM – Informática y Reparación de Computadores

Página 6


Semestre II: Base de Datos II

Entidad Tabla Atributos Columna Cada fila representa un Registro. La clave puede estar formada por una o más columnas Para crear la base de datos “escuela” utilizaremos el Sistema de Gestión de Bases de Datos 1.2

Tipos de datos

Los tipos de datos que puede haber en un campo o atributo de una tabla forman tres grandes grupos: a. Tipos Numéricos b. Tipos de Fecha c. Tipos de Cadena de Caracteres

1.2.1. Tipos Numéricos Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que incluyen valores decimales (coma flotante) y los que no.  TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde-128 a127. Sinsigno, el rangodevaloresesde0 a 255

ITSJM – Informática y Reparación de Computadores

Página 7


Semestre II: Base de Datos II

 Bitó Bool:unnúmeroenteroquepuedeser 0 ó 1  SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535.  MediumInt: número entero con o sin signo. Con signo el rango de valores va desde 8.388.608 a 8.388.607. Sin signo el rango va desde 0 a 16777215.  Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde 2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295  BigInt: número entero con o sin signo. Con signo el rango de valores va desde 9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615.  Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38.  Real, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308  Decimal, Dec, Numeric: Número en coma flotante. El número se almacena como una cadena 1.2.2. Tipos de fecha Al almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes está entre 0 y 12 y que el díaestá entre 0 y 31.

ITSJM – Informática y Reparación de Computadores

Página 8


Semestre II: Base de Datos II

Date: Almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de: año-mes-dia

DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos

TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037.

Time: Almacena la hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'

Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.

1.2.3. Tipos de cadena de caracteres. 

Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres.

VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres.

Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los de tipo Text y los de tipo BLOB (Binary large Object). La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo Text se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta. Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros. 

TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres.

ITSJM – Informática y Reparación de Computadores

Página 9


Semestre II: Base de Datos II

Blob y Text: un texto con un máximo de 65535 caracteres.

MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres.

LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación en Internet, los paquetes pueden tener un máximo de 16 Mb.

Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535 valores distintos

Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.

1.3 Introducción a Mysql 1.3.1. Concepto. MySQL es una sistema de base de datos desarrollado en C y C++, adaptable a diferentes entornos de desarrollo, permitiendo la interacción con diferentes lenguajes como PHP y Java, entre otros. MySQL es la base de datos open source más popular y, posiblemente, mejor del mundo. Su continuo desarrollo y su creciente popularidad están haciendo de MySQL un competidor cada vez más directo de gigantes en la materia de las bases de datos como Oracle MySQL es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamadosdebases de datos. Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza múltiples tablas para almacenaryorganizar la información. 1.3.2. 

Características de MySql

Esungestordebasededatos. Unabasededatosesunconjunto dedatos yungestor de base de datos es una aplicación capaz de manejar este conjunto de datos de manera eficiente ycómoda.

ITSJM – Informática y Reparación de Computadores

Página 10


Semestre II: Base de Datos II

Es una base de datos relacional. Una base de datos relacional es un conjunto de datos que están almacenados en tablas entre las cuales se establecen unas relaciones para manejar los datos de una forma eficiente y segura. Para usar y gestionar una base de datos relacional se usa el lenguaje estándar de programación SQL.

Es Open Source. El código fuente de MySQL se puede descargar y está accesible a cualquiera, por otra parte, usa la licencia GPL para aplicaciones no comerciales.

Esunabasededatosmuyrápida, segurayfácildeusar. Graciasalacolaboraciónde muchos usuarios, la base de datos se ha ido mejorando optimizándose en velocidad.

1.3.3.

Ventajas

 Sin lugar a duda, lo mejor de MySQL es su velocidad a la hora de realizar las operaciones, lo que le hace uno de los gestores que ofrecen mayor rendimiento.  Su bajo consumo lo hacen apto para ser ejecutado en una máquina con escasos recursos sin ningún problema.  Las utilidades de administración de este gestor son envidiables para muchos de los gestores comercialesexistentes, debido a sugran facilidad de configuración e instalación.  Tiene una probabilidad muy reducida de corromper los datos, incluso en los casos en los que los errores no se produzcan en el propio gestor, sino en el sistema en el que está.  El conjunto de aplicaciones Apache-PHP-MySQL es uno de los más utilizados en Internet en servicios de foro (Barrapunto.com) y de buscadores de aplicaciones(Freshmeat.net).

1.3.4.

Desventajas

Dependede la aplicación

No tiene tantas capacidades comootros gestores profesionales

No es tan robusto como un ORACLE.

Carece de soporte para transacciones, rollback's ysubconsultas.

ITSJM – Informática y Reparación de Computadores

Página 11


Semestre II: Base de Datos II

El hecho de que no maneje la integridad referencial, hace de este gestor una solución pobre para muchos campos de aplicación, sobre todo para aquellos programadores que provienen de otros gestores que sí que poseen esta característica.

No es viable para su uso con grandes bases de datos, a las que se acceda continuamente, ya que no implementa unabuenaescalabilidad

1.4 Instalación de MySql Podemos trabajar de dos formas: 1) Con el cliente mysql a través de la línea de comando. 2) O con la herramienta MySQL Query Browser.

1.4.1. Conexión con la línea de comando. Si ejecutamos desde Programa/MySQL/MySQL Server 5.0/MySQL Command LineClient aparecerá

Y después de introducir el password

1.5. Sentencia USE. Para acceder a la base de datos utilizamos la sentencia USE.

ITSJM – Informática y Reparación de Computadores

Página 12


Semestre II: Base de Datos II

Recibimos un mensaje "Database changed" (base de datos cambiada). Una base de datos está formada como ya sabemos por tablas. 1.6. Sentencia SHOW TABLES. Para ver qué tablas tenemos escribimos la sentencia SHOW TABLES.

Para ver qué contiene la tabla sucursales, o seleccionar todas sus filas escribimos nuestra primera instrucción SELECT:

Esta tabla está formada por dos columnas: Id y Descripcion. Los nombres de columnas tampoco pueden llevar tildes. Debajo de los nombres están los valores. Tenemos una fila, por ejemplo, donde Id vale 2 y Descripcion es "Unión". Para averiguar más sobre esta tabla escribimos:

ITSJM – Informática y Reparación de Computadores

Página 13


Semestre II: Base de Datos II

1.7.

Sentencia DESCRIBE.

La instrucción "DESCRIBE sucursales" describe la definición de la estructura de la tabla El varchar(15) que se encuentra en la 3ª fila, 2ºcolumna significa que la columna Descripcion puede tener un número variable de caracteres, hasta 15. Análogamente el int(10) que se encuentra en la 2ª fila, 2ª columna indica que Id es un número entero.

La palabra PRI que se encuentra en la 2ªfila, 4ª columna significa que Id caracteriza de manera única una fila. Esdecir, cada fila de sucursales vaa tenerun número que va aestar en la columna Id. Diferentes filas tendrán diferentes números. De manera que un valor de Id, si está en la tabla, determina una fila. PRI es una abreviatura de PRIMARY KEY , clave primaria. Esta es una expresión usada en computación para indicar una columna que se usa para identificar las filas. Aún podríamos tener más información de la tabla si ejecutamos la sentencia:

Se sugiere al alumnado que explore, usando SELECT * FROM .. y DESCRIBE ..., sobre

las

diversas

tablas

de

la

base

ITSJM – Informática y Reparación de Computadores

de

datos

empresa.

Página 14


Semestre II: Base de Datos II

UNIDAD 2: COMANDOS DLL

2.1.

Sentencia CREATE

2.1.1.

Crear base de datos

Una base de datos en un sistema relacional está compuesta por un conjunto de tablas, que corresponden a las relaciones del modelo relacional. En la terminología usada en SQL no se alude a las relaciones, del mismo modo que no se usa el término atributo, pero sí la palabra columna, y no se habla de tupla, sino de línea. A continuación se usarán indistintamente ambas terminologías, por lo que tabla estará en lugar de relación, columna en el de atributo y línea en el de tupla, y viceversa. Prácticamente, la creación de la base de datos consiste en la creación de las tablas que la componen. En realidad, antes de poder proceder a la creación de las tablas, normalmente hay que crear la base de datos, lo que a menudo significa definir un espacio de nombres separado para cada conjunto de tablas. De esta manera, para una DBMS se pueden gestionar diferentes bases de datos independientes al mismo tiempo sin que se den conflictos con los nombres que se usan en cada una de ellas.. Normalmente, se amplía el lenguaje SQL introduciendo unainstrucción no prevista en el estándar: "CREATE DATABASE". La sintaxis empleada por PostgreSQL, pero también por las DBMS más difundidas, es la siguiente: CREATE DATABASE nombre_base de datos; Una vez creada la base de datos, se pueden crear las tablas que la componen.

2.1.2.

Crear tablas

Antes de sumergirnos en la sintaxis SQL para CREATE TABLE, es una buena idea comprender lo que se incluye en una tabla. Las tablas se dividen en filas y columnas. Cada fila representa una parte de los datos, y cada columna puede pensarse como la representación de un componente de aquella parte de los datos. Entonces, por ejemplo, si tenemos una tabla para registrar la información del cliente, las columnas pueden incluir información tal como Primer Nombre, Apellido, Dirección, Ciudad, País, Fecha de Nacimiento ITSJM – Informática y Reparación de Computadores

Página 15


Semestre II: Base de Datos II

y demás. Como resultado, cuando especificamos una tabla, incluimos los títulos de columna y los tipos de datos para esta columna en particular. Entonces ¿Qué son los tipos de datos? Generalmente, los datos se generan en formas variadas. Podría ser un entero (tal como 1), un número real (tal como 0,55), una línea (tal como 'sql'), una fecha/expresión de tiempo (tal como '25-ene-2000 03:22:22'), o incluso en formato binario. Cuando especificamos una tabla, necesitamos especificar el tipo de dato asociado con cada columna (es decir, especificaremos que „First_Name‟ es de char(50) tipo – lo que significa que es una línea con 50 caracteres). Una cosa a tener en cuenta es que las diferentes bases de datos relacionales permiten diferentes tipos de datos, entonces es prudente consultar primero una referencia específica de base de datos. La sintaxis SQL para CREATE TABLE es

Entonces, si debemos crear una tabla para el cliente tal como se especifica anteriormente, ingresaríamos

A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor predeterminado, agregue “[valor] Predeterminado” luego de la

ITSJM – Informática y Reparación de Computadores

Página 16


Semestre II: Base de Datos II

instrucción de tipo de datos. En el ejemplo anterior, si deseamos predeterminar una columna “Address” como“Desconocida” y Ciudadcomo“Barcelona”, ingresaríamos

2.2.

Sentencia DROP TABLE

La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si está abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad referencial (si interviene como tabla padre en una relación y tiene registros relacionados). La sintaxis es la siguiente: DROPTABLEtab1 Elimina de la base de datos la tabla tab1. DROP

2.3.

TABLE mitabla;

Sentencia ALTER ALTERTABLEClientes ALTER COLUMN direccion VARCHAR(40);

Hace que la columna dirección de la tabla Clientes, ahora admita 40 caracteres alfanuméricos. Cuando cambiamos el tipo de una columna hay que tener en cuenta que el nuevo tipo debe ser compatible con el antiguo para que no se pierdan los datos almacenados. Además la columna no se puede modificar si es ROWGUIDCOL, calculada o si se utiliza en una columna calculada, si se utiliza en un índice (a menos que la columna sea del tipo de datos varchar, nvarchar o varbinary, el tipo de datos no se cambie y el nuevo tamaño sea igual al tamaño anterior o mayor que éste), si se utiliza en estadísticas, en una restricción PRIMARY KEY, FOREIGN KEY, CHECK o UNIQUE. Sin embargo, se permite el cambio delongitud de una columna de longitud variable en una restricción CHECK o UNIQUE.

ITSJM – Informática y Reparación de Computadores

Página 17


Semestre II: Base de Datos II

UNIDAD 3: COMANDOS DML 3.1. Sentencia INSERT La sentencia INSERT sirve para ingresar registros en una tabla. Para ingresar un registro debemos conocer las columnas de la tabla y los tipos de datos de cada una. Se acompaña con la sentencia VALUES para definir los valores de los campos en el registro a ingresar.

Para ingresar un registro en la tabla de empleados podemos ejecutar la siguiente sentencia:

3.2. Sentencia SELECT Para extraer información de una base de datos, utilizamos una consulta a través de una instrucción SELECT.

Para presentar los valores de una columna determinada de una tabla, usamos SELECT Nombre_de_columna FROM Nombre_de_tabla; Ejemplo :

Para seleccionar más de unacolumna,

ITSJM – Informática y Reparación de Computadores

Página 18


Semestre II: Base de Datos II

SELECT

Nombre_de_columna_1,

Nombre_de_columna_2,...

FROM

Nombre_de_tabla; Ejemplo

Para seleccionar todas las columnas de unatabla, SELECT * FROM Nombre_de_tabla; Ejemplo:

Obsérvese que los clientes, vendedores, artículos y sucursales son identificados por su Id. El importe representa el total de la venta, no el precio unitario. También se pueden hacer cálculosconunacolumnanumérica. Ejemplos:

ITSJM – Informática y Reparación de Computadores

Página 19


Semestre II: Base de Datos II

Tal como puede verse la expresión 0.10*importe constituye lo que se denomina un campo calculado que se obtiene a partir de un campo/columna de la tabla.

Se pueden agregar a la salida columnas constantes o calculadas, que no tienen o (no tienen) relación con las tablas.

Ejemplo:

En general es deseable no tener títulos de columna complicados como "0.10*Importe". Para esos casos se usa la instrucción AS (que significa, entre otras cosas, "como").

Ejemplo:

ITSJM – Informática y Reparación de Computadores

Página 20


Semestre II: Base de Datos II

Se puede solicitar que no haya repeticiones en las filas seleccionadas. Basta agregar DISTINCT después del SELECT. Ejemplo:

Los resultados de cálculos, si no se toma alguna medida al respecto, a veces salen con demasiados decimales. En esos casos, conviene usar la función ROUND. Esta función redondea los números a la cantidad deseada de decimales después del punto. Por ejemplo, ROUND(2.343,2) produce el resultado 2.34. Análogamente ROUND(2.347,2) produce 2.35, y ROUND(2.245,2) produce 2.34. Para redondear a un entero alcanza con escribir ROUND(número). Por ejemplo, ROUND(2.345) produce 2. Ejemplo:

ITSJM – Informática y Reparación de Computadores

Página 21


Semestre II: Base de Datos II

En el último punto hemos visto por primera vez una función. Una función consta de un nombre, seguido de paréntesis, entre los cuales según los casos puede no haber nada, o haber una o más variables. La función realiza ciertos cálculos con los valores de dichas variables, y genera otra cantidad, llamada el valor de la función. Una consideración práctica es que no se pueden dejar espacios entre el nombre de la función y el primer paréntesis después del mismo. Siempre escribiremos paréntesis despuésdel nombre de una función. 3.3. Cláusula WHERE. Esta cláusula sirve para seleccionar filas, dentro de las columnas seleccionadas. WHERE significa "donde". Se pueden seleccionar filas donde una columna tiene un valor determinado. Ejemplo:

Vemos que de entre todos los clientes hemos obtenido solamente aquél registro para el que el identificador id es igual a uno. Se puede seleccionar filas donde una columna tiene un valor mayor (o menor) que uno dado.

ITSJM – Informática y Reparación de Computadores

Página 22


Semestre II: Base de Datos II

Las igualdades y desigualdades también se aplican a cadenas de caracteres. Una cadena es menor que otra cuando es previa en orden alfabético. Por ejemplo "azzl" < "baa" . No se distingue entre mayúsculas y minúsculas (aunque, si se lo desea, es posible configurar el servidor MySQLparaquesídistinga). Esdecir, "A"< "b" < "c" < "D" y "a"="A". Ejemplo:

Este SELECT listará los clientes con nombre empezando en una letra anterior a "i" en el alfabeto.

También se aplican a fechas la igualdad y desigualdad. Para referirse a una fecha, se le escribe como "Año con 4 cifras-Mes-Día". Por ejemplo, "2004-12-20" indica el 20 de Diciembre de2004. Ejemplo:

ITSJM – Informática y Reparación de Computadores

Página 23


Semestre II: Base de Datos II

Para determinar si un dato es NULL se usa “IS NULL”, para saber si no es NULL, se usa la condición“ISNOTNULL” Ejemplo:

Nodebe usarse <> NULL. Produce resultados equivocados, en su lugar habría queusar IS NOT NULL. Llamamoscondicionessimplesalassiguientes Expresión a=b

Significado a es igual a b

a=b

a es igual a b

a <> b

a es distinto de b

ITSJM – Informática y Reparación de Computadores

Página 24


Semestre II: Base de Datos II

a<b

a es menor que b

a>b

a es mayor que b

a <= b

a es menor o igual a

a >= b

a es mayor o igual a

a IS NULL

a es NULL

a IS NOT

a no es NULL

Las cantidades a y b pueden ser números, cadenas de caracteres o fechas, en todos los casos. En una cláusula WHERE se puede usar cualquier condición simple. La cláusula WHERE selecciona aquellas filas en que la condición es verdadera.

Las condiciones simples pueden aparecer combinadas por operadores lógicos. Los operadores lógicos son AND, OR y NOT. Aquí E y F representan condiciones.

Expresión

Significado

Es verdadera cuando ...

X AND Y

XyY

X es verdadera y Y es

X OR Y

XoYo

NOT X

No X

X es verdadera o Y lo es o ambas X es falsa

NOTA: El operador NOT requiere paréntesis. Es decir se debe escribir WHERE NOT (salario > 50) mientras que es incorrecto WHERE NOT salario > 50. Se entiende que buscamos filas con salarios no mayores que 50. Ejemplo Listar los empleados cuya fecha de ingreso sea anterior al 2004, o cuyo salario sea mayor que 50 (o ambas cosas).

ITSJM – Informática y Reparación de Computadores

Página 25


Semestre II: Base de Datos II

Listar los clientes cuyos nombres empiecen con una letra entre “c” y “l”

El resultado es "Empty set", es decir, no hay filas que cumplan la condición. En el caso de condiciones más complicadasse recomienda un ampliousodeparéntesis.

3.4. Cláusula ORDER BY. La cláusula ORDER BY produce una ordenación de las filas de salida del Query o consulta. Se puedeordenar por una columna seleccionada.

ITSJM – Informática y Reparación de Computadores

Página 26


Semestre II: Base de Datos II

También se puede ordenar porvarias columnas.

Cuando se ordena por varias columnas, por ejemplo 3, el procedimiento es básicamente el que sigue: Se ordena por la primera columna. Si hay valores repetidos en la primera columna, para cada grupo de valores repetidos se ordenan las filas por el valor de la 2ª columna. Si hay valores repetidos de las dos primeras columnas en conjunto, se ordenan las filas correspondientes por la 3ª columna.

Ejemplo: Supongamos una tabla con las siguientes columnas yvalores: a

b

c

d

12

Diana Pérez

1/1/2004

12313

ITSJM – Informática y Reparación de Computadores

Página 27


Semestre II: Base de Datos II

48 22 12 22

Alejandro Bentancourt Jorge Rodríguez Diana Pérez Adriana Salgado

30/12/2005 2/5/2004 3/8/2004 1/3/2002

45646 78987 65465 12312

Si ordenamos esta tabla por las columnas a, b y c, obtenemos

12 12

Diana Pérez Diana Pérez

22 22 48

Adriana Salgado Jorge Rodríguez Alejandro Bentancourt

1/1/2004 3/8/2004

12313 65465

1/3/2002 2/5/2004 30/12/2005

12312 78987 45646

Por último, se puede ordenar por una cantidad calculada a partir de una o varias columnas.

3.5. Cláusula LIMIT. La preparación de una consulta complicada implica normalmente un proceso de prueba y error. Aunque no se cometan errores, siempre se empieza escribiendo consultas que sólo realizan una parte de lo que se desea alcanzar. Luego, se van mejorando gradualmente hasta llegar al objetivo buscado.

Cuando se trabaja con tablas auténticas con muchos cientos o miles de filas, puede ser demasiado engorroso ir obteniendo repetidas salidas con cientos o miles de filas. Es obvio que no se pueden observar en la pantalla del cliente mysql. Por otra parte, en su

ITSJM – Informática y Reparación de Computadores

Página 28


Semestre II: Base de Datos II

instalación puede haberotros clientes queoperen con MySQL.

De todas maneras, interesa una cláusula sencilla que limite el número de filas que produce el SELECT. Esa es la función de LIMIT. Si, por ejemplo, escribimos

Vemos 3 filas en la salida, a pesar que hay varias más en Ventas. El orden de las cláusulas. Las cláusulas mencionadas, SELECT...FROM.. , WHERE, ORDER BY, y LIMITdeben escribirse, si aparecen, en ese orden. SELECT siempre aparece y va en primer lugar. Las otras 3 son optativas. 3.6. Comando UPDATE La sentencia UPDATE se utiliza para actualizar registros ya existentes de una tabla, nos permite elegir los campos a actualizar y los datos con que actualizarlos. Esta se acompaña de la sentencia SET para definir los nuevos valores de los campos a actualizar.

Podemos actualizar todos los registros de una tabla o definir condiciones con la sentencia WHERE, con esto solamente actualizaremos los registros que cumplan con las condiciones dadas (si no defines condiciones, todos los registros de la tabla serán actualizados).

ITSJM – Informática y Reparación de Computadores

Página 29


Semestre II: Base de Datos II

Veamos un ejemplo de este tipo:

3.7. Comando DELETE Esta sentencia sirve para eliminar registros de una tabla. Al igual que la sentencia UPDATE se puede acompañar de la sentencia WHERE para eliminar solamente los registros que cumplan con las condiciones, de lo contrario todos los registros de la tabla serán borrados.

Veamos un ejemplo:

3.8. TRUNCATE Con esta sentencia podemos vaciar una tabla completa reiniciando las secuencias en columnas autoincrementales.

ITSJM – Informática y Reparación de Computadores

Página 30


Semestre II: Base de Datos II

UNIDAD 4: OPERADORESLOGICOS YDECOMPARACION 4.1. OPERADORES LÓGICOS En SQL, todos los operadores lógicos se evalúan a TRUE, FALSE, o NULL (UNKNOWN). En MySQL, se implementan como 1 (TRUE), 0 (FALSE), y NULL. La mayoría de esto es común en diferentes servidores de bases de datos SQL aunque algunos servidores pueden retornar cualquier valor distinto a cero para TRUE. 4.1.1. NOT(!) NOT lógica. Se evalúa a 1 si el operando es 0, a 0 si el operando es diferente a cero, y NOT NULL retorna NULL.

El último ejemplo produce 1 porque la expresión se evalúa igual que (!1)+1. 4.1.2. AND(&&) ANDlógica. Seevalúa a 1 si todos losoperandos son distintos acero yno NULL, a 0 si unoo más operandos son 0, de otro modo retorna NULL.

ITSJM – Informática y Reparación de Computadores

Página 31


Semestre II: Base de Datos II

4.1.3. OR ( || ) OR lógica. Cuando ambos ooperandos son no NULL, el resultado es 1 si algún operando es diferente a cero, y 0 de otro modo. Con un operando NULL el resultado es 1 si el otro operando no escero, y NULL de otro modo. Si ambos operandos son NULL, el resultado es NULL.

4.2. Reglas para las comparaciones de valores MySQL sigue las siguientes reglas a la hora de comparar valores: 

Si unoolos dosvalores acomparar son NULL, el resultado es NULL, excepto conel operador <=>, de comparación con NULL segura.

Si los dos valores de la comparación son cadenas, se comparan como cadenas.

Si ambos valores son enteros, se comparan como enteros.

Los valores hexadecimales se tratan como cadenas binarias, si no se comparan con unnúmero.

Si uno de los valores es del tipo TIMESTAMP o DATETIME y el otro es una constante, la constantes se convierte a timestamp antes de que se lleve a cabo la comparación. Hayque tener encuenta que esto nosehacepara los argumentos de una expresión IN(). Para estar seguro, es mejor usar siempre cadenas completas datetime/date/time strings cuando se hacen comparaciones.

ITSJM – Informática y Reparación de Computadores

Página 32


Semestre II: Base de Datos II

En el resto de los casos, los valores se comparan como números en coma flotante.

4.3. OPERADORES DE COMPARACIÓN Para crear expresiones lógicas, a las que podremos aplicar el álgebra de Boole, disponemos de varios operadores de comparación. Estos operadores se aplican a cualquier tipo de columna: fechas, cadenas, números, etc, y devuelven valores lógicos: verdadero o falso (1/0). Los operadores de comparación son los habituales en cualquier lenguaje de programación, pero además, MySQL añade varios más que resultan de mucha utilidad, ya que son de uso muy frecuente. 4.3.1. Operadordeigualdad El operador = compara dos expresiones, y da como resultado 1 si son iguales, o 0 si son diferentes.

4.3.2.

Operador de igualdad con NULL seguro

El operador <=> funciona igual que el operador =, salvo que si en la comparación una o ambas de las expresiones es nula el resultado no es NULL. Si se comparan dos expresiones nulas, el resultado es verdadero:

ITSJM – Informática y Reparación de Computadores

Página 33


Semestre II: Base de Datos II

4.3.3. Operador de desigualdad MySQL dispone de dos operadores equivalente para comprobar desigualdades, <> y !=. Si las expresiones comparadas son diferentes, el resultado es verdadero, y si son iguales, el resultado es falso:

4.3.4.

Operador LIKE

Este operador se aplica a datos de tipo cadena y se usa para buscar registros, es capaz de hallar coincidencias dentro de una cadena bajo un patrón dado, por ejemplo: ¿Qué empleados su primer apellido comienza por "R"? Veamos primero la consulta SQL que responde a esto:

ITSJM – Informática y Reparación de Computadores

Página 34


Semestre II: Base de Datos II

El interés de la anterior consulta se centra en la expresión: APELLIDOS like 'R%' donde "like" es el operador, APELLIDOS es el operando variable que toma valores para cada registro de la tabla EMPLEADOS, y el operando constante: "R%", es un patrón de búsqueda donde el "%" representa un comodín que junto con el operador LIKE tiene el cometido de reemplazar a cualquier cadena de texto, incluso la cadena vacía, para evaluar la expresión booleana. De modo que cualquier valor que haya en el campo APELLIDOS que empiece por una "R" seguida de cualquier cosa(%) dará cierto para laexpresión: APELLIDOS like 'R%'. Veamos otro ejemplo: ¿Qué empleados su segundo apellido termina en "N"? En este caso interesa que el campo APELLIDOS empiece por cualquier cosa y acabe con una "N", por lo tanto la expresión que nos filtrará adecuadamente esto es: APELLIDOS like '%N'

Obsérvese como en este caso el "%" debe aparecer antes que la "N" en el patrón de búsqueda, puesto que queremos que los apellidos acaben en "N" y no que comiencen por "N".

ITSJM – Informática y Reparación de Computadores

Página 35


Semestre II: Base de Datos II

En MySQL la comparación de cadenas por defecto no es sensible a mayúsculas, de ahí que aun indicando una "N" mayúscula encuentre los apellidos acabados en "n" minúscula. Veamos una última aplicación de este recurso. ¿Qué devuelve esta consulta?:

Pues está devolviendo aquellos registros que el campo APELLIDOS contiene la cadena: "AR", ya sea al principio, al final, o en cualquier posición intermedia. De ahí que en el patrón de búsqueda encontremos la cadena"AR" acompañadade comodinesa amboslados. 4.4. Operadoresdecomparación demagnitud Disponemos de loscuatro operadorescorrientes.

Estos operadores también permiten compararcadenas, fechas, y por supuesto, números:

ITSJM – Informática y Reparación de Computadores

Página 36


Semestre II: Base de Datos II

Cuando se comparan cadenas, se considera menor la cadena que aparezca antes por orden alfabético. Si son fechas, se considera que es menor cuanto más antigua sea. Pero cuidado, como vemos en el segundo ejemplo, si comparamos cadenas que contienen números, no hay conversión, y se comparan las cadenas tal como aparecen. 4.5. Verificar pertenencia a un rango Entre los operadores de MySQL, hay uno para comprobar si una expresión está comprendida en un determinado rango de valores. La sintaxis es:

En realidad es un operador prescindible, ya que se puede usar en su lugar dos expresiones de comparación y el operador AND. Estos dos ejemplos son equivalentes:

ITSJM – Informática y Reparación de Computadores

Página 37


Semestre II: Base de Datos II

Del mismo modo, estas dos expresiones también lo son:

ITSJM – Informática y Reparación de Computadores

Página 38


Semestre II: Base de Datos II

UNIDAD 5: FUNCIONES DEAGREGADO Son funciones que nos permiten realizar operaciones sobre los registros de bases de datos, hay que tomar en cuenta que todas las funciones de agregado a excepción de count,ignoran los valores null. Con las funciones de agregado podemos obtener de un conjunto de datos, el promedio, el número de elementos, el elemento primero y último, el mínimo y máximo, entre otras. Dentrode una función de agregado no es posible utilizar otra función de agregado. Para averiguar el valor máximo o mínimo de un campo usamos las funciones "max ()" y "min ()" respectivamente. 5.1. SUM La función "sum()" retorna la suma de los valores que contiene el campo especificado. Por ejemplo, queremos saber la cantidad de libros que tenemos disponibles para la venta: select sum(cantidad) from libros; También podemos combinarla con "where". Por ejemplo, queremos saber cuántos libros tenemos de la editorial "Planeta": select sum(cantidad) from libros where editorial ='Planeta'; 5.2. MAX YMIN Para averiguar el valor máximo o mínimo de un campo usamos las funciones "max()" y "min()" respectivamente. Ejemplo, queremos saber cuál es el mayor precio de todos los libros: selectmax(precio) fromlibros; Queremos saber cuál es el valor mínimo de los libros de "Rowling": select min(precio) from libros where autor like '%Rowling%'; 5.3. COUNT Devuelve el número de elementos de un grupo. COUNT funciona como la función COUNT_BIG. La única diferencia entre ambas funciones está en los valores devueltos. COUNT siempre devuelve un valor de tipo de datos int. COUNT_BIG siempre devuelve un

ITSJM – Informática y Reparación de Computadores

Página 39


Semestre II: Base de Datos II

valor de tipo de datos bigint. Tenga en cuenta que no debe haber espacio entre el nombre de la función y el paréntesis, porque puede confundirse con una referencia a una tabla o campo. Las siguientes sentencias son distintas: select count(*) from libros; select count (*) from libros; La primera es correcta, la segunda incorrecta. 5.4. AVG La función avg() retorna el valor promedio de los valores del campo especificado. Por ejemplo, queremos saber el promedio del precio de los libros referentes a "PHP": select avg(precio) from libros where titulo like '%PHP%'; Estas funciones se denominan "funciones de agrupamiento" porque operan sobre conjuntos de registros, no con datos individuales. 2.5.Problemas resueltos. 1. Obtener todos los datos de la tabla Empleados. Solución:

2. Obtener los nombres y las fechas de ingreso de los empleados. Solución: Formalmente, queremos obtener las columnas Nombre, Fecha_ingreso de todas las filas de la tabla Empleados. La consulta es:

ITSJM – Informática y Reparación de Computadores

Página 40


Semestre II: Base de Datos II

3. Obtener los datos de los empleados que ganan más de 10500,50. Solución: Queremos obtener todas las columnas de las filas de Empleados para las cuales Salario es mayor que 10500,50.

Obsérvese el uso del punto decimal. Las comas no se pueden utilizar ni en lugar del punto decimal ni para separar los miles.

4. Queremosobtenerlosdatosdel funcionario Carlos Zaltzman. Solución: Se trata de obtener una fila de Empleados, aquella en la cual el nombre del funcionario es Carlos Zaltzman.

5. ¿Qué empleados ingresaron el 3 de enero del 2000?. Solución: Se trata de obtener filas de Empleados, aquellas en las cuales la fecha de

ITSJM – Informática y Reparación de Computadores

Página 41


Semestre II: Base de Datos II

ingreso sea '2000-1-3'. El formato apropiado para la fecha es Año-Mes-Día. La consulta es:

6. ¿Qué empleados ingresaron en fecha posterior al 1º de enero del 2000? Solución: Queremos obtener las filas de Empleados con fecha de ingreso mayor que '2000-1-1'. La consultaes:

7. ¿Qué empleados ingresaron el 5 de enero del 2000 o en una fecha posterior? Solución: La fecha de ingreso debe ser mayor o igual a '2001-1-5'.

8. Obtener una lista de los nombres de los clientes de los cuales no se tiene dirección. Solución: Se trata de obtener la columna Nombre de las filas de la tabla Clientes cuya dirección es NULL.

ITSJM – Informática y Reparación de Computadores

Página 42


Semestre II: Base de Datos II

9. Sacar una lista de los nombres y direcciones de los clientes de los cuales sí se tiene la dirección.

Solución: Se trata de obtener la columnas Nombre, Direccion de las filas de la tabla Clientes que tienen direcciones que no sean NULL.

10. Obtener una lista de los diferentes salarios que se pagan en la empresa. Solución:

11. Obtener una lista ordenada alfabéticamente de los nombres y direcciones de los clientes, ordenados por nombre.

ITSJM – Informática y Reparación de Computadores

Página 43


Semestre II: Base de Datos II

Solución:

12. Obtener una lista de todos los datos de los empleados ordenados por nombre.

Solución:

13. Obtener unalista delos datos delos empleados ordenados por salario en forma descendente. Los salarios deben ser formateados con comas cada 3 dígitos y dos decimales después del punto yalineados a la derecha, por ejemplo, 1,200,340.50.

Solución:

14. Igual al anterior pero se quiere que los números salgan formateados con puntos cada 3

ITSJM – Informática y Reparación de Computadores

Página 44


Semestre II: Base de Datos II

dígitos y coma decimal, en vez de punto. Por ejemplo, 1.200.340,50 . Solución:

Si bien es un procedimiento complicado, para usarlo en otro caso sólo hay que copiar la parte que comienza con REPLACE y termina en el paréntesis antes de AS Salario y hacer los siguientes cambios: 1. Cambiar la columna Salario por la que se vaya a usar. 2. Eventualmente cambiar el número de decimales después de la coma, que figura dentro de la función FORMAT, de 2 al valor que se desee. 3. Si es conveniente, variar el ancho de la columna. Este ancho aparece dentro de la función LPAD. En este ejemplo vale 12. El ancho debe ser suficiente para poder escribir todos los valores que aparezcan en la columna, con el número de decimales que se haya solicitado.

3. SELECT(comocalculadora) Se puede usar la cláusula SELECT para hacer cálculos aritméticos. Ejemplos:

ITSJM – Informática y Reparación de Computadores

Página 45


Semestre II: Base de Datos II

Oeste otro:

Usado COUNT (DISTINCT ....) para contar cuántos elementos distintos hay en una expresión calculada en base a una columna. Búsqueda de texto. A menudo tenemos columnas que son cadenas de caracteres, y queremos buscar las cadenasquecontienenciertapalabra. Estoserealizaatravésdeunnuevotipode condición: Nombre_de_columna LIKE cadena_de_caracteres. Por ejemplo Nombre LIKE „CARLOS‟

Valor de la columna A 'Carlos'

Verdader

'carlos'

Verdader

ITSJM – Informática y Reparación de Computadores

Página 46


Semestre II: Base de Datos II

'Carlos '

Falsa

'Juan'

Falsa

'Juan Carlos'

Falsa

Valor de la columna A 'Carlos'

Verdade

'carlos'

Verdade

'Juan carlos'

Verdade

'Juan Carlos Rodríguez'

Falsa

'Juan Carlos '

Falsa

Valor de la columna A 'Carlos'

Verdade

'carlos'

Verdade

' carlos '

Verdade

'Juan Carlos Rodríguez'

Verdade

'Juan'

Falsa

ITSJM – Informática y Reparación de Computadores

Página 47


Semestre II: Base de Datos II

Problemas resueltos 1. Listar el artículo cuyo código es 'mon20'. Solución:

2. Hacer una lista de todos los datos de los artículos en cuyo nombre figura la palabra monitor Solución:

ITSJM – Informática y Reparación de Computadores

Página 48


Semestre II: Base de Datos II

Obsérvese que aunque la palabra monitor esté en la columna Nombre con mayúscula, igualmente aparece en el resultado de laconsulta. 3. Listar todos los datos de los artículos cuyo código comience por „mon‟ Solución:

4. Listar los artículos cuyo código termine Solución:

5. Listar los artículos cuyo código tenga exactamente dos caracteres. Solución:

ITSJM – Informática y Reparación de Computadores

Página 49


Semestre II: Base de Datos II

No hay ninguno. Entonces MySQL responde "Empty set", es decir, "Conjunto Vacío".

6.

Listar todos los artículos en cuyo nombre NO figure la palabra "monitor".

Solución:

Unión de dos tablas de resultados.

UNION ALL indica que se haga la unión de dos resultados, simplemente escribiendo una tabla debajo de la otra. Por ejemplo, si queremos los artículos y cantidades de las ventas a los clientes 1 y 2, basta escribir

(SELECT Articulo, Cantidad FROM Ventas WHERE Cliente=1) UNION ALL (SELECT Articulo, Cantidad FROM Ventas WHERE Cliente=2);

ITSJM – Informática y Reparación de Computadores

Página 50


Semestre II: Base de Datos II

BIBLIOGRAFÍA  http://www.mysqlya.com.ar/temarios/descripcion.php?cod=33&punto=34  GUEBS,

http://manuales.guebs.com/mysql-5.0/functions.html#comparison-operators

 MYSQL CON CLASE, (2005), http://mysql.conclase.net/curso/?cap=010a  AULA FACIL.COM, http://www.aulafacil.com/mysql/curso/Lecc-19.htm  DELETESQL.COM, http://deletesql.com/viewtopic.php?f=5&t=16  PROGRAMACIÓN

EN

CASTELLANO,

(2014),

http://programacion.net/articulo/tutorial_basico_de_mysql_189/11

ITSJM – Informática y Reparación de Computadores

Página 51


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.