Вы находитесь на странице: 1из 12

INDICE

Contenido

CREAR CONTRASEÑA PARA EL USUARIO root ..................................................................................... 2

ADMINISTRAR BD en MyMa CON UN USUARIO QUE NO SEA root ..................................................... 3

MOSTRAR LOS REGISTROS EN OTRO ORDEN DISTINTO AL DISEÑO DE CAMPOS DE LA TABLA.......... 6

ME EQUIVOQUÉ AL CREAR UN REGISTRO Y NECESITO MODIFICARLO ............................................... 7

¿PUEDO AÑADIR UN INDICE A UNA TABLA YA CREADA? .................................................................... 8

MOSTRAR REGISTROS ESPECÍFICOS .................................................................................................... 8

¿Y SI QUIERO ORDENAR LA SALIDA UTILIZANDO UN CAMPO QUE NO ES INDICE? ............................ 9

¿SE PUEDEN COMETER ERRORES MIENTRAS SE APRENDE? ............................................................... 9

A CUÁNTOS PACIEROS SU NOMBRE LES EMPIEZA CON ‘R’? ............................................................... 9

¿CUÁNTOS PACIEROS SON APELLIDO ‘Lopez’? ................................................................................... 9

¿SE PUEDE MODIFICAR EL TIPO DE TABLA DESPUÉS DE SU USO NORMAL? ...................................... 9

¿QUÉ SON LOS OPERADORES? (lógica booleana) ............................................................................. 10

QUIERO TRABAJAR EN MODO DE LECTURA O ESCRITURA SOLAMENTE........................................... 11

RECUPERAR EL CÓDIGO SQL UTILIZADO PARA CREAR UNA TABLA .................................................. 11

JOINS (inner join: identificar combinaciones de dos campos en tablas distintas) ............................ 11

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 1


Notas importantes (es buena idea imprimir esto) // Preguntas más frecuentes… con respuestas.

CREAR CONTRASEÑA PARA EL USUARIO root


Pancracio Alberto acaba de bajar de Internet la distribución de MariaDB para Windows 7 Starter, y
no sabe qué más hacer, y le pregunta a Chimpan Dolfo cómo se instala eso. Chimpan le dice que
no usa MariaDB con Windows, pero que va a investigar cómo se hace. Un par de días después le
envía un email con la explicación y le dice: Hola Pancry… hay dos paquetes que puedes bajar de
Internet, uno para instalar y el otro para descomprimir. Te recomiendo el paquete que se instala, y
que lo instales en C:\MariaDB

Como el único usuario que trae por default MariaDB es root y sin contraseña, debes tener cuidado
con tu vecino Kraquerto Pérez que está siempre listo para romper toda instalación posible, y
postear en el foro de Latyn Jaquers su nueva hazaña sobre ti. “Bueno, te tienes que anticipar a
Kraquerto”, le dice Chimpan. Haz lo siguiente en la línea de comandos cuando vas a ejecutar
MyMa por primera vez.

1 – Instala el servicio de base de datos MySQL (igual para MariaDB)

“C:\MariaDB\bin\mysqld.exe” -- install

2 – Ejecuta el cliente mysql por vez primera

mysql –u root mysql

lo que hace la línea anterior es lo siguiente: -u root es el usuario root con el que vas a entrar, y
mysql es el nombre de la base de datos que quieres abrir directamente. MyMa ya trae información
específica sin protección sobre el servidor en la BD mysql, y Kraquerto lo sabe muy bien. Una vez
dentro del entorno creado por mysql.exe ejecutamos las siguientes instrucciones.

SET PASSWORD=PASSWORD(‘anaconda’);

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 2


Si tratas de entrar ahora con root sin usar la contraseña, no te va a dejar entrar y te va a devolver
el siguiente mensaje de error:

C:\MariaDB\bin>mysql -u root mysql

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Esta es la forma correcta a continuación donde te va a solicitar la contraseña:

Kraquerto va a pasar un muy mal rato tratando de reventar tu base de datos… a menos que
ingrese a tu sistema por algún hueco del Shell y pueda ver el historial de tus comandos, pero no
verá allí lo que escribiste dentro del entorno de mysql.exe, así que… va duro, a menos que le digas
que la clave es un animal que se arrastra y que te aprieta hasta matar… y le tomará 15 minutos.

