Tutorial basico de mysql

21
IAL BÁSICO DE

description

 

Transcript of Tutorial basico de mysql

Page 1: Tutorial basico de mysql

TUTORIAL BÁSICO DE MYSQL

Page 2: Tutorial basico de mysql

mysql

• mysql es sistema de gestion de base de datos relacional.• mysql es de fuente abierta cualquiera lo puede usar y modificar).•Esta hecho en lenguaje C y es un compilador.• sql es el Lenguaje de Consulta Estructurado.• Con mysql se puede instala como servidor y se hacen conexiones tipo cliente al servidor.

El lenguaje consta de:a) comandos.b) clausulas.c) operadores.d) funciones de agregado.

Page 3: Tutorial basico de mysql

Tipos de comandos de sqla) DLL : permite crear y definir nuevas bases de datos, campos e

indices.• CREATE : permite crear nuevas tablas.• DROP : permite eliminar tablas e indices.• ALTER: permite modificar tablas agregando campos, o cambiando la

definicion de los campos.b) DML : permite generar consultas para ordenar, filtrar, y extrar datos

de la base de datos.• SELECT: Utilizado para consultar registros de la base de dato que satisfagan un criterio determinado. • INSERT: Utilizado para cargar lotes de datos en la base de datos en una única operación.• UPDATE: Utilizado para modificar los valores de los campos y registros especificados.• DELETE: Utilizado para eliminar registros de una tabla de una base de datos.

Page 4: Tutorial basico de mysql

Cláusulas

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.

•FROM: Utilizada para especificar la tabla de la cual se van a seleccionar los registros.•WHERE: Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar.•GROUP BY: Utilizada para separar los registros seleccionados en grupos específicos.•HAVING: Utilizada para expresar la condición que debe satisfacer cada grupo.•ORDER BY: Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico.

Page 5: Tutorial basico de mysql

Operadores Lógicos

•AND: Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.•OR: Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta.•NOT: Negación lógica. Devuelve el valor contrario de la expresión.

Page 6: Tutorial basico de mysql

Funciones de Agregado

Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros. •AVG: Utilizada para calcular el promedio de los valores de un campo determinado.•COUNT: Utilizada para devolver el número de registros de la selección. •SUM: Utilizada para devolver la suma de todos los valores de un campo determinado.•MAX: Utilizada para devolver el valor más alto de un campo especificado.•MIN: Utilizada para devolver el valor más bajo de un campo especificado.

Page 7: Tutorial basico de mysql

Crear una tabla (CREATE) 

Vamos a crear una tabla llamada empleado en alguna base de datos, por ejemplo test.

