jueves, 30 de octubre de 2008

MySQL 1


Bueno pues despues de un rato de ausencia a causa de un proyecto algo ambicioso que me consumio demasiado tiempo pues ya estamos de nuez por aca listo para postear algunas cosillas unas un tanto utiles o tras un tanto interesantes pero que sin duda a mas de uno les serviran.

Para comenzar en este blog voy a poner algunos comandos basicos de mysql, ya se que es algo muy sencillo pero estoy seguro que a mas de uno de vez en vez se nos olvida como demonios se hacia una insercion, una actualizacion, una consulta etc, asi que sin mas comencemos!!!!

Ah como nota, puede que no ponga de momento muchos comandos pero a lo largo de los dias ire actualizando este post asi que no lo critiquen tan severamente hasta pasadas algunas semanitas :)
nota: El mysql> no se pone es solo para indicar el inicio de la consola de MySQL =D, digo ahi por si algun atarantado se va con la finta :P.

CREAR BASE DE DATOS

create database nombre_de_la_BD;
ejem: create database my_firts_DB;


CREAR TABLA

mysql> create table nombre_tabla (
campo1 int ,
campo2 varchar (40) ,
campo3 varchar (30) ,
campo n tipo
) ;

create table SALES-REPRESENTATIVE (
EMPLOYEE-NO int ,
SURNAME varchar (40) ,
FIRST-NAME varchar (30) ,
COMMISSION tinyint
) ;
help:http://dev.mysql.com/doc/refman/5.0/es/creating-tables.html


AGREGAR UNA COLUMNA A UNA TABLA YA CREADA

mysql> ALTER TABLE tabla ADD columna_nueva TIPO;

ALTER TABLE ventas ADD edad integer(10);

help: El comando ALTER tiene mas usos que ya ire subiendo, por el momento si aqui no se encuentra lo que quieres modificar de tu estructura checa el siguiente link http://dev.mysql.com/doc/refman/5.0/es/alter-table.html


INSERTAR DATOS A TABLAS

mysql> INSERT INTO
sales_rep(employee_number,surname,first_name,commission)
VALUES(1, 'Rive', 'Sol',10);


LIMITAR RESULTADOS DE CONSULTA

mysql> SELECT first name,surname,commission FROM sales-rep
ORDER BY commission DESC LIMIT 2,3;

Este comando puede que no sea tan entendible como los anteriores pero lo que hace es con:

SELECT first name,surname,commission FROM sales-rep

realizar la consulta, luego con:

ORDER BY commission DESC

Me ordena el resultado de la consulta tomando en cuenta los valores de la columna comision, y los ordena de mayor a menor, si quisieramos que la ordenacion fueran de menor a mayor simplemente habria que quitar la parabra DESC, es decir quedaria:
ORDER BY commission

Y por ultimo para limitar el numero de resultados que me regresa mi query (para los despistes query es lo mismo que consulta) hacemos:

LIMIT 2,3

Donde el primer numero es el desplazamiento con respecto al primer resultado y el segundo es el numero de resultados al que estamos limitando la consulta, es decir si tenemos en una tabla los valores:

1
2
3
4
5
6
7

haciendo un LIMIT 2,3 los valores que me regresara el query seran 2,3,4. Es decir avanza dos posiciones y me cuenta 3 filas y esos valores son los retornados.

si ponemos solamente un numero, por ejemplo:

LIMIT 2

me regresara dos filas tomando como desplazamiento el 0, es decir considerando el ejemplo anterior nos regresara los valores 1,2 y con un LIMIT 5 regresara los valores 1,2,3,4,5, espero que alla quedado claro ;)


ELIMINAR REGISTROS (delete y truncate)

Con el delete eliminamos filas(registros, rows) de nuestra tabla.
nota: No podemos eliminar tan solo ciertas columnas, solo la fila completa.

mysql> DELETE FROM sales-rep WHERE employee-number = 5 ;
Query OK, 1 row a f f e c t e d ( 0 . 0 0 sec)

DELETE FROM `diario` WHERE `diario`.`id` = 214 LIMIT 1;

nota: si no usamos condiciones borraremos todos los registros de la tabla:

Si hacemos delete from alumnos; estaremos borrando todos los registros de la tabla alumnos

