You are on page 1of 8

Manual de MySQL (3.23.

49)
Instalacin y configuracin por primera vez en linux:
1) Para activar mysql en redhat 7.3 con el comando ntsys se seala mysqld para activarlo cada vez que se
reinicie linux.
2) Las bases de datos de mysql se crearn en el directorio /var/lib/mysql/ . Cada base de datos es un
directorio diferente y cada tabla es un archivo dentro del directorio las dos bases que se crean cuando se
instala mysql es mysql y test.
3) Se corre el comando mysql_install_db para crear las bases que guardarn los permisos de los usuarios.
4) Con el comando mysqladmin -u root password
administrador de la base de datos Ejemplo:

mi_password se crea un password para el

mysqladmin u root password admin


Admin sera la nueva clave para el administrador de la base de datos
Para cambiar la clave se pondra
mysqladmin -uroot -padmin password nuevaclave
5) Para probar si la conexin esta bien y se puede entrar a la base de datos se pone
mysql -u root p
aqu ahora va ha pedir un password el password en este caso es admin el cual definimos en el paso 4. Para
salir se pone quit.
Instalacin y configuracin por primera vez en windows:
Para instalar mysql en windows se baja el archivo mysql-max-3.23.48-win.zip y se desempaqueta en
cualquier directorio, luego se ejecuta el archivo setup.exe, cuando se instala pedir un directorio en donde
instalar en este caso pondremos c:\internet\mysql.
Ejecutamos la aplicacin c:\internet\mysql\bin\winmysqladmin.exe
Esta aplicacin nos permitir administrar la base de datos. La primera vez que se ejecuta nos va a pedir un
usuario y una clave en este caso vamos a poner root y admin. En la parte inferior derecha de la pantalla
aparecer un semforo con la luz verde encendida esto indica que el servidor est activo, para apagar el
servidor damos un click con el botn derecho sobre el grfico del semforo y aparecer un men,
elegimos la opcin win9x (en una instalacin en windows me) y luego shutdown Both. Esta herramienta
tambin sirve para crear bases de datos en modo grfico.
Para ingresar al modo de comandos y administrar la base de datos se va al directorio:
C:\internet\mysql\bin\mysql u root p
Como password se pone admin, esto har que salga el prompt de mysql:
mysql>
Para salir se pone exit o quit
Las bases de datos se crearn el directorio:
c:\internet\mysql\data

Operaciones Bsicas
Se entra a la base de datos con:
mysql -u root p
y
como clave se pone admin. En la lnea de comandos se pone:
mysql> SELECT VERSION(), CURRENT_DATE();
lo cual mostrara:
+-----------+----------------+
| version() | current_date() |
+-----------+----------------+
| 3.23.49 | 2002-06-06 |
+-----------+----------------+
1 row in set (0.00 sec)
se pueden hacer pequeas operaciones como:
mysql> SELECT SIN(PI()/4), (4+1)*5;
+-------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+-------------+---------+
| 0.707107 |
25 |
+-------------+---------+
1 row in set (0.00 sec)
mysql> select user();
+----------------+
| user()
|
+----------------+
| root@localhost |
+----------------+
1 row in set (0.04 sec)
Para ver las bases de datos existentes se pone:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)
Creacin de usuarios y permisos para las tablas
Una vez creada la base de datos se le puede dar permisos para que solo un usuario determinado pueda
usar dicha base de datos la forma de hacerlo es la siguiente:
mysql u root p se ingresa con el usuario de administrador
grant all on pruebas.* to ua033333@localhost identified by clave
flush privileges;
donde pruebas es la base de datos y ua033333 es el usuario al que se quiere dar acceso y clave la clave
del usuario.
Para ingresar a la base se pone mysql -u ua033333 p y se introduce la clave
Para cambiar de clave se pone

SET PASSWORD FOR 'ua033333@localhost' = PASSWORD( '**********' )


Otra forma de crear usuarios es ingresar con la clave de root a la base de datos y poner las siguientes
sentencias:
use mysql;
insert into user values("localhost", "nombredeusuario", password("clavedeusuario"), "Y", "Y", "Y", "Y",
"Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y");
insert into db values ("localhost", "basededatosconcreta", "nombredeusuario", "Y", "Y", "Y", "Y", "Y",
"Y", "Y", "Y", "Y", "Y");
exit;
Pasos para crear bases de datos
El comando para crear la base de datos es:
mysql> CREATE DATABASE prueba;
esto har que se cree el directorio prueba en /var/lib/mysql/prueba.
Para crear las tablas de la base de datos se pone:
mysql> use prueba;
para elegir la tabla en la que se va ha trabajar
mysql> create table clientes (nombre varchar(20), edad int(2),
-> sueldo float(9,2), memo text);
Tipos posibles de campos
VARCHAR
CHAR
DATE
TIME
DATETIME
TIMESTAMP(N)

Tiene un nmero variable de caracteres el nmero que se pone es el nmero