ADMINISTRAR BD en MyMa CON UN USUARIO QUE NO SEA root


Esto es muy importante, no se debe manejar ningún Sistema (incluido el OS conocido como
Windows), en modo super usuario. Kraquerto puede estar cerca y ver lo que haces o cómo lo
haces, y él tiene toda la paciencia del mundo para esperar el momento de postear en Internet su
hazaña sobre ti y tu BD. Pero si le haces la vida difícil, se empeñará más en ti, enamorará a tu
hermana, a tu tía, a tu mamá, usará perfume, se volverá lindo, cuidará a tu perro o al perico, y
hará lo que sea para romper tu seguridad.

Imagina que Pancracio Alberto acaba de crear una base de datos llamada “macarrones” y que
aprendió que no quiere utilizar al usuario root para administrar la BD. Entonces debe crear otro
usuario para ese fin. Ese usuario de MyMa no tiene nada que ver con los usuarios del SO Linux o el
SO Windows. Vamos a crear un usuario llamado ‘fabulosito’ con la clave ‘password99’ y acceso a
total a la base de datos ‘macarrones’ con el siguiente ejemplo de uso de GRANT:

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 3


Ahora, ya se puede salir del entorno de mysql.exe y volver a ingresar pero con el usuario
‘fabulosito’

Ahora, el usuario ‘fabulosito’ se conecta a la BD ‘macarrones’ y puede administrar sin necesidad de


usar a root. Qué bueno. Ahora Pancracio Alberto puede con ‘fabulosito’ crear una tabla de tipo
InnoDB llamada ‘fiesta’ con la siguiente estructura:

Tabla: fiestas
Columnas: Nombre_campo Tipo Tamaño Atributos
Paciero Cadena 30 no nulo
Celular Cadena 15 no nulo
Email Cadena 35 no nulo
Clase_paciero Cadena 14 no nulo, enum
id Entero + no nulo, incremento, llave

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 4


Pancracio Alberto va a probar si es cierto que el súper user le dio todos los poderes interestelares
sobre la BD ‘macarrones’ porque aún no lo cree.

Pancracio Alberto ha comenzado a creer, y en unos dos años será todo un Jedi si le dedica 30 mins
diarios a MyMa, pero si le dedica más tiempo por día llegará a ser un Jedi mucho antes de ese
tiempo y no le preguntará ya nada a Kraquerto ni a Chimpan Dolfo. Está ansioso por añadir datos
para que Kraquerto lo sepa, pues tiene pensado hasta colocar la BD en un formulario en Internet
para que Kraquerto y otros amigos lo ayuden a anotar a los amigos y amigas que irán a su fiesta.

MariaDB [macarrones]> insert into fiestas


-> set paciero='Rodolfo Alejandro Caicedo',
-> celular='6652-9352',
-> email='rodcaicedo@gmail.com',
-> clase_paciero=3;

Query OK, 1 row affected (0.06 sec)

En el INSERT anterior, Pancry no incluyó el campo ‘id’ porque la base de datos lo crea en el registro
e incrementa ‘automágicamente’ cada vez. En el campo ‘clase_paciero’ al colocar el valor 3, no se
almacena el número 3, sino el valor que se ocupa del ENUM en la posición 3, contando desde 1.

Ahora Pancry añade un segundo registro y luego muestra todo lo ingresado en la pantalla:

MariaDB [macarrones]> insert into fiestas


-> set paciero='Kraquerto Lopez',
-> celular='6969-0666',
-> email='bet_krk@jotmeil.com',
-> clase_paciero=1;

Query OK, 1 row affected (0.26 sec)

MariaDB [macarrones]>select * from fiestas;

El asterisco (*) es un comodín que indica se seleccionan todos los campos.

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 5


Ahora Pancracio Alberto es feliz y se lo dice a su novia, le escribe un poema y lo postea en feisbuc.
Pero la novia que no es boba le pregunta, ¿Y si quiero mostrar los datos en un orden de campos
diferente? Pancracio Alberto se rasca la cabeza…

MOSTRAR LOS REGISTROS EN OTRO ORDEN DISTINTO AL DISEÑO DE CAMPOS DE LA TABLA


