1. UNASAM – FC – INGENIERIA DE SISTEMAS E INFORMATICA
2014
Manual de Comandos MySQL
(Parte 2)
1.- Otras formas de insertar registros a una tabla.
INSERT INTO categoria (titulo, descripcion)
VALUES ('PHP','Categoría dedicada a PHP'),
('MySQL','Categoría dedicada a MySQL'),
('Javascript','Categoría dedicada a Javascript');
2.- uso del select y sus formas
SELECT columnas
FROM tablas
[WHERE condiciones]
[GROUP BY tipo_grupo]
[HAVING de dónde]
[ORDER BY tipo_orden]
[LIMIT tipo_limite];
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID
HAVING SUM(LineTotal) > 100000.00
ORDER BY SalesOrderID ;
SELECT *
FROM articulo
LIMIT 0,2;
3.- Selecciones en múltiples tablas (INNER JOIN o CROSS JOIN):
Supongamos que tenemos una Tabla Mysql llamada “Empresas” y otra tabla “Servicios”.
Y nos interesa mostrar en pantalla los servicios que brinda cada empresa, considerando que cada
fila de la tabla “Servicios” tiene un valor asociado a la empresa que pertenece.
Programación II - Comandos básicos de MySQL (Parte 1)
Página 1
2. UNASAM – FC – INGENIERIA DE SISTEMAS E INFORMATICA
2014
¿Cómo listar todas las empresas y sus servicios correspondientes?
Lo hacemos utilizando INNER JOIN mediante la siguiente Consulta Mysql:
select Empresas.Nombre,Servicios.Servicio
from Empresas
inner join Servicios on Servicios.IdEmpresa=Empresas.Id;
Como se puede observar en el resultado, la empresa YouTube queda afuera del listado. El motivo
es que no tiene ningún servicio asociado en la tabla SERVICIOS (no existe servicio que tenga
IdEmpresa=3).
Si quisieramos listar todas las empresas, independientemente que tengan servicios o no, debemos
utilizar la Consulta Mysql LEFT JOIN
4.- LEFT JOIN: Consulta Mysql para Unir Tablas Relacionadas
La consulta Mysql LEFT JOIN devuelve todas las filas de la tabla citada en la cláusula “FROM” y
sus filas vinculadas en la tabla citada dentro de la cláusula “LEFT JOIN” (incluyendo aquellas filas
que no tengan filas vinculadas).
¡Vayamos a la práctica! Cuando analizamos el ejemplo de INNER JOIN en Mysql teníamos el
siguiente esquema de tablas:
Programación II - Comandos básicos de MySQL (Parte 1)
Página 2
3. UNASAM – FC – INGENIERIA DE SISTEMAS E INFORMATICA
2014
Al efectuar un INNER JOIN entre la tabla Empresas y la tabla Servicios, observábamos que la
empresa Youtube.com (Id=3) quedaba fuera del listado resultado puesto que no existe ninguna fila
en la tabla Servicios con IdEmpresa=3.
En el caso del ejemplo, LEFT JOIN nos sirve para listar TODAS las empresas y sus servicios
correspondientes. Las empresas que no tienen ningún servicio también formarán parte del
resultado. (en el caso de INNER JOIN, las empresas que no tienen servicio quedaban afuera).
select Empresas.Nombre,Servicios.Servicio
from Empresas
left join Servicios on Empresas.Id=Servicios.IdEmpresa;
Siguiendo el ejemplo ¿cómo podríamos listar todos los servicios y las empresas que lo brindan,
incluyendo los servicios que no son brindados por ninguna empresa?
Lo hacemos a través de la consulta Mysql RIGHT JOIN que funciona similar a LEFT JOIN pero en
viceversa. Es decir, se listan todas las filas de la tabla Mysql citada en la cláusula “RIGHT JOIN”,
incluyendo aquellas que no tienen ninguna fila vinculada en la tabla citada dentro de la cláusula
“FROM”.
select Empresas.Nombre,Servicios.Servicio
from Empresas
right join Servicios on Empresas.Id=Servicios.IdEmpresa;
5.- Operador LIKE en MYSQL para buscar filas que contengan un dato
Cuando necesitamos buscar filas Mysql que “contengan” determinada información, sin necesidad
de coincidir exactamente, utilizamos el operador like con ayuda del operador “%”
Nota: El operador “%” actúa cómo comodin, es decir, delante y detrás del mismo puede haber
cualquier contenido.
select *
from Empresas
where Actividad like '%Registro de dominios%';
6.- Otros operadores relacionales (between - in )
Hemos visto los operadores relacionales:
= (igual), <> (distinto), > (mayor), < (menor), >= (mayor o igual), <= (menor o igual), is null/is not
null (si un valor es NULL o no).
Existen otros que simplifican algunas consultas:
Para recuperar de nuestra tabla "libros" los registros que tienen precio mayor o igual a 20 y menor
o igual a 40, usamos 2 condiciones unidas por el operador lógico "and":
select * from libros
where precio>=20 and precio<=40;
Programación II - Comandos básicos de MySQL (Parte 1)
Página 3
4. UNASAM – FC – INGENIERIA DE SISTEMAS E INFORMATICA
2014
Podemos usar "between":
select * from libros
where precio between 20 and 40;
“between" significa "entre". Averiguamos si el valor de un campo dado (precio) está entre los
valores mínimo y máximo especificados (20 y 40 respectivamente).
Si agregamos el operador "not" antes de "between" el resultado se invierte.
Para recuperar los libros cuyo autor sea 'Paenza' o 'Borges' usamos 2 condiciones:
select * from libros
where autor='Borges' or autor='Paenza';
Podemos usar "in":
select * from libros
where autor in('Borges','Paenza');
Con "in" averiguamos si el valor de un campo dado (autor) está incluido en la lista de valores
especificada (en este caso, 2 cadenas).
Para recuperar los libros cuyo autor no sea 'Paenza' ni 'Borges' usamos:
select * from libros where autor<>'Borges' and autor<>'Paenza';
También podemos usar "in" :
select * from libros
where autor not in ('Borges','Paenza');
7.- Concatenar dos o más campos en MySQL
SELECT CONCAT( `direccion`, ' - ', `ciudad`, '/', `codigopostal`)
SELECT Nombre + ' ' + Apellido FROM clientes
8.- Uso del ALTER en MySQL
create table alumno (
codalum varchar(10) not null comment 'el codigo e alumno',
nomalum varchar(25) not null,
apealum varchar(25) not null,
codcarr varchar(8) not null,
primary key(codalum),
foreign key(codcarr) references carrerra(codcarr))
engine=innodb;
create table alumno (
codalum varchar(10) not null comment 'el codigo e alumno',
nomalum varchar(25) not null,
apealum varchar(25) not null,
codcarr varchar(8) not null,
primary key(codalum),
Programación II - Comandos básicos de MySQL (Parte 1)
Página 4
5. UNASAM – FC – INGENIERIA DE SISTEMAS E INFORMATICA
2014
foreign key(codcarr) references carrerra(codcarr))
engine=innodb;
Para adicionar una columna se realiza de la siguiente manera
alter table alumno
add column genero varchar(20)
o
alter table alumno
add column fecnac date not null
Si queremos eliminar una columna se procede de la siguiente manera:
alter table alumno
drop column fecnac
Supongamos Que Creamos La Tabla Matricula
create table matricula(
nommat varchar(10) not null,
fecmatr date not null)
y ahora queremos adicionarle su clave primaria procederemos de la siguiente manera
alter table matricula
add primary key(nommat)
Adiciono un campo mas
alter table matricula
add column codalum varchar(10) not null
luego creamos una clave foranea
alter table matricula
add constraint
foreign key(codalum) references alumno (codalum);
Modificar o cambiar el nombre de una tabla
rename table alumno to alumnos
Motores e mysql
MyISAM y el INNODB
9.- FUNCIONES EN MYSQL
Si consideramos que MySQL es rico en lo que respecta a operadores, en lo que se refiere a
funciones, podemos considerarlo millonario. MySQL dispone de multitud de funciones.
Pero no las explicaremos aquí, ya que este curso incluye una referencia completa. Tan sólo las
agruparemos por tipos, e incluiremos los enlaces correspondientes a la documentación de cada
una.
Programación II - Comandos básicos de MySQL (Parte 1)
Página 5
6. UNASAM – FC – INGENIERIA DE SISTEMAS E INFORMATICA
2014
Funciones de control de flujo
Las funciones de esta categoría son:
IF
IFNULL
NULLIF
Elección en función de una expresión booleana
Elección en función de si el valor de una expresión es NULL
Devuelve NULL en función del valor de una expresión
1.- IF()
SELECT IF(1<>2,'Es Verdad','Es Mentira');
SELECT IF(2=2,1,2);
2.- IFNULL(expr1, expr2)
Esta funcion devuelve expr1, si expr1 es diferente de null, en caso contrario devuelve expr2
select ifnull(4,30) resultado; devuelve 4
select ifnull(null,30) resultado; devuelve 30
3.- NULLIF(expr1,expr2)
Esta funcion devuelve null si expr1=expr2 de lo contrario devuelve expr2
select NULLIF(4,4) resultado; Retorna Null
select NULLIF(5,4) resultado; Retorna 5
Funciones matemáticas
Las funciones de la categoría de matemáticas son:
ABS
ACOS
ASIN
ATAN y ATAN2
CEILING y CEIL
COS
COT
CRC32
DEGREES
EXP
FLOOR
LN
LOG
LOG10
LOG2
MOD o %
PI
POW o POWER
RADIANS
Devuelve el valor absoluto
Devuelve el arcocoseno
Devuelve el arcoseno
Devuelven el arcotangente
Redondeo hacia arriba
Coseno de un ángulo
Cotangente de un ángulo
Cálculo de comprobación de redundancia cíclica
Conversión de grados a radianes
Cálculo de potencias de e
Redondeo hacia abajo
Logaritmo natural
Logaritmo en base arbitraria
Logaritmo en base 10
Logaritmo en base dos
Resto de una división entera
Valor del número π
Valor de potencias
Conversión de radianes a grados
Programación II - Comandos básicos de MySQL (Parte 1)
Página 6
7. UNASAM – FC – INGENIERIA DE SISTEMAS E INFORMATICA
RAND
ROUND
SIGN
SIN
SQRT
TAN
TRUNCATE
2014
Valores aleatorios
Cálculo de redondeos
Devuelve el signo
Cálculo del seno de un ángulo
Cálculo de la raíz cuadrada
Cálculo de la tangente de un ángulo
Elimina decimales
1.- ABS (num).- Devuelve el valor absoluto de un valor numérico
Abs(2) Retorna 2
Abs(-22) Retorna 22
Funciones de cadenas
Las funciones para tratamiento de cadenas de caracteres son:
ASCII
BIN
BIT_LENGTH
CHAR
CHAR_LENGTH o
CHARACTER_LENGTH
COMPRESS
CONCAT
CONCAT_WS
CONV
ELT
EXPORT_SET
FIELD
FIND_IN_SET
HEX
INSERT
INSTR
LEFT
LENGTH u OCTET_LENGTH
LOAD_FILE
LOCATE o POSITION
LOWER o LCASE
LPAD
LTRIM
MAKE_SET
OCT
ORD
QUOTE
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
Valor de código ASCII de un carácter
Converión a binario
Cálculo de longitud de cadena en bits
Convierte de ASCII a carácter
Cálculo de longitud de cadena en caracteres
Comprime una cadena de caracteres
Concatena dos cadenas de caracteres
Concatena cadenas con separadores
Convierte números entre distintas bases
Elección entre varias cadenas
Expresiones binarias como conjuntos
Busca el índice en listas de cadenas
Búsqueda en listas de cadenas
Conversión de números a hexadecimal
Inserta una cadena en otra
Busca una cadena en otra
Extraer parte izquierda de una cadena
Calcula la longitud de una cadena en bytes
Lee un fichero en una cadena
Encontrar la posición de una cadena dentro de otra
Convierte una cadena a minúsculas
Añade caracteres a la izquierda de una cadena
Elimina espacios a la izquierda de una cadena
Crea un conjunto a partir de una expresión binaria
Convierte un número a octal
Obtiene el código ASCII, incluso con caracteres multibyte
Entrecomilla una cadena
Construye una cadena como una repetición de otra
Busca una secuencia en una cadena y la sustituye por
otra
Invierte el orden de los caracteres de una cadena
Devuelve la parte derecha de una cadena
Inserta caracteres al final de una cadena
Elimina caracteres blancos a la derecha de una cadena
Programación II - Comandos básicos de MySQL (Parte 1)
Página 7
8. UNASAM – FC – INGENIERIA DE SISTEMAS E INFORMATICA
SOUNDEX
SOUNDS LIKE
SPACE
SUBSTRING o MID
SUBSTRING_INDEX
TRIM
UCASE o UPPER
UNCOMPRESS
UNCOMPRESSED_LENGTH
UNHEX
2014
Devuelve la cadena "soundex" para una cadena concreta
Compara cadenas según su pronunciación
Devuelve cadenas consistentes en espacios
Extraer subcadenas de una cadena
Extraer subcadenas en función de delimitadores
Elimina sufijos y/o prefijos de una cadena.
Convierte una cadena a mayúsculas
Descomprime una cadena comprimida mediante
COMPRESS
Calcula la longitud original de una cadena comprimida
Convierte una cadena que representa un número
hexadecimal a cadena de caracteres
Consultar:
http://www.aulafacil.com/mysql/curso/Temario.htm
http://mysql.conclase.net
http://www.es.hscripts.com/tutoriales/mysql/
Programación II - Comandos básicos de MySQL (Parte 1)
Página 8