mximo de caracteres que puede tener este nmero va de 1 a 255
Tiene un nmero fijo de caracteres va de 1 a 255
Tipo fecha (YYYY-MM-DD)-( '1000-01-01' a '9999-12-31')
Tipo hora (HH:MM:SS) (-838:59:59' a '838:59:59)
Tipo fecha y hora (YYYY-MM-DD HH:MM:SS)
Tipo fecha y hora. Se utiliza para generar campos en los cuales
automticamente se guardan la fecha y hora de creacin
o modificacin del registro. Ejemplos de formatos:
TIMESTAMP(14)
TIMESTAMP(12)
TIMESTAMP(10)
TIMESTAMP(8)
TIMESTAMP(6)
TIMESTAMP(4)
TIMESTAMP(2)

YEAR(2 o 4)
INTEGER (INT)
FLOAT (M,D)
DOUBLE(M,D)

YYYYMMDDHHMMSS
YYMMDDHHMMSS
YYMMDDHHMM
YYYYMMDD
YYMMDD
YYMM
YY

Tipo ao (1970 a 2069)


Tipo numrico entero (-2147483648 a 2147483647)
Nmero real de coma flotante M es el nmero y D los decimales
(-3.402823466E+38 a -1.175494351E-38, 0, y
1.175494351E-38 a 3.402823466E+38.)
Nmero real de doble precisin M es el nmero y D los decimales
(- 1.7976931348623157E+308 a -2.2250738585072014E-308, 0, y
2.2250738585072014E-308 a 1.7976931348623157E+308)

BLOB
TEXT

Para grandes textos la longitud mxima es 65535 con este tipo las bsquedas
de texto son sensibles a las maysculas.
Para grandes textos la longitud mxima es 65535 con este tipo las bsquedas
de texto NO son sensibles a las maysculas.

Opciones para los campos


not null
auto_increment
primary key

Key

El valor no puede ser nulo en el campo


automticamente incrementa el nmero del registro anterior
El PRIMARY KEY es un campo que MySQL usa como ndice. Este ndice
puede hacer cosas como:

Hallar rpidamente filas que acierten una clusula WHERE.


Regresar filas de una tabla desde otras tablas cuando se realizan uniones.

Esto definitivamente te va a ayudar a agilizar sus peticiones tambin.

Crea una llave secundaria

Creacin de una tabla con ndices o llaves:


Mysql> create table prueba4 (llave1 int(1) not null, llave2 int(1), primary key(llave1),key(llave2));
Toda llave primaria debe ser de tipo not null para que pueda indexar correctamente. En este ejemplo el
campo llave1 es la llave primaria y el campo llave2 es la llave secundaria.
Creacin de campos para buscar textos en estos:
mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles VALUES
-> (0,'MySQL Tutorial', 'DBMS stands for DataBase ...'),
-> (0,'How To Use MySQL Efficiently', 'After you went through a ...'),
-> (0,'Optimising MySQL','In this tutorial we will show ...'),
-> (0,'1001 MySQL Trick','1. Never run mysqld as root. 2. ...'),
-> (0,'MySQL vs. YourSQL', 'In the following database comparison ...'),
-> (0,'MySQL Security', 'When configured properly, MySQL ...');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM articles
->
WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id | title
| body
|
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase ...
|

+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)
Para ver todas las tablas de la base:
mysql> show tables;
+------------------+
| Tables_in_prueba |
+------------------+
| clientes
|
+------------------+
1 row in set (0.00 sec)
Para ver la estructura de la tabla se pone:
mysql> DESCRIBE clientes;
+--------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| nombre | varchar(20) | YES | | NULL |
|
| edad
| int(2)
| YES | | NULL |
|
| sueldo | float(9,2) | YES | | NULL |
|
| memo | text
| YES | | NULL |
|
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Modificacin de la Estructura de una Tabla
Cambia los atributos de una columna que ya existe
ALTER TABLE [nombre_de_la_tabla] CHANGE [nombre_columna] [nombre_columna opciones_de _columna];
ALTER TABLE clientes CHANGE nombre nombreapellido varchar(10);

Colocar una columna al final de la tabla


ALTER TABLE [nombre_de_la_tabla] ADD [columna_nueva opciones];
ALTER TABLE clientes ADD cedula varchar(10);

Si se desea crear una columna al inicio de una tabla:


ALTER TABLE [nombre_de_la_tabla] ADD [columna_nueva opciones] FIRST;
ALTER TABLE clientes ADD cedula varchar(10) FIRST;

Y si se trata de colocarla despus de una columna dada, es:


ALTER TABLE [nombre_de_la_tabla] ADD [columna_nueva opciones] AFTER [nombre_de_columna];
ALTER TABLE clientes ADD cedula varchar(10) AFTER nombre;

Para eliminarla, se utiliza este comando:


ALTER TABLE [nombre_de_la_tabla] DROP [nombre_columna];
ALTER TABLE clientes DROP cedula;

Para insertar datos a la tabla