De veras que a veces queremos hacer esto, y hasta pensamos en alterar la estructura de la tabla,
pero no es necesario, vean el ejemplo:

Se pueden colocar todos los campos o seleccionar sólo algunos campos en el orden en que lo
deseamos.

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 6


ME EQUIVOQUÉ AL CREAR UN REGISTRO Y NECESITO MODIFICARLO
A veces al crear registros podemos cometer errores, o la información puede haber cambiado lo
que hace necesario una actualización a un campo específico en determinado registro. Como la
tabla ‘fiestas’ tiene el campo ‘id’ que es llave y no se puede repetir, entonces es fácil realizar la
actualización. Pancracio Alberto quiere modificar el registro de su paciero Rodolfo cuyo ‘id’ es 1,
porque no es un ‘Hartón’ sino un ‘Cooperador’ y no quiere una F para el semestre (pues además es
su profesor de MyMa). Para ello utiliza la instrucción UPDATE.

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 7


¿PUEDO AÑADIR UN INDICE A UNA TABLA YA CREADA?
Sí. Alterando la tabla. En este caso, no se afectan los datos pre existentes. Vamos a crear un índice
y le llamaremos ‘index_id’ para indizar con el campo ‘id’

ALTER TABLE macarrones.fiestas


ADD INDEX index_id (id);

MOSTRAR REGISTROS ESPECÍFICOS


Se puede filtrar la salida para que muestre un grupo específico de registros, basado en un criterio
que la modifique. Pancracio Alberto necesita saber cuáles son sus pacieros gorreros.

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 8


¿Y SI QUIERO ORDENAR LA SALIDA UTILIZANDO UN CAMPO QUE NO ES INDICE?
Entonces uso la cláusula modificadora ORDER BY. En una tabla con muchos datos (miles de
registros) esto puede resultar algo lento dependiendo de la complejidad del query. Si vas a hacer
eso todos los días, mejor crea un índice para esa situación.

¿SE PUEDEN COMETER ERRORES MIENTRAS SE APRENDE?


Sí. Todos cometen errores mientras se aprende. Hasta Monty…

A CUÁNTOS PACIEROS SU NOMBRE LES EMPIEZA CON ‘R’?


Select * from fiestas Where paciero like ‘R%’ ;

¿CUÁNTOS PACIEROS SON APELLIDO ‘Lopez’?


Select * from fiestas Where paciero like ‘%Lopez’ ;

¿SE PUEDE MODIFICAR EL TIPO DE TABLA DESPUÉS DE SU USO NORMAL?


Sí. Las tablas creadas sin el modificador ENGINE son creadas en tipo MyISAM por default. Las
tablas MyISAM se bloquean por completo cuando se ejecutan operaciones de inserción sobre
ellas. InnoDB utiliza funciones de bloqueo diseñadas para afectar solamente al registro específico,
y se pueda seguir trabajando a la vez sobre otros registros. Para convertir una tabla a otro tipo de
tabla después de creada, se ejecuta lo siguiente:

ALTER TABLE Mi_Tabla_de_tipo_x TYPE = InnoDB;

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 9


¿QUÉ SON LOS OPERADORES? (lógica booleana)
Creo que se les debería llamar “comparadores”, pero ya se llaman “operadores”, así que
dejémoslo así. Los operadores más comunes con AND, OR y NOT. También están sus primos <, >, y
= que los ayudan y complementan. Hasta ahora hemos utilizado ‘=’ y a LIKE.

Toda sentencia que lleve AND debe ser cierta en cada miembro para que sea verdadera toda, es
decir, cada miembro comparado debe ser cierto. Si un solo miembro de la comparación resulta
falso, toda la operación se considera falso, aunque todos los demás miembros restantes fueran
verdaderos.

Pancracio Alberto tiene 21 años. Con este solo hecho y algunas cosas que conocemos de él ya
podemos crear algunas conclusiones (he aquí la importancia de la lectura comprensiva):

Nombre: Pancracio Alberto


Apellido: desconocido
Edad: 21 años
Año de nacimiento: 1989
Sexo: masculino
¿Novia?: Sí
¿Estudioso?: Algo
Le gustan las fiestas