test=> CREATE TABLE empleado (test(>              nombre VARCHAR(20),test(>              apellido VARCHAR(20),test(>              sueldo FLOAT,test(>              sexo CHAR(1),test(>              edad INTEGER,test(>              transaccion TIMESTAMP DEFAULT      CURRENT_TIMESTAMP,test(>              ingreso DATE); 

Page 8: Tutorial basico de mysql

Insertar datos (INSERT)

test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad, ingreso) VALUEStest-> ('Javier', 'Ramírez', 34452.89, 'M', 23, '4-06-08');

Observamos que se ponen las columnas en las que se va a insertar, no se puso la columna transacción ya que esta se inserta por default con la hora y la fecha actuales. 

Page 9: Tutorial basico de mysql

Seleccionar (SELECT) 

Obtener toda la tabla empleado

test=> SELECT * FROM empleado; Obtener algunas columnas y todos los renglones de la tabla empleadotest=> SELECT apellido, sueldo, ingreso FROM empleado; 

Page 10: Tutorial basico de mysql

Seleccionar renglones específicos (WHERE)

En SELECT se usa la cláusula WHERE, donde se especifican los renglones que se quieren obtener. Por ejemplo el nombre y apellido de los empleados cuya edad sea mayor ó igual a 25 años.

test=> SELECT nombre, apellido FROM empleadotest-> WHERE edad >=25; O bien, los que su apellido sea Ramíreztest=> SELECT nombre, apellido FROM empleadotest-> WHERE apellido = 'Ramírez';

Como se trata de columnas tipo caracter, se usan apóstrofes y debe escribirse exactamente como esté en la base de datos.  

Page 11: Tutorial basico de mysql

Removiendo datos con DELETE (DELETE) 

Con DELETE podemos mover uno ó bien todos los renglones de una tabla, por ejemplo DELETE FROM empleado;  eliminaría todos los datos de la tabla empleado.  Si utilizamos la cláusula WHERE se eliminan los renglones que cumplan la condición, por ejemplo:

test=> DELETE FROM empleadotest-> WHERE ingreso = '2008-12-24’; 

Page 12: Tutorial basico de mysql

Modificando datos con UPDATE (UPDATE) 

En una base de datos además de insertar y eliminar datos hay que actualizar.  Por ejemplo, la edad del empleado Javier Pérez es de 35 años.

test=> UPDATE empleado SET edad = 35 WHERE apellido = 'Pérez';

La cláusula WHERE controla los renglones en los que se llevará a cabo la modificación.  Si no se pone esta cláusula, se cambiarían la edad de todos los empleados a 35.  

Page 13: Tutorial basico de mysql

Ordenando datos con ORDER BY (ORDER BY) 

Cuando hacemos un SELECT, los renglones se despliegan con un orden no determinado.  Si se quieren obtener los renglones en un orden específico, es necesario aumentar la cláusula ORDER BY al final del SELECT. 

test=> SELECT * FROM empleado ORDER BY apellido;

Para invertir el orden se usa DESC

test=> SELECT * FROM empleado ORDER BY edad DESC;

Se puede ordenar por distintas columnas, si en la primera hay dos valores iguales, se usa la siguiente para ver cual va primero. 

Page 14: Tutorial basico de mysql

Destruyendo tablas con DROP (DROP)

Cuando queremos eliminar completamente la tabla escribimos: DROP TABLE empleado;

•Si queremos eliminar todos los datos de una tabla pero conservar su estructura utilizamos (no ejecutarla):

DELETE FROM empleado;

Page 15: Tutorial basico de mysql

Uso de AND/OR (AND & OR) 

AND y OR se usan para conectar condiciones simples. Insertaremos más datos en empleado:

test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad, ingreso)VALUES ('María', 'Pérez', 2317.89, 'F', 23, '30-07-2005');

test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad, ingreso)VALUES ('Alejandro', 'Padilla', 4317.86, 'M', 24, '12-08-2006');

test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad, ingreso)VALUES ('Raquel', 'Carmona', 5817.86, 'F', 24, '15-02-2006');

test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad, ingreso)VALUES ('Armando', 'Pinillos', 7317.86, 'M', 24, '13-08-2005');

test=> INSERT INTO empleado (nombre, apellido, sueldo, sexo, edad, ingreso)test-> VALUES ('María', 'Romero', 11317.89, 'F', 23, '30-08-2004'); 

Page 16: Tutorial basico de mysql

AND se usa para combinar las dos comparaciones que conecta, ejemplo:

test=> SELECT * FROM empleado WHERE nombre='María' AND apellido='Pérez';

OR verifica que se cumpla una de las dos comparaciones al menos, ejemplo:test=> SELECT * FROM empleado WHERE sexo = 'F' OR edad = 24;

Si se combinan ANDs y ORs en un mismo query es mejor agrupar los ANDs y los ORs usando paréntesis. Los ANDs se evalúan primero. Por ejemplo, si se quieren los de apellido Pérez y que sean hombres ó mujeres si no usamos paréntesis el resultado es incorrecto, ya que se evalúa el AND primero:

test=> SELECT * FROM empleado WHERE apellido='Pérez' AND sexo='M' OR sexo='F';  

Me da los de apellido Pérez Y son de sexo M  pero también todos los de sexo F´, ya que primero se ejecuta el AND y después el OR.

Lo correcto es:test=> SELECT * FROM empleado WHERE apellido='Pérez' AND (sexo='M' OR sexo='F');   Este me da los que son de apellido Pérez y que son de sexo M ó F.  

Page 17: Tutorial basico de mysql

Between y Like (FROM) 

Si queremos aquéllos empleados que están entre 24 y 30 años de edad:

test=> SELECT * FROM empleado WHERE edad >= 24 AND edad <= 30;test=> SELECT * FROM empleado WHERE edad BETWEEN 24 AND  30;

Para obtener los datos de los empleados cuyo apellido  inicia con la letra  R:

test=> SELECT * FROM empleado WHERE apellido LIKE 'R%';

Obtener los que ingresaron en 2008:

test=> SELECT * FROM empleado WHERE ingreso LIKE '2008%';    

Page 18: Tutorial basico de mysql

COUNT

COUNT(*) = cuenta renglonesContar número de renglones

test=> SELECT COUNT(*) FROM empleado;

SUM

SUM(nombre_col) = totalObtener la suma de los sueldos

test=> SELECT SUM(sueldo) FROM empleado;

Page 19: Tutorial basico de mysql

MAX

MAX(nombre_col) = máximoObtener el sueldo máximo

test=> SELECT MAX(sueldo) FROM empleado;

MIN

MIN(nombre_col) = mínimoObtener la edad mínima

test=> SELECT MIN(edad) FROM empleado;

AVG

AVG(nombre_col) = promedioObtener el sueldo promedio

test=> SELECT AVG(sueldo) FROM empleado; 

Page 20: Tutorial basico de mysql

GROUP BY En los ejemplos anteriores  nos regresó un renglón como resultado y sólo se usó una columna con el agregado.

Usando los agregados con GROUP BY se tendrá la aplicación del agregado en una columna,  en los renglones agrupados por otra columna.

SELECT COUNT(*) FROM empleado, regresa el número de renglones en la tabla.Si queremos contar cuántos son sexo M y cuantos F:

test=> SELECT sexo, COUNT(*) FROM empleado GROUP BY sexo; 

Si por sexo se quiere saber datos del salario y de la edad:

test=> SELECT sexo,MIN(edad),MAX(edad),AVG(sueldo) FROM empleado GROUP BY sexo ORDER BY 4 DESC;  

Page 21: Tutorial basico de mysql

HAVING

Permite probar condiciones en los valores agregados. A menudo se usa con GROUP BY. Con HAVING se pueden incluir o excluir grupos basados en el valor de agregación para ese grupo. 

En el ejemplo de contar los empleados por sexo, podemos limitar para que despliegue solo aquéllos que sean más de 3, el query que cuenta empleados por sexo es:

test=> SELECT sexo, COUNT(*) FROM empleado GROUP BY sexo;

Sólo los que sean más de 3 empleados de ese sexo:

test=> SELECT sexo, COUNT(*) FROM empleado GROUP BY sexo HAVING COUNT(*)>3;