ahora bien, ya sabemos como eliminar un registro con la instruccion DELETE. Y acabo de mencionar que si no utiliza una clausula WHERE se eliminaran todos los registros de la tabla.

Un problema asociado a la eliminacion de registros utilizando este metodo es que puede resultar
muy lento si la tabla es de gran tamaño. Por suerte, existe otra forma de realizar dicha operacion.

La forma mas rapida de eliminar estos valores consiste en utilizar la instruccion
TRUNCATE.
A continuacion, utilizaremos dicha instruccion:

mysql> TRUNCATE customer_sales_values;

De esta manera habremos eliminado rapidamente todos los registros de nuestra tabla customer_sales_values.

GROUP BY(AGRUPAR RESULTADOS)

Para evitar nombres o informacion repetida agrupamos nuestra consulta dada una columna:

mysql> SELECT nombre SUM(edad) FROM alumnos GROUP BY nombre;

Con esto abremos agrupado a todas las personas con el mismo nombre y si por ejemplo teniamos 5 personas con nombre juan, ahora dicho nombre no me aparecera las 5 veces si no que gracias a la agrupacion ahora solamente aparecera juan una vez.

mysql> SELECT nombre ,apellido ,sales-rep,COUNT (*) AS count from sales, sales-rep WHERE sales-rep=employee-number
GROUP BY sales-rep , firs t-name , surname ORDER BY count LIMIT 1;

Con esta instruccion agrupamos solamente aquellas filas que tengan los campos sales-rep , firs t-name , surname iguales.

FECHA ACTUAL
SELECT CURRENT_DATE();//esta intruccion nos regresa la fecha actual de nuestro sistema.


UPDATE (MODIFICAR EL CONTENIDO DE UNA TABLA)

UPDATE tabla SET columna=nuevo_valor;
UPDATE employee SET commission=commission+5;//actualiza todas las filas de la tabla employee aumentandole 5 a la columna commission.

UPDATE employee SET commission=commission+5 WHERE eploy="veterinario";
//aumenta 5 en la columna comission unicamente a los empleados que sean veterinarios.

mysql> UPDATE sales-repl-2 set first_name = "Peggy" WHERE first_name="Peggy-Sue" ;

SELECCIONAR BASE DE DATOS

USE BD_a_ocupar;

ejemplo:
mysql> USE menagerie
Database changed

Las bases de datos sólo necesitan ser creadas una sola vez, pero deben ser seleccionadas cada vez que se inicia una sesión de mysql

DESCRIBIR UNA TABLA (VER CONTENIDO DE UNA TABLA CON DESC)
{DESCRIBE | DESC} tbl_name [col_name | wild]
Con esta instruccion podremos ver la estructura y el contenido de una tabla.
ejemplos equivalentes:

DESCRIBE mi_tabla;
DESC mi_tabla;



BORRAR TABLAS

drop table nombre_tabla;

ejemplo:
DROP TABLE mi_tablita;



REALIZAR UNA BUSQUEDA EN LA BD (SELECT)
Al proceso de busqueda en la BD tambien se le conoce como consulta o query.

1)SELECT columnas_a_seleccionar FROM nombre_de_la_tabla;
2)SELECT columnas_a_seleccionar FROM nombre_de_la_tabla WHERE condicion;

help: El select es de las estructuras mas complejas y potentes del lenguaje sql, las dos anteriormente mostradas, simplemente son las 2 mas basicas, para saber mas sobre las posibilidades del select consulte el siguiente link:http://dev.mysql.com/doc/refman/5.0/es/select.html

en columnas a seleccionar se pueden especificar las columnas que deseamos ver separadas entre si por comas, sin embargo si se quieren ver todas las columnas simplemente pondremos el caracter especial *.
ejemplos:

Select nombre from alumnos;//nos muestra todos los nombres dentro de la tabla alumnos

Select nombre, direccion, telefono from alumnos;

Select * from alumnos;// nos muestra toda la informacion contenida en la tabla alumnos.

La clausula WHERE sirve para limitar los resultados y acer una busqueda mas especifica, ejemplos:

SELECT * FROM alumnos WHERE nombre='Hugo'; //nos muestra toda la informacion de los alumnos que lleven por nombre Hugo.


Sólo hay dos tipos de lenguajes de programación: los lenguajes de los que la gente siempre se queja, y los lenguajes que nadie usa.