Si Pancry > 18 AND Birth_year = 1989 AND Sex = ‘M’


entonces
hacer tal cosa porque todos los miembros comparado son ciertos

Si Pancry < 20 AND Birth_year = 1989 AND Sex = ‘M’


entonces
hacer tal cosa si todo es cierto
de otro modo
hacer esta otra cosa si algún miembro no fuera cierto

En el primer IF “la cosa” que se va a hacer siempre se realiza porque todo es cierto… a menos que
cambie de sexo.

En el segundo IF “la cosa” que se quiere hacer no resulta a la primera porque algo la hace falso; el
primer miembro, por eso, se ejecutará siempre la segunda acción, pues algo falso hizo que todo lo
demás aunque cierto, ya no fuera verdadero.

En los casos de OR con que algún miembro cualquiera sea cierto, es suficiente para que toda la
sentencia de comparación sea verdadera. Eso quiere decir que Pancracio Alberto puede construir
“Tablas de la verdad” con todo lo que sabe de algo. Estas tablas son una táctica útil para tomar
decisiones reales.

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 10


QUIERO TRABAJAR EN MODO DE LECTURA O ESCRITURA SOLAMENTE
LOCK TABLE fiestas READ;

Para el desbloqueo:

UNLOCK TABLES;

Bloquear varias tablas en modo lectura:

LOCK TABLE fiestas READ, aportes READ;

MyMa bloquea por default (en InnoDB), sólo en el registro que se tiene abierto. MyISAM bloquea
toda la tabla en uso. Para bloquear la tabla de modo exclusivo y evitar que Kraquerto inserte o
duplique también, usa la siguiente instrucción:

LOCK TABLE fiestas WRITE;

Cualquier otro usuario deberá esperar hasta que se libere el bloqueo para poder escribir o leer de
las tablas bloqueadas, porque los bloqueos de escritura tienen prioridad sobre los de lectura.

RECUPERAR EL CÓDIGO SQL UTILIZADO PARA CREAR UNA TABLA


Luego de usar una tabla por algún tiempo, y haberla alterado una o más veces, puede ser que
desees ver por curiosidad el código SQL utilizado para crear esa tabla nuevamente.

SHOW CREATE TABLE fiestas;  Podrás ver el código, pero con alguna basurita

SHOW CREATE TABLE fiestas\G  Ahora se ve más limpio y mejor

JOINS (inner join: identificar combinaciones de dos campos en tablas distintas)


Hasta ahora, Pancracio Alberto ha trabajado con BD de una sola tabla a la vez. Pero esto alguna
vez tiene que cambiar, y más pronto de lo que él cree. Como no todas las preguntas pueden ser
contestadas utilizando una sola tabla, se hace necesaria una estructuración que permita este
Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 11
comportamiento, es decir, una operación sofisticada que produce resultados a través de la
combinación (joining) de información de una tabla con la información de otra tabla. En MyMa se
pueden combinar hasta 61 tablas. Esto se debe hacer con especial amor y cuidado para que no
suframos posteriormente. Lo importante inicialmente es crear las tablas con formato InnoDB.

Muchas veces Pancracio Alberto usará un nombre de campo o columna que estará repetido en
más de una tabla. Por tal razón será necesario utilizar calificadores y alias para resolver esta
ambigüedad. Desde un principio les mencioné que es más “smart” utilizar una semántica de
nombres de campos que describan su utilización, especialmente en tablas diferentes. Por ejemplo
la tabla ‘nombres’ y la tabla ‘pagos’ pueden tener repetido el campo ‘id’. ¿Qué harías si tienes 25
tablas que repiten un mismo nombre de campo? ¿Qué le preguntarías a Kraquerto? Ahora
veremos qué hacer.

Pancracio Alberto puede crear una nueva tabla que le informe qué personas han realizado pagos
para cooperar con su fiesta. Todos sabemos que los Gorreros y los Limpios nunca aportan para las
fiestas, sino, dejarían de ser Gorreros y Limpios y habría que hacer un UPDATE al registro
correspondiente. Pancry puede saber cuánto ha aportado cada uno y cuál es el total global de los
aportes.

Prof. Rodolfo Caicedo IV – Proyecto MariaDB – MySQL (MyMa) / UTP Página 12

Вам также может понравиться