¡Esta es una revisión vieja del documento!
$ sudo apt-get install mysql-server
Cuando MySQL esté instalado y lo ejecutemos por primera vez este se configurará. Una vez esta tarea se realice deberemos dar el password al root mediante el siguiente comando:
/usr/bin/mysqladmin -u root password 'new-password'
Se aconseja eliminar los usuarios anonimos que vienen por defecto:
DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.db WHERE User=''; FLUSH PRIVILEGES;
mysql, abre el cliente nativo de mysql. Distingue entre el ejecutable con el mismo nombre que lanza el server.mysql -u user -p, entra con el usuario user y pida su password.Recuerda, tras cada comando coloca un ';'
show columns from tablaX;.show tables from dbX;.show table status. - Ver más abajo.SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern' | WHERE expr]
Este comando te muestra las propiedades de una tabla (como por ejemplo el último índice asignado). Para consultar una tabla concreta harías: SHOW TABLE STATUS LIKE tabla_concreta.
Las propiedades que te muestra son:
Desde un archivo .sql a la DB:
$ mysql -u <user> -p <database> <file>
Desde la DB a un .sql:
mysqldump -user -p basedatos > basedatos.sql
SET PASSWORD FOR usuario@dominio=PASSWORD('nuevo_password')SET PASSWORD FOR root@localhost=PASSWORD('password');
DELETE FROM mysql.user WHERE User='alfred'; DELETE FROM mysql.db WHERE User='alfred'; FLUSH PRIVILEGES;
FLUSH PRIVILEGES activa los cambios de privilegios.
GRANT privilegios ON donde TO usuario IDENTIFIED BY 'password', siendo…database.table.GRANT SELECT ON *.* TO tina IDENTIFIED BY 'muller'; GRANT ALL ON db1.* TO tina IDENTIFIED BY 'muller';
Si el usuario sólo puede conectarse desde un solo ordenador el nombre de usuario lo indicariamos como: usuario@identificador_maquina. Si no se indica el identificador de la máquina (que podrá ser una ip o el nombre de la máquina) el usuario tendrá acceso desde fuera de la red y en el campo Host de la tabla mysql.user el valor será %.
Al ejecutar mysql, el cliente, si no especificamos nombre de usuario, entraremos como el usuario en el que estemos logueados en la máquina.
Sqlite es una base de datos dentro de un fichero, es muy manejable y ligera, usa sql standard pero, como imaginarás no es muy potente. Actualmente existen dos versiones posibles la sqlite 2 y la 3, para crear\usar una base de datos en UNIX (a parte de, evidentemente, tener instalados los paquetes) sólo tendremos que usar los comandos que la definenen seguidos del nombre de la base de datos:
sqlite myDb.db sqlite3 mySecondDb.db
Ahora podemos lanzar comandos como .tables o .quit, que describen las tablas existentes o salen de la base de datos respectivamente, o lanzar comandos sql:
CREATE TABLE prueba (id INTEGER);
Para recoger el último identificador generado para un registro insertado utilizaremos el comando:
SELECT last_insert_rowid();
Para insertar una fecha:
UPDATE files SET created = '2029-11-06' WHERE id=1;
Para crear una tabla con identificador con autoincremento:
CREATE TABLE t1(a INTEGER PRIMARY KEY, b INTEGER);
CREATE TABLE t1( t TEXT, -- text affinity by rule 2 nu NUMERIC, -- numeric affinity by rule 5 i INTEGER, -- integer affinity by rule 1 r REAL, -- real affinity by rule 4 no BLOB -- no affinity by rule 3 ); -- Values stored as TEXT, INTEGER, INTEGER, REAL, TEXT. INSERT INTO t1 VALUES('500.0', '500.0', '500.0', '500.0', '500.0'); SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1; text|INTEGER|INTEGER|REAL|text -- Values stored as TEXT, INTEGER, INTEGER, REAL, REAL. DELETE FROM t1; INSERT INTO t1 VALUES(500.0, 500.0, 500.0, 500.0, 500.0); SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1; text|INTEGER|INTEGER|REAL|REAL -- Values stored as TEXT, INTEGER, INTEGER, REAL, INTEGER. DELETE FROM t1; INSERT INTO t1 VALUES(500, 500, 500, 500, 500); SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1; text|INTEGER|INTEGER|REAL|INTEGER -- BLOBs are always stored as BLOBs regardless of column affinity. DELETE FROM t1; INSERT INTO t1 VALUES(x'0500', x'0500', x'0500', x'0500', x'0500'); SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1; BLOB|BLOB|BLOB|BLOB|BLOB -- NULLs are also unaffected by affinity DELETE FROM t1; INSERT INTO t1 VALUES(NULL,NULL,NULL,NULL,NULL); SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1; NULL|NULL|NULL|NULL|NULL
Equivalencias:
| INT, INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT, UNSIGNED BIG INT, INT2, INT8 | INTEGER | 1 |
| CHARACTER(20), VARCHAR(255), VARYING CHARACTER(255), NCHAR(55), NATIVE CHARACTER(70), NVARCHAR(100), TEXT, CLOB | TEXT | 2 |
| BLOB, no datatype specified | NONE | 3 |
| REAL, DOUBLE, DOUBLE PRECISION, FLOAT | REAL | 4 |
| NUMERIC, DECIMAL(10,5), BOOLEAN, DATE, DATETIME | NUMERIC | 5 |