Tutorialmysql1 PDF
Tutorialmysql1 PDF
Tutorialmysql1 PDF
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:
Se sugiere al alumnado que explore, usando SELECT * FROM ... y DESCRIBE ...,
sobre las diversas tablas de la base de datos empresa.
7
En una tabla cada columna es de un tipo de datos. Para nuestros fines hay 3 grandes
tipos de datos: numéricos, cadenas de caracteres y fechas.
Los datos numéricos pueden ser enteros (int) o decimales (decimal). Los decimales
tienen una parte entera y una fraccionaria. Por ejemplo, un decimal puede valer 120.40.
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
Ejemplo :
Ejemplo:
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álculos con una columna numérica.
Ejemplos:
9
Ejemplo:
Ejemplo:
10
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:
11
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és del nombre de
una función.
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.
Ejemplo:
12
Ejemplo:
Este SELECT listará los clientes con nombre empezando en una letra anterior a "i" en el
alfabeto.
Ejemplo:
13
Ejemplo:
No debe usarse <> NULL. Produce resultados equivocados, en su lugar habría que usar
IS NOT NULL.
Expresión Significado
a=b a es igual a b
a=b a es igual a b
a <> b a es distinto de b
a<b a es menor que b
a>b a es mayor que b
a <= b a es menor o igual a b
a >= b a es mayor o igual a b
a IS NULL a es NULL
a IS NOT NULL 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.
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.
Ejemplos:
Listar los empleados cuya fecha de ingreso sea anterior al 2004, o cuyo salario sea
mayor que 50 ( o ambas cosas).
complicadas. Por ejemplo, supongamos que ahora queremos listar los empleados cuya
fecha de ingreso es anterior al 2004, o cuyo salario sea mayor que 50, pero no ambas
cosas a la vez. Entonces, debemos escribir :
El resultado es "Empty set", es decir, no hay filas que cumplan la condición. En el caso
de condiciones más complicadas se recomienda un amplio uso de paréntesis.
La cláusula ORDER BY produce una ordenación de las filas de salida del Query o
consulta. Se puede ordenar por una columna seleccionada.
15
a b c d
Por último, se puede ordenar por una cantidad calculada a partir de una o varias
columnas.
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
instalación puede haber otros clientes que operen 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
Hasta ahora hemos venido escribiendo a continuación del prompt mysql> del cliente
mysql.
Solución:
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.
Solución: Se trata de obtener una fila de Empleados, aquella en la cual el nombre del
funcionario es Carlos Zaltzman.
19
Solución: Queremos obtener las filas de Empleados con fecha de ingreso mayor que
'2000-1-1'. La consulta es:
8. Obtener una lista de los nombres de los clientes de los cuales no se tiene dirección.
20
Solución: Se trata de obtener la columna Nombre de las filas de la tabla Clientes cuya
dirección es NULL.
9. Sacar una lista de los nombres y direcciones de los clientes de los cuales sí se tiene
la dirección.
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.
Solución:
21
12. Obtener una lista de todos los datos de los empleados ordenados por nombre.
Solución:
13. Obtener una lista de los datos de los empleados ordenados por salario en forma
descedente. Los salarios deben ser formateados con comas cada 3 dígitos y dos
decimales después del punto y alineados 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 dígitos y coma decimal, en vez de punto. Por ejemplo, 1.200.340,50 .
Solución:
22
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:
Ejemplos:
O este otro:
52
usado COUNT (DISTINCT ....) para contar cuántos elementos distintos hay en
una expresión calculada en base a una columna.
A menudo tenemos columnas que son cadenas de caracteres, y queremos buscar las
cadenas que contienen cierta palabra. Esto se realiza a través de un nuevo tipo de
condición: Nombre_de_columna LIKE cadena_de_caracteres.
Estas condiciones pueden usarse, como todas, en una cláusula WHERE o en una
cláusula HAVING. La condición Nombre_de_columna LIKE cadena_de_caracteres
verdadera cuando el valor de
Nombre_de_columna coincide con cadena_de_caracteres (salvo que no se distingue
entre mayúsculas y minúsculas).
Valor de la columna A
'Carlos' Verdadera
'carlos' Verdadera
'Carlos ' Falsa
'Juan' Falsa
'Juan Carlos' Falsa
Valor de la columna A
'Carlos' Verdadera
'carlos' Verdadera
'Carlos Zaltzman' Verdadera
'Carlos ' Verdadera
'Juan' Falsa
'Juan Carlos' Falsa
53
Valor de la columna A
'Carlos' Verdadera
'carlos' Verdadera
'Juan carlos' Verdadera
'Juan Carlos Rodríguez' Falsa
'Juan Carlos ' Falsa
Valor de la columna A
'Carlos' Verdadera
'carlos' Verdadera
' carlos ' Verdadera
'Juan Carlos Rodríguez' Verdadera
'Juan' Falsa
Valor de la columna A
'Carlos' Falsa
'12Carlos' Verdadera
'xxCarlos' Verdadera
' Carlos' Verdadera
'xxcarlos' Verdadera
'Juan Carlos' Falsa
Problemas resueltos
54
Solución:
2. Hacer una lista de todos los datos de los artículos en cuyo nombre figura la
m
Solución:
Solución:
Solución:
55
Solución:
Solución:
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