Si el administrador crea su base de datos en el mismo momento que le otorga privilegios, puede comenzar a utilizarla, de lo contrario necesitar crearla: mysql> CREATE DATABASE menagerie; En ambientes Unix, los nombres de las bases de datos son case sensitive (al contrario que las palabras clave), de modo que siempre debe referirse a su base de datos como menagerie, y no Menagerie, MENAGERIE, o una variante similar. Esto tambin se aplica a los nombres de tablas. Esta restriccin no existe en Windows, aunque puede utilizar el mismo esquema de maysculas cuando se refiera a bases de datos y tablas en una consulta dada. Al crear una base de datos, sta no se selecciona para su uso, debe hacerlo explicitamente. Para convertir amenagerie en la base de datos actual, use este comando: mysql> USE menagerie Database changed Las bases de datos slo necesitan ser creadas una sola vez, pero deben ser seleccionadas cada vez que se inicia una sesin de mysql. Puede hacerse a travs del comando USE como se muestra en el ejemplo, o puede indicar la base de datos en la linea de comandos al ejecutar mysql. Simplemente debe indicar el nombre de la base de datos a continuacin de los parmetros que necesite ingresar. Por ejemplo: shell> mysql -h host -u user -p menagerie Enter password: ******** Advierta en el comando anterior que menagerie no es la contrasea. Si se quisiera suministrar la contrasea en la linea de comandos, despus de la opcin -p, debe hacerse sin dejar espacios en blanco (por ejemplo, -pmypassword, no -p mypassword). De todos modos, colocar la contrasea en la linea de comandos no es recomendable porque lo expone a la vista de otros usuarios.
3.3.2. Crear una tabla La creacin de la base de datos ha sido una tarea sencilla, pero hasta ahora permanece vaca, como le muestra SHOW TABLES: mysql> SHOW TABLES; Empty set (0.00 sec) La parte difcil es decidir cmo debera ser la estructura de su base de datos: qu tablas necesitar, y qu columnas habr en cada tabla. Querr una tabla para contener un registro por cada mascota. Esta tabla puede llamarse pet, y debera contener, como mnimo, el nombre de cada animal. Dado que el nombre no es muy relevante por s mismo, tendra que tener ms informacin. Por ejemplo, si ms de una persona en su familia tendr mascotas, querr listar tambin el dueo de cada animal. Y algunos otros datos descriptivos bsicos, como especie y sexo. Qu hacer con la edad? Podra ser de inters, pero no es un buen dato para almacenar en una base de datos. La edad cambia a medida que pasa el tiempo, lo cual significa que debera actualizar la base de datos a menudo. En lugar de esto, es mejor almacenar un valor fijo, como la fecha de nacimiento. De este modo, cada vez que requiera saber la edad, podr calcularla como la diferencia entre la fecha de nacimiento y la fecha actual. MySQL provee funciones para realizar clculos con fechas, por lo que no es dificultoso. Almacenar la fecha de nacimiento en lugar de la edad tiene otras ventajas: Puede usar la base de datos para tareas como generar recordatorios para los prximos cumpleaos de mascotas. (Si piensa que este tipo de consultas no es importante, considere que es lo mismo que hara en un contexto de base de datos de negocios para identificar aquellos clientes a los que habr que enviar una tarjeta por su cumpleaos, para conseguir ese toque personal con la asistencia del ordenador). Puede calcular edades en relacin a otras fechas adems de la actual. Por ejemplo, almacenar la fecha de muerte de una mascota le posibilita calcular la edad que tena a ese momento. Probablemente pensar en otros tipos de informacin que resultaran tiles dentro de la tabla pet pero los identificados hasta ahora son suficientes: name (nombre), owner (propietario), species (especie), sex (sexo), birth (nacimiento) y death (muerte). Debe usar la sentencia CREATE TABLE para especificar la estructura de una tabla: mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); El tipo de dato VARCHAR es una buena eleccin para las columnas name, owner, y species porque los datos que all se almacenan no son de longitud uniforme. En realidad no es necesario que todas estas columnas tengan la misma longitud ni que sta sea 20. En MySQL 5.0.3 y versiones posteriores, normalmente se puede adoptar cualquier longitud entre 1 y 65535, segn lo que se crea ms razonable. (Nota: Anteriormente a MySQL 5.0.3, el lmite de longitud era 255.) Si en el futuro debiera aumentar la longitud de estos campos, MySQL tiene la sentencia ALTER TABLE. Hay varios tipos de datos que podran usarse para representar el sexo en los registros de animales, tal como 'm'y 'f', o 'male' (masculino) y 'female' (femenino). Lo ms simple es usar los caracteres 'm' y 'f'. Es obvio el uso del tipo de dato DATE para las columnas birth y death. Luego de crear una tabla, SHOW TABLES debera producir una salida: mysql> SHOW TABLES; +---------------------+ | Tables in menagerie | +---------------------+ | pet | +---------------------+ Para verificar que la tabla ha sido creada en la forma esperada, utilice la sentencia DESCRIBE: mysql> DESCRIBE pet; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | owner | varchar(20) | YES | | NULL | | | species | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | death | date | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ DESCRIBE puede ser utilizada en cualquier momento, por ejemplo, si olvida los nombres o el tipo de dato de las columnas de la tabla.
3.3.3. Cargar datos en una tabla Luego de crear la tabla, necesitar completarla con datos. Para esto, le sern de utilidad las sentencias LOAD DATA e INSERT. Suponga que los registros de mascotas fueran como los mostrados a continuacin. (Observe que MySQL espera que las fechas tengan el formato 'AAAA-MM-DD', esto puede ser diferente a lo que acostumbra utilizar). name owner species sex birth death Fluffy Harold cat f 1993-02-04 Claws Gwen cat m 1994-03-17 Buffy Harold dog f 1989-05-13 Fang Benny dog m 1990-08-27 Bowser Diane dog m 1979-08-31 1995-07-29 Chirpy Gwen bird f 1998-09-11 Whistler Gwen bird 1997-12-09 Slim Benny snake m 1996-04-29 Dado que est comenzando con una tabla vaca, una forma fcil de completarla es creando un fichero de texto que contenga una lnea por cada animal, y luego insertando el contenido del fichero en la tabla mediante una sola sentencia. Para esto, debera crear un fichero de texto llamado pet.txt, conteniendo un registro por linea, con cada valor separado por un carcter de tabulacin, y dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE TABLE. Para valores ausentes (como sexo desconocido o fechas de muerte de animales con vida), puede usar valores NULL. Para representar estos valores en el archivo de texto, utilice \N (barra diagonal y N mayscula). Por ejemplo, el registro de Whistler se vera del modo siguiente (el espacio en blanco entre cada valor es un solo carcter de tabulacin): name owner species sex birth death Whistler Gwen bird \N 1997-12-09 \N Para cargar el fichero pet.txt dentro de la tabla pet, utilice este comando: mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet; Si trabaja en Windows, con un editor que emplea \r\n (retorno de carro + nueva linea) como caracteres de fin de lnea, debera usar: mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet -> LINES TERMINATED BY '\r\n'; (En un ordenador Apple bajo OS X, probablemente quiera utilizar LINES TERMINATED BY '\r'.) Opcionalmente puede especificar en la sentencia LOAD DATA los caracteres que actuarn como separador de campo y fin de lnea, pero los valores por defecto son tabulacin y nueva lnea. Estos son suficientes para que la sentencia lea correctamente el fichero pet.txt Si ocurre un error al ejecutar la sentencia, probablemente se deba a que su instalacin de MySQL no tiene habilitada por defecto la capacidad de manejar archivos locales. Consulte Seccin 5.5.4, Cuestiones relacionadas con la seguridad y LOAD DATA LOCAL para obtener informacin sobre cmo cambiar esto. Cuando lo que desea es agregar nuevos registros de a uno por vez, la sentencia INSERT resulta de utilidad. De esta sencilla manera, se suministran valores para cada columna, dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE TABLE statement. Suponga que Diane obtiene un nuevo hamster llamado "Puffball". Se podra agregar un nuevo registro, usando la sentencia INSERT de este modo: mysql> INSERT INTO pet -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL); Observe que las cadenas alfanumricas y las fechas son representados como cadenas delimitadas por apstrofos. Tambin, con INSERT, se pueden insertar valores NULL directamente, para indicar un valor ausente. No se debe utilizar \N como se hace con LOAD DATA. A partir de este ejemplo queda demostrado que lleva mucho ms trabajo realizar una carga inicial de registros empleando varias sentencias INSERT que si se hace mediante la sentencia LOAD DATA.
Para extraer informacin La sentencia SELECT es utilizada para traer informacin desde una tabla. La sintaxis general de esta sentencia es: SELECT seleccionar_Esto FROM desde_tabla WHERE condiciones; seleccionar_esto es lo que se quiere ver. Puede ser una lista de columnas, o * para indicar todas las columnas. desde_tablaindica la tabla donde estn los datos a recuperar. La clusula WHERE es opcional. Si est presente, condicionesrepresenta las condiciones que cada registro debe cumplir para retornar como resultado.