Se utiliza la siguiente sentencia:
mysql> INSERT INTO clientes
-> VALUES ('Pablo','30','600',NULL);
Nota: La comilla es obligatorio para el ingreso de datos
Otra forma de ingresar datos es:
mysql> insert into clientes
-> (nombre)
-> values
-> ('pablo');
con esta forma se ingresa el nombre pablo en el campo nombre nicamente

Para insertar datos a la tabla desde un archivo de textos la sentencia es:


mysql> LOAD DATA LOCAL INFILE "datos.txt" INTO TABLE clientes;
el archivo debe tener el siguiente formato:
Pablo 30 600 \N
Juan 20 \N
bueno
El smbolo \N sirve para cuando ese campo no tiene datos. El separador de campos es TAB y el de
registros el fin de lnea LF (o Enter)

Si el archivo de texto tiene separado los campos por medio de comas y a su vez cada campo encerrado
por comillas la sentencia que se utiliza es:
mysql> LOAD DATA INFILE 'datos.txt' INTO TABLE clientes
->
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
->
LINES TERMINATED BY '\n';
Ejemplo de archivo datos.txt
Pabo,30,600,\N
Juan,25,500,\N
Mostrar los datos de una tabla
Para los datos de una tabla se utiliza la sentencia :
SELECT [campos que se quiere mostrar]
FROM [nombre de la tabla de la cual se extraen datos]
WHERE [condiciones para extraer datos]
Ejemplo:
mysql> SELECT * FROM clientes;
+--------+------+--------+------+
| nombre | edad | sueldo | memo |
+--------+------+--------+------+
| pablo | 30 | 600.00 | NULL |
| pablo | NULL | NULL | NULL |
+--------+------+--------+------+
2 rows in set (0.00 sec)
Enviar la consulta a un archivo
mysql> select * from empresas into outfile '/prueba/hola2.txt' fields terminated by '@@'
->
lines terminated by \n;
consulta con condiciones:
mysql> SELECT * FROM clientes WHERE nombre="pablo" and sueldo="500";
mysql> SELECT * FROM clientes WHERE edad >= "30";
mysql> SELECT nombre, edad FROM clientes WHERE edad >= "30";
mysql> SELECT distinct nombre FROM clientes;
distinct sirve para que saque solo los registros nicos no los repetidos en el campo nombre

mysql> SELECT * FROM clientes ORDER BY edad;


para que el resultado se ordene por edad
mysql> SELECT * FROM clientes ORDER BY edad DESC;
para que el resultado se ordene en forma descendente
mysql> SELECT * FROM clientes GROUP BY edad;
mysql> SELECT nombre, sueldo/100 from clientes;
para que muestre la columna sueldo dividido para 100
mysql> select * from clientes where edad is NULL;
mysql> select * from clientes where edad is NOT NULL;
mysql> SELECT * FROM clientes WHERE nombre LIKE "P%";
para buscar nombres que comienzan con P
mysql> SELECT * FROM clientes WHERE nombre LIKE "%P";
para buscar nombres que terminan con P
mysql> SELECT * FROM clientes WHERE nombre LIKE "%P%";
para buscar nombres que tengan P en cualquier posicion
mysql> SELECT * FROM clientes WHERE nombre LIKE "_";
para buscar nombres que tengan un carcter
mysql> SELECT nombre, COUNT(*) FROM clientes
mysql> SELECT DISTINCT nombre FROM clientes saca los nombres sin repetidos
mysql> SELECT * from tabla1 where not exists
(SELECT * from tabla2 where tabla1.codigo = tabla2.codigo); muestra los cdigos de la
tabla1 que no existan en la tabla2

Modificar un Registro
mysql> UPDATE clientes SET sueldo="500" WHERE nombre="pablo";
mysql> UPDATE clientes set sueldo="600" where edad=30;
Borrar todos los registros de la tabla
mysql> DELETE from clientes;
Borrar una Tabla y su estructura
mysql> drop table clientes;
Borrar una base de datos
mysql> drop database datos;
Relaciones entre las Tablas
Se crean dos tablas con un campo que se llama factura de tipo int(1), este va ha ser la llave de las tablas
por la cual se van ha relacionar.Para poder mostrar tablas con datos que las relacionan podemos hacerlo
mediante el siguiente comando select:
mysql> select cabecera.nombre,detalle.remedio from cabecera,detalle where
-> cabecera.factura=1 and detalle.factura=1;
+--------+------------+
| nombre | remedio |
+--------+------------+
| pablo | mejoral |
| pablo | aspirina |

| pablo | vitamina c |
| pablo | cebion |
+--------+------------+
los campos que relacionan estas tablas son el nmero de la factura
Otra forma puede ser:
select cabecera.nombre,detalle.remedio from cabecera,detalle where
-> cabecera.factura=detalle.factura;
esto mostrara todos los campos en orden de relacin.
+--------+------------+
| nombre | remedio |
+--------+------------+
| pablo | mejoral |
| pablo | aspirina |
| pablo | vitamina c |
| pablo | cebion |
| juan | complejo B |
| juan | contrex |
| juan | mentol |
+--------+------------+
7 rows in set (0.00 sec)

You might also like